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

使用Hikari框架实现Discord消息自动反应时遇BadRequestError求助

问题解决:Discord机器人添加反应失败的修复方案

错误原因分析

  1. 消息参数错误:你调用bot.rest.fetch_messages(channel)得到的是MessageIterator消息迭代器,并非触发当前事件的目标消息,传给add_reaction的不是合法的消息雪花ID,导致API返回400格式错误。
  2. 表情格式错误:add_reaction不支持:skull:这种冒号格式的字符串,需要传入Unicode表情字符或合法的表情对象。

修正后的代码

async def benskull(event: hikari.GuildMessageCreateEvent):
    # 排除机器人自身消息,避免循环触发
    if event.is_bot:
        return
    # 替换为目标用户的ID
    if event.author_id == 123456789012345678:
        # 直接使用事件自带的消息对象,无需额外查询
        await event.message.add_reaction("\N{SKULL}")

关键修改点

  • 直接调用event.message获取触发事件的消息,这是GuildMessageCreateEvent内置属性,无需额外调用fetch_messages。
  • 用Unicode字符"\N{SKULL}"对应💀替代:skull:,也可以直接写表情字符"💀"。
  • 增加event.is_bot判断,避免机器人对自身消息添加反应,防止无效循环。

自定义表情使用说明

如果需要添加自定义表情,需传入表情ID或hikari的Emoji对象,示例如下:

# 替换为你的自定义表情ID
await event.message.add_reaction(hikari.Emoji(id=987654321098765432))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:40:34