javascript - 使用表情符号回复时 Discord.js 执行功能
问题描述
目前,我正在使用 Discord.js 制作一个机器人。
client.on('message', (message) => {
if (message.content === '$wa') {
message.channel.send({ embed: exampleEmbed }).then((embedMessage) => {
embedMessage.react('❤️');
embedMessage
.awaitReactions(
(filter = (reaction, user) => {
return reaction.emoji.name === '❤️' && user.id === message.author.id;
}),
{ max: 2, time: 60000, errors: ['time'] }
)
.then((collected) => {
const reaction = collected.first();
if (reaction.emoji.name === '❤️') {
message.channel.send(
':sparkling_heart: **Hanno** and **Roronoa Zoro** are now married! :sparkling_heart:'
);
}
});
});
}
});
如果我键入$wa
机器人会显示一些嵌入。但问题是它会自动为嵌入添加一颗心。我希望如果我也单击心脏(总共有 2 颗心脏),它会执行底部的 if 语句。
我尝试了多种方法,但都没有奏效。这也是我第一次与Discord.js
解决方案
您需要考虑机器人自身的反应。我建议将您的filter
实现重做为这样的东西。关键要点是您必须添加!user.bot
到过滤器中,以便忽略机器人自己的反应
const filter = (reaction, user) => {
return reaction.emoji.name === "❤️" && user.id === message.author.id && !user.bot
}
embedMessage.awaitReactions(filter, { max: 1, time: 60000, errors: ['time'] })
推荐阅读
- maven - 执行 wsdl2java 的特定服务
- python - 计数反转算法(python)的不稳定行为
- mysql - 删除巨型 MySQL 列的快速方法
- c# - 来自 SSIS 脚本任务的电子邮件 - 显示发件人姓名而不是地址
- robots.txt - Robots.txt 显示有一个奇怪的链接
- directx - 使用采样器和直接索引访问之间的区别
- apache-spark - Spark SQL 以不同方式读取 parquet 表和 csv 表
- python - Kivy 无法使用 ButtonBehavior 向按钮添加文本
- python - Plotly dash 模板类似于 shinydashboard
- javascript - Phaser 使用 Firefox(隐藏的 Iframe)崩溃到 null window.computedStyle()