Skip to content

Commit 529272a

Browse files
authored
cmdroute: Fix Autocompleter handling (#423)
* handle group with cmdroute/autocompleter * handle autocompleter: find all options
1 parent 5089b62 commit 529272a

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

api/cmdroute/router.go

+26-3
Original file line numberDiff line numberDiff line change
@@ -316,18 +316,42 @@ type autocompleterData struct {
316316
data discord.AutocompleteOption
317317
}
318318

319+
// findAutocompleter finds the autocomplete handler for the given option name.
320+
// It checks the current router and its groups.
319321
func (r *Router) findAutocompleter(ev *discord.InteractionEvent, data discord.AutocompleteOption) (autocompleterData, bool) {
322+
found, ok := r.findAutocompleterOnce(ev, data)
323+
if ok {
324+
return found, true
325+
}
326+
327+
for _, sub := range r.groups {
328+
found, ok = sub.findAutocompleterOnce(ev, data)
329+
if ok {
330+
return found, true
331+
}
332+
}
333+
334+
return autocompleterData{}, false
335+
}
336+
337+
// findAutocompleter finds the autocomplete handler for the given option name.
338+
// It only checks the current router and not its groups.
339+
func (r *Router) findAutocompleterOnce(ev *discord.InteractionEvent, data discord.AutocompleteOption) (autocompleterData, bool) {
320340
node, ok := r.nodes[data.Name]
321341
if !ok {
322342
return autocompleterData{}, false
323343
}
324-
325344
switch node := node.(type) {
326345
case routeNodeSub:
327346
if len(data.Options) != 1 || data.Type != discord.SubcommandGroupOptionType {
328347
break
329348
}
330-
return node.findAutocompleter(ev, data.Options[0])
349+
for _, option := range data.Options {
350+
found, ok := node.findAutocompleter(ev, option)
351+
if ok {
352+
return found, true
353+
}
354+
}
331355
case routeNodeCommand:
332356
if node.autocomplete == nil {
333357
break
@@ -341,7 +365,6 @@ func (r *Router) findAutocompleter(ev *discord.InteractionEvent, data discord.Au
341365
data: data,
342366
}, true
343367
}
344-
345368
return autocompleterData{}, false
346369
}
347370

0 commit comments

Comments
 (0)