首页 > 解决方案 > 如何添加多个反应?

问题描述

我到处寻找答案,但我无法弄清楚。

这是我想要做的:

bot.on("messageReactionAdd", (messageReaction, user) => {
    console.log(messageReaction);
    if(reaction.emoji.name === "\u0031\u20E3") {
        message.channel.send('one'); //This is temporary to test it out. There will be other code here eventually.
    }
    else if(reaction.emoji.name === "\u0032\u20E3") {
        message.channel.send('two');
    }
    else if(reaction.emoji.name === "\u0033\u20E3") {
        message.channel.send('three');
    }
});

我的问题是当我运行这段代码时:

let cmdEmbed = new discord.RichEmbed()
    .setTitle('**Command Menu Test**')
    .setDescription("Type commands")
    .setAuthor('InfernoBot', 'https://cdn.discordapp.com/avatars/533089334224617474/17ddec7cb178601d17964040ed8dc32d.png?size=2048')
    .setColor(0xD41519);
message.channel.sendEmbed(cmdEmbed).then(function (message) {
    message.react('\u0031\u20E3')
    message.react('\u0032\u20E3') //This doesn't run
    message.react('\u0033\u20E3') //This doesn't run
});

它只对“1”表情符号做出反应。

如何让它与 emoji 数字 1、2 和 3 发生反应,而不等待反应?

PS:我将实现一些代码,一旦对现有嵌入作出反应,将重新发送具有相同反应的完全相同的嵌入,以重置它。

编辑:机器人并不总是对 1 做出反应。但是,它只会添加一个反应。这是不一致的。 截图在这里 .

标签: javascriptnode.jsdiscord.js

解决方案


发布后大约 30 分钟找到了答案。我会分享给遇到同样问题的人。

我在原始帖子中的第一段代码导致机器人崩溃并重新启动。

我将第一段代码替换为:

bot.on("messageReactionAdd", (reaction, user) => {
    if(user.toString() !== '<@533089334224617474>' /*InfernoBot ID*/) {
        console.log('User is not InfernoBot')
        if(reaction.emoji.name === "\u0031\u20E3") {
            //code here
        }
    }
});

我用以下代码替换了第二块代码:

let cmdEmbed = new discord.RichEmbed()
    .setTitle('**Command Menu Test**')
    .setDescription("Type commands")
    .setAuthor('InfernoBot', 'https://cdn.discordapp.com/avatars/533089334224617474/17ddec7cb178601d17964040ed8dc32d.png?size=2048')
    .setColor(0xD41519);
message.channel.sendEmbed(cmdEmbed).then(function (message) {
    message.react('\u0031\u20E3').then(() => message.react('\u0032\u20E3')).then(() => message.react('\u0033\u20E3'));
});

推荐阅读