Nextcord开发Discord机器人:斜杠命令无法删除问题求助
解决Nextcord机器人斜杠命令残留/不同步问题
一、手动删除单个残留命令
- 开启Discord开发者模式(设置→高级→开发者模式),右键残留命令复制其ID。
- 在机器人代码中执行删除操作:
- 全局命令删除:
await bot.application_commands.delete("命令ID") - 服务器专属命令删除:
guild = bot.get_guild(你的服务器ID) await guild.commands.delete("命令ID")
- 全局命令删除:
二、批量同步(推荐多cogs场景)
直接调用同步命令,Nextcord会自动对比本地已注册命令与Discord端的差异,删除本地不存在的命令:
- 全局命令同步:
注:全局命令同步生效通常需要1-2小时,若之前等待4小时未生效,大概率是未正确触发同步,可重启机器人后重新执行。await bot.sync_application_commands() - 服务器专属命令同步(生效更快,几分钟内完成):
await bot.sync_application_commands(guild_ids=[你的服务器ID])
三、多cogs场景的额外注意事项
- 确认已彻底卸载废弃的cog:调用
bot.remove_cog("CogName"),且机器人重启时不再加载该cog。 - 检查所有cogs中的命令,避免重复注册同一命令(多个cogs中不要用相同的
@app_commands.command(name="xxx"))。
四、强制清空后重新同步(极端情况)
如果上述方法无效,可先清空Discord端所有命令,再重新同步本地命令:
# 清空全局命令 global_cmds = await bot.application_commands.fetch_commands() for cmd in global_cmds: await cmd.delete() # 清空指定服务器命令(按需执行) guild = bot.get_guild(你的服务器ID) guild_cmds = await guild.commands.fetch_commands() for cmd in guild_cmds: await cmd.delete() # 重新同步本地命令 await bot.sync_application_commands()
内容的提问来源于stack exchange,提问作者hellyet
相关产品推荐
相关产品推荐

