Discord机器人添加Slash Commands失败求助:@bot.tree.command无效
Discord Slash Commands 不显示的排查与解决
1. 补全命令定义的完整结构
你提供的@bot.tree.command仅写了装饰器,缺少核心的命令实现函数,未完成的命令无法被正常注册。正确写法示例:
@bot.tree.command(name="test", description="testing purposes only") async def test(interaction: discord.Interaction): await interaction.response.send_message("测试命令已生效!")
2. 修正同步命令的细节问题
- 替换代码中的
user id占位符为你真实的数字用户ID,否则权限判断会失效,同步逻辑无法执行。 - 优先使用服务器定向同步,避免全局同步的延迟(全局同步最长可能需要1小时生效),修改同步代码:
# 示例:在bsync命令中指定服务器同步 await bot.tree.sync(guild=discord.Object(id=你的服务器数字ID)) # tsync命令同理修改 await tree.sync(guild=discord.Object(id=你的服务器数字ID)) - 确保
tree是bot.tree的引用,若未提前定义tree = bot.tree,第二个同步命令的装饰器需改为@bot.tree.command,否则该同步命令本身都无法注册。
3. 确认机器人权限与邀请链接
- 检查机器人在目标服务器的权限:进入服务器设置→机器人,确认勾选
applications.commands权限。 - 若机器人是新邀请的,邀请链接必须包含
scope=bot+applications.commands参数,否则无法在服务器创建Slash命令。
4. 清理Discord客户端缓存
Discord客户端可能缓存旧命令列表,尝试以下操作:
- 退出并重新登录Discord
- 输入
/后点击右下角的命令列表刷新按钮 - 切换至其他服务器再切回当前服务器
内容的提问来源于stack exchange,提问作者AQ2L
相关产品推荐
相关产品推荐

