messageReactionAdd запуск более одного раза

#javascript #discord #discord.js

#javascript #Discord #discord.js

Вопрос:

Кажется, что блок кода выполняется более 1 после 1 попытки, хотя я вызвал его только один раз

Функция кода состоит в том, чтобы дождаться реакции, а затем дождаться сообщения и сохранить это сообщение в файле .json

main.js

 
client.on('message', message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;

    const args = message.content.slice(prefix.length).split(/  /);

    const command = args.shift().toLocaleLowerCase();

   
    if (command == story) {
        client.commands.get('story').execute(message, args, Discord, client, fs);
    }



});
 

команда story.js

 client.on('messageReactionAdd', async (reaction, user) => {
                if (reaction.message.partial) await reaction.message.fetch();
                if (reaction.partial) await reaction.message.fetch();
                if (user.bot) return;
                if (!reaction.message.guild) return;

                if (reaction.message.channel.id = channel) {

                    if (reaction.emoji.name === emoj) {
                        const filter = m => {
                            return m.author.id === message.author.id;
                        }

                        message.channel.send('Input Story').then(msg => {
                           
                            msg.channel.awaitMessages(filter, {
                                max: 1,
                                time: 30000
                            })
                                .then(swag => {
                                    swag = swag.first()
                                    client.msgs[swag.author.username] = {
                                        message: swag.content
                                    }
                                    fs.writeFile("./Database/msgs.json", JSON.stringify(client.msgs, null, 4), err => {
                                        if (err) throw err;
                                        message.channel.send("logged");
                                       
                                    });

                                })
                        })
                    }


                }
                else {
                    return;
                }
            });
        });
 

Комментарии:

1. Можете ли вы включить верхнюю область (или даже весь код)? Может быть, вы создаете прослушиватель дважды?

2. Я отредактировал проблему и включил основной файл, который вызывал файл блока. Означает ли двойной client.on, что я прослушивал дважды?

3. Вы не включили верхнюю область объявления слушателя. Каждый client.on(...) регистрирует слушателя. Если это произойдет дважды, у вас будет 2 идентичных слушателя (хотя и не одна и та же ссылка на функцию)

4. Могу я попросить совета? Я уже пробовал awaitReactions и awaitMessages регистрировать сообщение, отправленное после того, как пользователь реагирует на эмодзи, и кажется, что есть ошибка

5. Опять же, пожалуйста, добавьте верхнюю область объявления прослушивателя в свой блок кода и, если возможно, весь файл целиком.