Lua+Discordia开发Discord Bot调用reactionAdd报nil值错误解决方法
报错原因
- 调用对象错误:你尝试调用方法的
message.reactions是Discordia用来缓存消息已有表情反应的容器对象,本身不提供添加反应的接口,自然不存在你写的reactionAdd方法。 - 方法名错误:Discordia中给消息添加表情反应的接口是挂载在Message实例上的
addReaction,不存在reactionAdd这个方法,这是直接触发attempt to call method 'reactionAdd' (a nil value)报错的核心原因。 - 表情参数格式不符合要求:你传入的
:seven:是Discord渲染表情用的Markdown语法,不是接口接受的合法参数,就算修正了方法和调用对象,这个参数也无法正常添加对应表情。
修复方案
直接替换原有错误的反应添加逻辑即可,修正后的可运行代码片段:
if message.content == "press f to pay respects" then if message.author.bot then -- 调用主体为消息对象本身,使用正确方法名addReaction,传入7️⃣对应的Unicode字符 message:addReaction("7️⃣") end end
如果需要添加服务器自定义表情,参数传入<:表情名称:表情ID>格式的字符串即可,示例:
-- 替换为实际自定义表情的名称和ID message:addReaction("<:customEmoji:123456789012345678>")
内容的提问来源于stack exchange,提问作者actravaz
相关产品推荐
相关产品推荐

