node.js - 检测 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)
})
}
}
解决方案
这里有几件事。
首先,您定义message
了两次;一次作为启动命令处理程序的命令的消息,一次作为机器人发送的消息。您需要重命名其中之一,否则可能会出现各种意外问题。
其次,你永远不应该定义你的客户两次。相反,您应该重用客户端。为此,您可以使用与导出message
和相同的方式将其导出到命令处理程序args
,也可以通过<message>.client
与此处相同的方式访问和使用它。
推荐阅读
- bazel - 如果我的 bazel 目标生成未在其输出中指定的文件,我会出错吗?
- laravel-5 - 拉拉维尔 5.6。文件属性不来
- apache-flink - Flink 中的 RocksDBStateBackend 如何将数据溢出到磁盘?
- python - 如何重命名文件以包含文件路径?
- django - 使两个外键在同一模型上唯一
- javascript - moment.js 如何以特定格式打印本周
- android - 创建新项目后activity_main.xml 中的错误
- excel - 将多个值写入一个单元格 - VBA
- python - 字典列表的问题
- python - 在 Python multiprocessing.Process 中,我们是否必须使用 `__name__ == __main__`?