[英]Detect Reaction on discord.js
我正在制作一個 discord 機器人,但我對 waifu 命令有疑問。 使用此命令,機器人會發送一個嵌入,我想檢測某人何時對此嵌入做出反應。 我試過這段代碼,但沒有任何反應。
const Discord = require("discord.js");
const axios = require("axios")
const Client = new Discord.Client;
module.exports = {
name : 'waifu',
description : "waifu command",
execute(message, args) {
Client.on('messageReactionAdd', (reaction, user) => {
message.channel.send("Reacted")
})
axios.get("https://api.waifu.pics/sfw/waifu")
.then((res) => {
let wembed = new Discord.MessageEmbed()
.setTitle(`Voici votre waifu ${message.author.username}`)
.setImage(res.data.url)
message.channel.send(wembed)
.then(function (message) {
message.react("❤")
Client.on('messageReactionAdd', (reaction, user) => {
console.log("reacted")
})
})
})
.catch((err) => {
console.error("ERR: ", err)
})
}
}
這里有幾件事。
首先,您定義了兩次message
; 一次作為消息啟動源自您的命令處理程序的命令,一次作為機器人發送的消息。 您需要重命名其中之一,否則可能會出現各種意外問題。
其次,你永遠不應該定義你的客戶兩次。 相反,您應該重用客戶端。 為此,您可以像導出message
和args
一樣將它導出到命令處理程序,或者您可以通過<message>.client
訪問它並像此處一樣使用它。
您不能在message
偵聽器中添加messageReactionAdd
偵聽器。 但是,您可以使用createReactionCollector
設置反應收集器,例如下面的示例:
const { MessageEmbed } = require('discord.js');
const axios = require('axios')
module.exports = {
name: 'waifu',
description: 'waifu command',
execute(message, args) {
axios
.get('https://api.waifu.pics/sfw/waifu')
.then((res) => {
let wembed = new MessageEmbed()
.setTitle(`Voici votre waifu ${message.author.username}`)
.setImage(res.data.url);
// make sure you use a different var name here
// like msg instead of message
message.channel.send(wembed).then((msg) => {
msg.react('❤');
// set up a filter to only collect reactions with the ❤ emoji
let filter = (reaction, user) => reaction.emoji.name === '❤';
let collector = msg.createReactionCollector(filter);
collector.on('collect', (reaction, user) => {
// in case you want to do something when someone reacts with ❤
console.log('reaction added');
});
collector.on('remove', (reaction, user) => {
// in case you want to do something when someone removes their reaction
console.log('reaction removed');
});
});
})
.catch((err) => {
console.error('ERR: ', err);
});
},
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.