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

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

if(cmd === `${prefix}list`) {
    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 === "✅");

}

【问题讨论】:

    标签: javascript do-while discord.js


    【解决方案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);
    

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

    【讨论】:

      猜你喜欢
      • 2021-08-04
      • 2021-12-17
      • 2022-10-04
      • 2020-06-25
      • 2021-01-11
      • 2021-04-04
      • 2021-07-07
      • 2020-08-15
      • 2021-05-18
      相关资源
      最近更新 更多