Как заставить реакцию работать после перезапуска в discord.js?

#javascript #node.js #discord #discord.js

Вопрос:

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

 let messageEmbed = await message.channel.send(ticketEmbed);
messageEmbed.react("1️⃣");
messageEmbed.react("2️⃣");
messageEmbed.react("3️⃣");
messageEmbed.react("4️⃣");

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

    if (reaction.emoji.name === firstreaction) {
        const categoryId = "822577084223586364";
        var username = reaction.message.guild.members.cache.get(user.id);
        var userDiscriminator = reaction.message.guild.members.cache.get(user.id).discriminator;
        var ticketExists = false;

        message.guild.channels.cache.forEach((channel) => {
            if (channel.name == `${reaction.user}`   "Playerreport") {
                var ticketExists = true;
                message.username.send("You already have an open ticket!");

                return;
            }
        });
        if (ticketExists) return;

        message.guild.channels
            .create(`${reaction.user}`   "Playerreport", {
                type: "text",
            })
            .then((createdchannel) => {
                createdchannel.setParent(categoryId).then((settedParent) => {
                    settedParent.updateOverwrite(
                        message.guild.roles.cache.find((x) => x.name === "@everyone"),
                        {
                            SEND_MESSAGES: false,
                            VIEW_CHANNEL: false,
                        }
                    );
                    settedParent.updateOverwrite(username, {
                        SEND_MESSAGES: true,
                        VIEW_CHANNEL: true,
                        READ_CHANNEL: true,
                        CREATE_INSTANT_INVITE: false,
                        ATTACH_FILES: true,
                        CONNECT: true,
                        ADD_REACTIONS: true,
                    });
                    var embedParent = new Discord.MessageEmbed()
                        .setTitle(`Hey ${username}, who do you want to report, and why?`)
                        .setDescription("Staff will try to help you as soon as possible")
                        .setThumbnail("https://cdn.discordapp.com/attachments/790156012119392287/821827094916759603/image_2.png");

                    settedParent.send(embedParent);
                });
            });
    }
});
 

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

1. Где находится этот код ? Это один файл или несколько ?

2. Я использую обработчик команд. Этот код находится в файле под названием ticket.js

3. Это тоже событие ?

Ответ №1:

Вам следует попытаться переместить messageReactionAdd событие за пределы вашего командного файла, так как ваш код, скорее всего, сломается, если вы не введете команду повторно.