node.js - Discord Bot - 反应收集器/嵌入编辑
问题描述
我正在为我的机器人创建一个“你愿意”命令。我什么都准备好了,除了一个我不知道如何实现的功能。
我很想拥有它,这样当有人对他们的答案(️或️)做出反应时,机器人就会编辑嵌入并将回复的用户放在他们的答案下,如下所示:
我目前拥有的代码是:
case "wyr":
embed.setColor('#fc2803')
embed.setTitle('Would You Rather?')
embed.setDescription(':a: **Be able to fly** \n \n :b: **Breathe underwater**')
message.channel.send(embed).then(m => m.react('️')).then(r => r.message.react('️'));
解决方案
您可以使用discord.js-collector 包轻松实现这一点。但是,如果您想使用普通的 discord.js 进行制作,那么您必须在发送嵌入时听取反应,然后将其编辑为您想要的内容,如我将给出的示例中所示。
使用discord.js-collector 包的简单示例:
使用 Plaine Discord.js 的简单示例:
const Discord = require("discord.js");
const embed = new Discord.MessageEmbed()
.setTitle("Hello There!");
const embedtosend = await message.channel.send(embed).then(m => m.react('️')).then(r => r.message.react('️'));
const filter = (reaction, user) => {
return ['️', '️'].includes(reaction.emoji.name) && user.id === message.author.id;
};
message.awaitReactions(filter, { max: 2, time: 60000, errors: ['time'] })
.then(collected => {
const reaction = collected.first();
if (reaction.emoji.name === '️') {
const someotherembed = new Discord.MessageEmbed()
.setTitle("This Is A Different Hello There!");
embedtosend.edit(someotherembed)
} else if (reaction.emoji.name === '️') {
const anotherembed = new Discord.MessageEmbed()
.setTitle("This Is A Different Embed!");
embedtosend.edit(anotherrembed)
}
});
我还没有测试过这段代码,所以它可能不起作用......
推荐阅读
- ajax - 使用 JQuery Ajax 从 Shopify 获取数据
- php - 我的 SQL 更新查询不会更新指定的记录
- windows - 如何从访客帐户重置管理员密码
- c# - 为什么当从另一个类调用时,图表没有被填充?
- python - Django 格式 DateTimeField 输出到 {YYYY-MM-DD} {HH:MM AM/PM}
- android - Android中的视频水印
- django - 如何在 Django REST API 中获取用户帖子的用户名而不是数字?
- r - 如何在 SUMIFS 中设置两个动态条件,例如 R 中的问题?
- pyqt5 - 如何在 Designer-qt5 中推广的 PlotWidget() 上制作十字准线鼠标跟踪器
- oracle - 这个 Oracle 存储过程调用有什么问题?