使用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中的枚举值(可选值包括online、idle、dnd、invisible),不再接受None作为有效值。如果你的核心需求是清除自定义活动,调整activity参数才是正确的方向。
内容的提问来源于stack exchange,提问作者Dan A




