(Discord. js) FetchMessages в указанном c канале - PullRequest
0 голосов
/ 19 марта 2020

Я новичок в создании ботов, но у меня есть несколько основ кода. Я создал команду отчета:! Report

Она работает нормально, и как только появляется отчет, в канале отчета создается встраивание, за исключением того, что я не могу добавить реакцию на него, это добавляет реакции на команду отчета. Я знаю, что вы должны использовать FetchMessages, но я не понимаю, как это работает с новой версией (12).

client.on( 'message', message => {
    if(message.content.startsWith("!report")) {
        let messageArray = message.content.split(" ");
        let args = messageArray.slice(1);
        let member = message.mentions.users.first();
        if(!member) return message.channel.send("Cannot find this user.");
        let reason = args.slice(1).join(" ");
        if(!reason) return message.channel.send("The reason for postponement is mandatory!");
        const embed = new MessageEmbed()
            .setAuthor("Mandela Bot", "https://i.ibb.co/wNZW68r/Logo.png")
            .setTitle("Report")
            .setFooter("Reports - Mandela Bot")
            .setColor("0x9500FF")
            .addField("User", (member), true)
            .addField("reason", (reason), true)
            .addField("Reporter", ("<@" + message.member + ">"), true)
            .addField("Delete report", "✅", true)
            .addField("Ban the user", "❌", true)
        client.channels.cache.get("689899680724811886").send(embed)
        const channel = client.channels.cache.get("689899680724811886")
        message.react('✅').then(() => message.react('❌'));
    }
})

Я хотел бы иметь возможность добавить свои 2 реакции на отправляемый код для вставки. как раз раньше, не могли бы вы мне помочь!

(я француз, я использую переводчик, извините, если есть ошибки)

1 Ответ

0 голосов
/ 19 марта 2020

Для этого вы можете использовать promise отправленного сообщения. Лучше тогда попытаться получить сообщение, потому что все действия разногласия возвращают promise. Поэтому, когда вы отправляете сообщение, обновляете роль, обновляете участника, вы можете использовать .then(data =>, а данные будут сообщением, обновленной ролью или обновленным участником.

client.on('message', message => {
    if (message.content.startsWith("!report")) {
        let messageArray = message.content.split(" ");
        let args = messageArray.slice(1);
        let member = message.mentions.users.first();
        if (!member) return message.channel.send("Cannot find this user.");
        let reason = args.slice(1)
            .join(" ");
        if (!reason) return message.channel.send("The reason for postponement is mandatory!");
        const embed = new MessageEmbed()
            .setAuthor("Mandela Bot", "https://i.ibb.co/wNZW68r/Logo.png")
            .setTitle("Report")
            .setFooter("Reports - Mandela Bot")
            .setColor("0x9500FF")
            .addField("User", (member), true)
            .addField("reason", (reason), true)
            .addField("Reporter", ("<@" + message.member + ">"), true)
            .addField("Delete report", "✅", true)
            .addField("Ban the user", "❌", true)
        client.channels.cache.get("689899680724811886")
            .send(embed)
            .then(msg => {
                msg.react('✅')
                    .then(() => msg.react('❌'));
                const filter = (reaction, user) => ['✅', '❌'].includes(reaction.emoji.name)
                msg.awaitReactions(filter, {
                        time: 300000,
                        max: 1
                    })
                    .then(collected => {
                        const reaction = collected.first()
                        if (reaction.emoji.name === '✅') {
                            // Do somthink
                        } else if (reaction.emoji.name === '❌') {
                            // Do somthink
                        }
                    })
                    .catch(collected => {
                        // Do somthink
                    })
            })
    }
})
...