You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用status=None无法清除Discord Bot状态的技术求助

解决Discord Bot无法清除状态的问题

嘿,我刚好解决过类似的问题!现在Discord.py的API更新后,直接传status=None已经不生效了——而且其实你可能搞混了「在线状态」和「活动状态」的区别,这是很多开发者容易踩的坑。

分两种情况处理:

  • 如果要清除Bot的活动状态(比如之前设置的「Playing XXX」「Streaming XXX」这类显示在头像下方的自定义内容):
    你需要修改activity参数而非status,将其设为None即可恢复默认无活动的状态:

    @bot.command()
    async def statc(ctx):
        print("Works")
        # 清除活动状态
        await bot.change_presence(activity=None)
    
  • 如果要恢复Bot的在线状态(比如之前设为隐身、请勿打扰,现在要切回默认的「在线」):
    Discord的API现在要求status必须传入合法的枚举值,不能再用None。首先导入Status枚举,然后指定目标状态:

    from discord import Status
    
    @bot.command()
    async def statc(ctx):
        print("Works")
        # 恢复在线状态
        await bot.change_presence(status=Status.online)
    

为什么老方法失效?

3年前的讨论帖方法没用,是因为Discord官方调整了API规则:现在status参数必须使用discord.Status中的枚举值(可选值包括onlineidledndinvisible),不再接受None作为有效值。如果你的核心需求是清除自定义活动,调整activity参数才是正确的方向。

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

火山引擎 最新活动