首页 > 解决方案 > 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('️')); 

标签: node.jsdiscorddiscord.js

解决方案


您可以使用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)
    
  }
});

我还没有测试过这段代码,所以它可能不起作用......


推荐阅读