You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除dslash与nextcord开发的Discord机器人已注册的斜杠命令

dslash注册斜杠命令的删除方案

Discord斜杠命令一旦注册成功后,不会随代码中对应函数的删除/改名自动消失,必须主动调用接口删除,你可以通过以下两种方式实现:

方法一:手动指定删除目标命令

在你现有代码的on_ready事件中加入删除逻辑,运行一次即可完成删除,确认删除成功后可以移除这段逻辑。

删除单服务器命令

如果你的/rps是指定了服务器ID注册的测试命令,用以下代码,替换为你自己的服务器ID即可:

@client.event
async def on_ready():
    # 替换为目标服务器的数字ID
    target_guild_id = 你的服务器ID
    # 遍历获取该服务器下所有已注册命令
    for cmd in await client.get_all_commands(guild_id=target_guild_id):
        if cmd.name == "rps":
            await client.delete_command(command_id=cmd.id, guild_id=target_guild_id)
            print("已成功删除服务器端/rps命令")
    print(f'Running')

单服务器命令删除后即时生效,刷新Discord界面就能看到命令消失。

删除全局命令

如果你的/rps是没有指定服务器ID的全局注册命令,用以下代码:

@client.event
async def on_ready():
    # 遍历获取所有全局注册命令
    for cmd in await client.get_all_commands():
        if cmd.name == "rps":
            await client.delete_command(command_id=cmd.id)
            print("已成功删除全局/rps命令")
    print(f'Running')

全局命令删除后最多需要等待1小时才会同步到所有Discord服务器。

方法二:开启自动清理未知命令

如果你已经把代码中rps对应的命令函数删掉了,可以直接在初始化CommandClient时开启自动清理配置,启动后dslash会自动对比已注册命令和代码中现存的命令,自动删掉所有代码中不存在的冗余命令:

# 新增remove_unknown_commands=True参数
client = dslash.CommandClient(remove_unknown_commands=True)

这个配置可以长期开启,后续每次启动机器人都会自动同步命令,不需要再手动写删除逻辑。

注意:操作前确认你的机器人已经被授予applications.commands权限,否则会删除失败。

内容的提问来源于stack exchange,提问作者Xantium

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:06:03