Discord bot获取外部animated emoji用作reaction报Unknown Emoji错误求助
错误原因
get_emoji()方法仅支持传入整数类型的emoji ID作为参数,你传入CDN链接的写法完全不符合要求,调用后只会返回None,后续传入add_reaction()自然会触发报错。- 核心限制:Discord API明确规定,自定义表情(包括动图表情)要用作消息反应时,使用的机器人必须是该表情所属服务器的成员;如果机器人未加入表情归属的服务器,无论你用ID还是
<a:name:id>格式的表情代码调用,都会返回Unknown Emoji错误。
你之前可以通过链接发送表情,本质是发送CDN图片链接,和调用表情实体是完全不同的接口逻辑,不受该规则限制。
修复步骤
如果你要正常使用该表情作为反应,按以下流程操作:
- 先将你的机器人邀请到该动图表情所属的Discord服务器
- 提取表情链接中的数字ID,你给出的链接中
819465471786221570即为对应表情ID - 修正后的代码如下:
if message.channel.id == 852947148310839303: # 传入整数格式的表情ID获取表情对象 emoji = bot.get_emoji(819465471786221570) # 增加非空判断,避免表情不存在时触发报错 if emoji: await message.add_reaction(emoji) return
替代方案
如果无法将机器人加入表情所属服务器,可以将该动图表情下载后,上传到你自己的机器人已加入的服务器作为自定义表情,替换为新的表情ID调用即可。
内容的提问来源于stack exchange,提问作者john meek
相关产品推荐
相关产品推荐

