我想说我是法国人,对此我深表歉意。
我尝试用node.js编写一个不和谐的bot,但是我对messageReactionAdd遇到问题。我现在不明白为什么当我对表情符号做出反应时他什么也不做。
我的代码:
bot.on('messageReactionRemove', (reaction, user) => {
console.log("that work 1");
if(reaction.emoji.name === "white_check_mark") {
console.log("that work 2");
}})
但是我在这个论坛上看到它会为其他人工作
感谢您的阅读!
答案 0 :(得分:3)
必须先缓存该消息,然后它才能起作用。漫游器打开时出现的所有消息都将自动被缓存,但是如果用于特定的较旧消息,则可以使用:
client.channels.get(CHANNELID).fetchMessage(MESSAGEID);
对其进行缓存。完成此操作后(每次运行脚本时),您将收到该消息的反应事件。
答案 1 :(得分:2)
事件messageReactionAdd
和messageReactionRemove
仅适用于缓存的消息。您需要将原始事件添加到代码中以触发任何消息。
https://github.com/AnIdiotsGuide/discordjs-bot-guide/blob/master/coding-guides/raw-events.md
答案 2 :(得分:0)
您正在执行反应删除,需要使用Unicode表情符号-您可以在线找到并复制它们
答案 3 :(得分:0)
您应该收听messageReactionAdd
事件。
还要记住,ReactionEmoji.name
是该表情符号的Unicode:您可以通过在表情符号前写一个反斜杠来获得Unicode符号,例如\:joy:
。 :white_check_mark:
的Unicode是✅。
这应该是您的代码:
bot.on('messageReactionAdd', (reaction, user) => {
console.log("first check");
if (reaction.emoji.name === "✅") {
console.log("second check");
}
});
这将适用于每条缓存的邮件,如果您希望它仅适用于特定邮件,请尝试使用Message.awaitReactions()
或Message.createReactionCollector()