Discord斜杠命令如何实现类Giphy Bot的内容匹配预览功能
Discord斜杠命令动态匹配选项实现方案
你参考的Giphy Bot输入时实时更新匹配选项的效果,基于Discord官方提供的*斜杠命令自动补全(Autocomplete)*能力实现,不需要手动修改命令的静态选项配置,核心实现流程如下:
- 注册命令时开启参数自动补全开关:创建或更新斜杠命令配置时,给需要动态展示选项的参数设置
autocomplete: true。注意开启该属性后,不能再给这个参数配置静态的choices列表,否则自动补全逻辑不会生效。 - 定向监听自动补全交互:在
interactionCreate事件回调中,判断交互类型为ApplicationCommandAutocomplete时再进入处理逻辑,不需要响应所有类型的交互事件。 - 匹配内容后返回结果:通过交互对象的
options.getFocused()方法拿到用户当前在该参数输入框中已输入的字符串,自行完成关键词匹配(支持本地检索、调用第三方接口检索两种方式),筛选出最多25条最相关的匹配结果,调用interaction.respond()传入结果数组即可。Discord客户端会自动将返回的结果渲染为下拉预览列表,和你看到的Giphy Bot效果完全一致。
注意:自动补全接口单次最多支持返回25条选项,和斜杠命令静态选项的数量上限一致,你只需要根据用户实时输入的关键词返回最匹配的25条结果即可,不需要全量返回所有可选内容。
效果参考:
内容的提问来源于stack exchange,提问作者Seddik Ben Amor
相关产品推荐
相关产品推荐

