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

Discord.py机器人添加消息反应后崩溃,报KeyError:'animated'错误

解决Discord.py机器人添加反应时崩溃的KeyError问题

从你的日志能明确看出,机器人崩溃的直接原因是**KeyError: 'animated'**——旧版本的discord.py代码默认认定所有表情的返回数据里都包含animated字段,但实际上Discord API对普通静态表情的响应中并不存在这个字段,导致机器人处理这类反应时触发键错误。

下面是两种可行的解决办法:

  • 方法一:升级discord.py到最新稳定版本(优先推荐)
    这个bug已经在discord.py的后续版本中被官方修复,只需执行升级命令即可:

    pip install --upgrade discord.py
    

    升级完成后,库会自动适配静态表情没有animated字段的情况,彻底避免这类KeyError。

  • 方法二:临时修改现有discord.py代码(仅用于无法升级的特殊场景)
    如果受环境限制无法升级库,可以手动修改discord/state.py文件里的parse_message_reaction_add方法:
    找到这行代码:

    emoji = PartialEmoji.with_state(self, animated=emoji_data['animated'], id=emoji_id, name=emoji_data['name'])
    

    替换为:

    emoji = PartialEmoji.with_state(self, animated=emoji_data.get('animated', False), id=emoji_id, name=emoji_data['name'])
    

    用dict.get()方法获取animated字段,当字段不存在时默认使用False,就能避免触发KeyError。不过这种修改会随着库的重新安装失效,所以还是优先选择升级方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:43:39