Задать вопрос
@HepkaPlay
JavaScript Junior.

Как сделать действие на реакции?

Как сделать действие при нажатии на реакцию под сообщением бота?
Версия Discord.JS 12.2.0.
  • Вопрос задан
  • 1632 просмотра
Подписаться 1 Средний 4 комментария
Решения вопроса 2
Alexandre888
@Alexandre888 Куратор тега discord.js
Javascript-разработчик
это можно сделать c помощью так называемых "слушателей", используя эвенты по типу ReactionAdd, ReactionRemove . . .
а также, можно использовать коллекторы.

второй вариант в коде смотрится намного лаконичнее, и не занимает лишнего места - я советую вам использовать именно его.
const filter = (reaction, user) => {
	return reaction.emoji.name === 'здесь_указываете_нужную_реакцию'
};

const collector = message.createReactionCollector(filter, { time: 15000 }); 
/* 
у данного метода существует несколько других ключевых слов, помимо time, 
для более тонкой работы с реакциями.
на простой коллектор - достаточно будет указать время сбора реакций 
(в нашем случае - 15 секунд).
*/

collector.on('collect', (reaction, user) => {
	// действия, которые произойдут при нажатии пользователя на реакцию.
});

collector.on('end', collected => {
	// действия, которые произойдут после остановки коллектора.
});
Ответ написан
AlmondPark33609
@AlmondPark33609
Занимаюсь кодингом как хобби
Можно немного изменить код выше чтобы бот не ждал конца времени а выполнял действие сразу когда наберется нужное кол-во реакций
const filter = (reaction, user) => {
  return reaction.emoji.name === 'unicode реакция'
};

const collector = message.createReactionCollector(filter, { max: 2 }); //вместо time указываем максимальное кол-во реакций после набирания которых произойдёт действие
//также можно совмещать time и max чтобы действия происходили и когда наберется необходимое кол-во реакций и по истечению времени: { max: 3, time: 60000 }

collector.on('collect', (reaction, user) => {
});

collector.on('end', collected => {
  // действия, которые произойдут когда наберется нужное кол-во реакций
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы