Discord机器人被提及触发消息反应功能时报Unknown Emoji错误的原因分析
报错核心原因
出现discord.errors.HTTPException: 400 Bad Request (error code: 10014): Unknown Emoji错误,本质是两个问题:
- 传入reaction接口的emoji格式不被API识别
你写的:thumbsup:是Discord前端聊天框的快捷输入短代码,API层完全不支持解析这种带冒号的纯文本格式。它会把这个字符串当成自定义服务器emoji的标识去校验,找不到对应实体就会直接抛出“未知emoji”的10014错误。 - 代码结构存在硬伤
@client.event是装饰器,后面必须紧跟绑定的事件回调函数定义,你现在直接在装饰器下面写逻辑判断,代码本身根本没法正常运行。
补充说明:discord.py的接口层能识别的emoji格式只有两种,一种是原生Unicode字符,另一种是带ID的自定义emoji标识格式,纯短代码字符串不在官方支持范围内。
可落地的修正方法
- 替换emoji参数:直接传入Thumbsup对应的原生Unicode字符
👍,不要传短代码字符串 - 补全事件回调逻辑,加上机器人自身消息的过滤,避免机器人响应自己发的消息导致无限触发
- 如果需要使用其他内置emoji,统一传对应的Unicode字符即可;如果要使用服务器自定义emoji,需要拿到对应emoji的完整对象或者合法ID再传入接口
修正后的可运行代码参考:
@client.event async def on_message(message): # 过滤所有机器人的消息,避免逻辑死循环 if message.author.bot: return if client.user.mentioned_in(message): await message.channel.send(f'{message.author.mention} Senpai') await message.add_reaction('👍')
内容的提问来源于stack exchange,提问作者Stroe Andrei
相关产品推荐
相关产品推荐

