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

如何移除Discord机器人中旧的Mee6斜杠命令?

解决Mee6遗留斜杠命令无法清除的问题

问题根源

默认的tree.sync()只会同步你新增/修改的命令,不会自动删除已存在的旧命令(比如之前Mee6注册的那些)。要彻底清除旧命令,需要主动删除所有已注册的命令后再同步自己的命令。

解决方案1:完全清理并重新同步

修改你的sync命令,先删除全局和当前服务器的所有旧命令,再同步自定义命令:

@commands.command()
async def sync(self, ctx) -> None:
    # 清除全局所有命令
    global_cmds = await ctx.bot.tree.fetch_commands()
    for cmd in global_cmds:
        await ctx.bot.tree.delete_command(cmd.name)
    
    # 清除当前服务器的所有命令
    guild_cmds = await ctx.bot.tree.fetch_commands(guild=ctx.guild)
    for cmd in guild_cmds:
        await ctx.bot.tree.delete_command(cmd.name, guild=ctx.guild)
    
    # 同步自定义命令
    synced = await ctx.bot.tree.sync()
    await ctx.send(f"已清除所有旧命令,成功同步 {len(synced)} 个自定义命令。")

解决方案2:仅清理指定服务器的命令

如果你只想清除某个特定服务器的Mee6命令(保留其他服务器的),可以修改代码只针对目标服务器操作:

@commands.command()
async def sync_guild(self, ctx) -> None:
    target_guild = ctx.guild
    # 清除目标服务器的所有命令
    guild_cmds = await ctx.bot.tree.fetch_commands(guild=target_guild)
    for cmd in guild_cmds:
        await ctx.bot.tree.delete_command(cmd.name, guild=target_guild)
    
    # 同步当前服务器的自定义命令
    synced = await ctx.bot.tree.sync(guild=target_guild)
    await ctx.send(f"已清除当前服务器的旧命令,同步了 {len(synced)} 个自定义命令。")

修复命令添加时机问题

你的on_ready方法可能存在重复添加命令的风险(Discord.py的on_ready可能在重连时多次触发),建议调整命令添加的时机:

方案A:在Cog初始化时添加命令

class MyCog(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        # 初始化时直接添加命令组
        cmdgroup = groupCommands(name="demo", description="This is just a Demo")
        self.bot.tree.add_command(cmdgroup)
    
    # 你的sync命令...

方案B:给on_ready加执行标记

class MyCog(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        self._ready_triggered = False
    
    async def on_ready(self):
        if not self._ready_triggered:
            cmdgroup = groupCommands(name="demo", description="This is just a Demo")
            self.bot.tree.add_command(cmdgroup)
            self._ready_triggered = True

注意事项

  • 执行清除命令后,所有旧的Mee6斜杠命令会被删除,操作前请确认是否需要保留部分命令。
  • 机器人需要拥有applications.commands的权限(默认已具备,只要是你自己创建的机器人)。
  • 全局命令的删除/同步可能需要几分钟才能在所有服务器生效,服务器级命令则即时生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:02:51