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

使用Hikari+Lightbulb实现消息发送时自动添加表情反应

解决Hikari中add_reaction的使用错误

错误原因分析

你遇到的问题有两个核心原因:

  1. 对象引用错误:你调用的message.add_reaction里的message是监听函数本身,而非事件中的消息对象;同时MessageCreateEvent(或其子类GuildMessageCreateEvent)本身没有add_reaction方法,这个方法属于hikari.Message实例,也就是event.message属性。
  2. 表情格式错误:add_reaction不支持直接传入Discord表情短代码(如:smile:),需要传入Unicode表情字符、表情ID或hikari.Emoji实例。

修正后的代码

import hikari
from lightbulb import BotApp

bot = BotApp(token="你的机器人令牌")

@bot.listen(hikari.MessageCreateEvent)
async def on_message(event):
    # 正确获取消息内容
    print(event.message.content)
    # 方法1:直接使用Unicode表情
    await event.message.add_reaction("😊")
    
    # 方法2:解析表情短代码(适用于默认表情或自定义表情)
    # emoji = hikari.Emoji.parse(":smile:")
    # await event.message.add_reaction(emoji)

bot.run()

关键要点说明

  • 必须通过event.message获取到消息对象后,才能调用add_reaction方法。
  • 若使用自定义表情,需要确保机器人能访问该表情所在的服务器,此时可以用hikari.Emoji(guild_id=服务器ID, id=表情ID, name="表情名")来构造表情对象,再传入add_reaction。
  • 监听函数名建议避免和变量名冲突,比如用on_message代替message,防止出现不必要的引用混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:22:17