Есть ли способ добавить текст в сообщение с реакциями

#javascript #discord.js

Вопрос:

Поэтому я хочу попробовать сделать что-то, что вы можете «напечатать» с помощью реакций, но по какой-то причине это не сработает, вместо того, чтобы просто добавлять, оно заменит последнее, затем перейдет к следующему, затем заменит это и повторит. Как мне заставить его работать должным образом? Я пытаюсь создать своего рода интерактивный калькулятор разногласий

     client.on('message' , async msg => {
    if(msg.content === "mb!calculate") {
        msg.author.calculator = new Discord.MessageEmbed()
        .setColor('0000ff')
        .setTitle('Calculator')
        .setDescription('>> ');
       msg.author.calEmbed = await msg.channel.send(msg.author.calculator);
        msg.author.calEmbed.react('1️⃣');
        msg.author.calEmbed.react('2️⃣');
        msg.author.calEmbed.react('3️⃣');
        msg.author.calEmbed.react('4️⃣');
        msg.author.calEmbed.react('5️⃣');
        msg.author.calEmbed.react('6️⃣');
        msg.author.calEmbed.react('7️⃣');
        msg.author.calEmbed.react('8️⃣');
        msg.author.calEmbed.react('9️⃣');
        msg.author.actEmbed = msg.author.calEmbed.embeds[0];
    }
})

client.on('messageReactionAdd', async (reaction, user) => {
    if(reaction.partial) {

        try {
            await reaction.fetch();
        } catch (error) {
            console.error(error);
            return;
        }
    }

    if(reaction.message === user.calEmbed) {
        reaction.users.remove(user.id);
        if(reaction.emoji.name === '1️⃣') {
        user.calculator.setDescription(user.actEmbed.description   '1');
        } else if(reaction.emoji.name === '2️⃣') {
            user.calculator.setDescription(user.actEmbed.description   '2');
        } else if(reaction.emoji.name === '3️⃣') {
            user.calculator.setDescription(user.actEmbed.description   '3');
        } else if(reaction.emoji.name === '4️⃣') {
            user.calculator.setDescription(user.actEmbed.description   '4');
        } else if(reaction.emoji.name === '5️⃣') {
            user.calculator.setDescription(user.actEmbed.description   '5');
        } else if(reaction.emoji.name === '6️⃣') {
            user.calculator.setDescription(user.actEmbed.description   '6');
        } else if(reaction.emoji.name === '7️⃣') {
            user.calculator.setDescription(user.actEmbed.description   '7');
        } else if(reaction.emoji.name === '8️⃣') {
            user.calculator.setDescription(user.actEmbed.description   '8');
        } else if(reaction.emoji.name === '9️⃣') {
            user.calculator.setDescription(user.actEmbed.description   '9');
        }
        user.calEmbed.edit(user.calculator);
        user.actEmbed = user.calEmbed.embeds[0];
    }
})
 

Поэтому я добавляю переменную пользователю, чтобы несколько человек могли использовать ее одновременно, но не для других людей. Я еще не закончил, так как он делает то, что я сказал выше.

Ответ №1:

Хорошо, я понял, что сделал не так. На самом деле мне не нужен был user.actEmbed, так как изменения вносятся в user.calculator, а это значит, что все, что мне нужно было, — это изменить все слова «actEmbed» на «калькулятор». Вот отредактированная версия.

  client.on('message' , async msg => {
    if(msg.content === "mb!calculate") {
        msg.author.calculator = new Discord.MessageEmbed()
        .setColor('0000ff')
        .setTitle('Calculator')
        .setDescription('>> ');
       msg.author.calEmbed = await msg.channel.send(msg.author.calculator);
        msg.author.calEmbed.react('1️⃣');
        msg.author.calEmbed.react('2️⃣');
        msg.author.calEmbed.react('3️⃣');
        msg.author.calEmbed.react('4️⃣');
        msg.author.calEmbed.react('5️⃣');
        msg.author.calEmbed.react('6️⃣');
        msg.author.calEmbed.react('7️⃣');
        msg.author.calEmbed.react('8️⃣');
        msg.author.calEmbed.react('9️⃣');
    }
})

client.on('messageReactionAdd', async (reaction, user) => {
    if(reaction.partial) {

        try {
            await reaction.fetch();
        } catch (error) {
            console.error(error);
            return;
        }
    }

    if(reaction.message === user.calEmbed) {
        reaction.users.remove(user.id);
        if(reaction.emoji.name === '1️⃣') {
        user.calculator.setDescription(user.calculator.description   '1');
        } else if(reaction.emoji.name === '2️⃣') {
            user.calculator.setDescription(user.calculator.description   '2');
        } else if(reaction.emoji.name === '3️⃣') {
            user.calculator.setDescription(user.calculator.description   '3');
        } else if(reaction.emoji.name === '4️⃣') {
            user.calculator.setDescription(user.calculator.description   '4');
        } else if(reaction.emoji.name === '5️⃣') {
            user.calculator.setDescription(user.calculator.description   '5');
        } else if(reaction.emoji.name === '6️⃣') {
            user.calculator.setDescription(user.calculator.description   '6');
        } else if(reaction.emoji.name === '7️⃣') {
            user.calculator.setDescription(user.calculator.description   '7');
        } else if(reaction.emoji.name === '8️⃣') {
            user.calculator.setDescription(user.calculator.description   '8');
        } else if(reaction.emoji.name === '9️⃣') {
            user.calculator.setDescription(user.calculator.description   '9');
        }
        user.calEmbed.edit(user.calculator)
       
    }
})