簡體   English   中英

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

[英]Why messageReactionAdd do nothing discord.js

我正在嘗試使用 node.js 編寫一個不和諧的機器人,但我對 messageReactionAdd 有問題我現在不明白為什么當我對表情符號做出反應時機器人什么都不做。

我的代碼:

bot.on('messageReactionRemove', (reaction, user) => {
console.log("that work 1");
if(reaction.emoji.name === "white_check_mark") {
    console.log("that work 2");
}})

事件messageReactionAddmessageReactionRemove僅適用於緩存的消息。 您需要在代碼中添加原始事件以觸發任何消息。 https://github.com/AnIdiotsGuide/discordjs-bot-guide/blob/master/coding-guides/raw-events.md

消息必須先緩存,然后才能工作。 在您的機器人打開時傳入的任何消息都將自動被緩存,但如果是針對特定的較舊消息,您可以使用:

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

緩存它。 執行此操作后(每次運行腳本時),您將收到該消息的反應事件。

你正在做反應刪除,你需要使用 Unicode 表情符號 - 你可以在網上找到這些並復制它們

您應該收聽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()

2022 年更新。您可能需要使用緩存消息為GUILD_MESSAGESGUILD_MESSAGE_REACTIONS添加意圖以使其工作。

參考: https : //discordjs.guide/popular-topics/reactions.html#listening-for-reactions-on-old-messages

const client = new Client({
    intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_MESSAGE_REACTIONS],
    partials: ['MESSAGE', 'CHANNEL', 'REACTION'],
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM