Skip to content

Commit 688e8b3

Browse files
committed
policyeval/commands: Allow specifying a target room for kicks
1 parent f92947f commit 688e8b3

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

policyeval/commands.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -292,13 +292,21 @@ var cmdKick = &CommandHandler{
292292
Name: "kick",
293293
Func: func(ce *CommandEvent) {
294294
if len(ce.Args) < 1 {
295-
ce.Reply("Usage: `!kick <user ID> [reason]`")
295+
ce.Reply("Usage: `!kick [--force] [--room <room ID>] <user ID> [reason]`")
296296
return
297297
}
298298
ignoreUserLimit := ce.Args[0] == "--force"
299299
if ignoreUserLimit {
300300
ce.Args = ce.Args[1:]
301301
}
302+
var targetRoom id.RoomID
303+
if ce.Args[0] == "--room" && len(ce.Args) >= 2 {
304+
targetRoom = resolveRoom(ce, ce.Args[1])
305+
if targetRoom == "" {
306+
return
307+
}
308+
ce.Args = ce.Args[2:]
309+
}
302310
pattern := glob.Compile(ce.Args[0])
303311
reason := strings.Join(ce.Args[1:], " ")
304312
users := slices.Collect(ce.Meta.findMatchingUsers(pattern, nil, true))
@@ -309,9 +317,14 @@ var cmdKick = &CommandHandler{
309317
}
310318
for _, userID := range users {
311319
successCount := 0
312-
rooms := ce.Meta.getRoomsUserIsIn(userID)
313-
if len(rooms) == 0 {
314-
continue
320+
var rooms []id.RoomID
321+
if targetRoom != "" {
322+
rooms = ce.Meta.getRoomsUserIsIn(userID)
323+
if len(rooms) == 0 {
324+
continue
325+
}
326+
} else {
327+
rooms = []id.RoomID{targetRoom}
315328
}
316329
roomStrings := make([]string, len(rooms))
317330
for i, room := range rooms {

0 commit comments

Comments
 (0)