使用Hikari+Lightbulb实现消息发送时自动添加表情反应
解决Hikari中
add_reaction的使用错误 错误原因分析
你遇到的问题有两个核心原因:
- 对象引用错误:你调用的
message.add_reaction里的message是监听函数本身,而非事件中的消息对象;同时MessageCreateEvent(或其子类GuildMessageCreateEvent)本身没有add_reaction方法,这个方法属于hikari.Message实例,也就是event.message属性。 - 表情格式错误:
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
相关产品推荐
相关产品推荐

