为什么messageReactionAdd什么都不做discord.js

时间:2018-10-31 23:27:24

标签: javascript discord discord.js

我想说我是法国人,对此我深表歉意。

我尝试用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");
}})

但是我在这个论坛上看到它会为其他人工作

感谢您的阅读!

4 个答案:

答案 0 :(得分:3)

必须先缓存该消息,然后它才能起作用。漫游器打开时出现的所有消息都将自动被缓存,但是如果用于特定的较旧消息,则可以使用:

client.channels.get(CHANNELID).fetchMessage(MESSAGEID);

对其进行缓存。完成此操作后(每次运行脚本时),您将收到该消息的反应事件。

答案 1 :(得分:2)

事件messageReactionAddmessageReactionRemove仅适用于缓存的消息。您需要将原始事件添加到代码中以触发任何消息。 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()