首页 > 解决方案 > 检测 discord.js 上的反应

问题描述

我正在制作一个不和谐的机器人,但我对 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)
        })

    }
}

标签: node.jsdiscord.js

解决方案


这里有几件事。

首先,您定义message了两次;一次作为启动命令处理程序的命令的消息,一次作为机器人发送的消息。您需要重命名其中之一,否则可能会出现各种意外问题。

其次,你永远不应该定义你的客户两次。相反,您应该重用客户端。为此,您可以使用与导出message和相同的方式将其导出到命令处理程序args,也可以通过<message>.client与此处相同的方式访问和使用它。


推荐阅读