Discord API - Событие нажатия на кнопку реакции

Мне нужно, чтобы бот выставлял 5 реакций под своим сообщением, затем если кто-то нажмёт на одну из реакций выполнилась функция. Как это сделать?


Ответы (1 шт):

Автор решения: Hiteke

В discord.js есть коллектор реакций

client.on('message', async msg => {
    if (msg.content === '!test') {

        //Создаем сообщение
        var m = await msg.сhannel.send('Привет, Мир!')

        //Ставим реакции на сообщение
        await m.react('1️⃣')
        await m.react('2️⃣')
        await m.react('3️⃣')
        await m.react('4️⃣')
        await m.react('5️⃣')

        //Настраиваем фильтр
        const filter = (reaction, user) => {
            return user.id === msg.author.id
        }

        //Создаем коллектор
        var collector = m.createReactionCollector(filter, {
            time: 60000 //Сколько будет работать коллектор
        })

        //Обработка нажатых реакций
        collector.on('collect', (reaction, reactionCollector) => {
            if (reaction.emoji.name === '1️⃣') {
                //Ваша функция
            }
            collector.stop() //Остановка коллектора
        })
        //Обработка остановки коллектора
        collector.on('end', collected => {
            m.delete() //Удаляем сообщение
        });
    }
})

Руководство https://discordjs.guide/popular-topics/collectors.html#basic-reaction-collector

→ Ссылка