使用discord_slash库开发的Discord斜杠命令提示交互失败是什么原因
问题原因及修复方案
你遇到的交互失败是几个常见的discord_slash使用错误叠加导致的,具体如下:
- 服务器ID类型错误
你定义的guild_ids内的ID为字符串类型,Discord API要求服务器ID必须为整数,类型不匹配会导致斜杠命令同步失效,触发时找不到对应的处理函数,自然不会执行你绑定的逻辑。 - 组件系统不兼容
你用的是discord.py原生的Button组件,但discord_slash的上下文发送方法不识别原生ui组件,如果你要继续用discord_slash,需要使用它自带的组件构造方法,否则发送组件的步骤会触发报错,直接返回交互失败。 - 包兼容问题
discord_slash已经停止维护多年,和新版discord.py v2.x的兼容问题非常多,哪怕你修复了上述两个问题,后续也可能遇到其他隐性bug。
修复步骤
- 首先修改
guild_ids的格式,将服务器ID改为整数:
# 示例,替换为你实际的服务器ID guild_ids = [123456789012345678]
- 如果你仍要使用
discord_slash,修改组件构造逻辑:
先导入对应工具方法:
from discord_slash.utils.manage_components import create_button, create_actionrow
再替换按钮构造和发送的代码:
buttonList = [create_button(label=i, custom_id=f"poll_opt_{idx}", style=1) for idx, i in enumerate(options)] action_row = create_actionrow(*buttonList) await ctx.send(components=[action_row])
- 更推荐的方案是直接使用discord.py v2.x原生支持的斜杠命令,不需要额外安装第三方包,兼容性和稳定性都远高于废弃的
discord_slash。
另外注意开启sync_commands=True后,首次启动需要等待1-5分钟让命令同步到Discord服务器,刚启动就触发命令也会返回交互失败。
内容的提问来源于stack exchange,提问作者Nathan Wolf
相关产品推荐
相关产品推荐

