收到表情符号反应后的 Discord.js 消息

Posted

技术标签:

【中文标题】收到表情符号反应后的 Discord.js 消息【英文标题】:Discord.js message after receiving emoji reaction 【发布时间】:2018-09-25 07:57:19 【问题描述】:

是否可以让 Discord 机器人在前一条消息收到反应后发送消息?我正在考虑类似的事情:

if(cmd === `$prefixlist`) 
    var i = 0;

    let embed = new Discord.RichEmbed()
      .addField("List", "Content");

    let anotherembed = new Discord.RichEmbed()
      .addField("Message", "List has been completed!");

    return message.channel.send(embed);

    do 
      message.channel.send(anotherembed + 1);
    
    while (i !== 0) && (reaction.emoji.name === "✅");


【问题讨论】:

【参考方案1】:

这不是你应该做的。 你想要的是message.awaitReactions。 DiscordJS 团队和社区提供了一个很棒的指南,其中有一个很好的例子 awaitReactions。 这是link 和他们使用的示例:

message.react('?').then(() => message.react('?'));

const filter = (reaction, user) => 
    return ['?', '?'].includes(reaction.emoji.name) && user.id === message.author.id;
;

message.awaitReactions(filter,  max: 1, time: 60000, errors: ['time'] )
    .then(collected => 
        const reaction = collected.first();

        if (reaction.emoji.name === '?') 
            message.reply('you reacted with a thumbs up.');
        
        else 
            message.reply('you reacted with a thumbs down.');
        
    )
    .catch(collected => 
        console.log(`After a minute, only $collected.size out of 4 reacted.`);
        message.reply('you didn\'t react with neither a thumbs up, nor a thumbs down.');
    );

您基本上需要一个过滤器,它只允许一系列表情符号,并且用户可以“使用”它们。

还有你的代码的某个地方:

return message.channel.send(embed);

您应该删除返回部分,否则它只会返回而不执行其余代码。

【讨论】:

以上是关于收到表情符号反应后的 Discord.js 消息的主要内容,如果未能解决你的问题,请参考以下文章

Discord JS - 如何对同一个嵌入做出多次反应?

Discord.js:只有一种反应

无法从反应中读取标准表情符号名称 [discord.js]

Discord.js DiscordAPI 错误:未知表情符号 - 对嵌入做出反应

在单独的频道中对机器人自己的消息的表情符号反应

有没有办法对使用 discord.js 发送的每条消息做出反应