@HepkaPlay
JavaScript Junior.

Некорректно работает код. Как исправить?

Написал небольшой код подтверждения действий:

client.on('message', message => {
    if(message.author === client.user) return;
    if(message.channel.name == 'bot_test') {
const exampleEmbed = new Discord.MessageEmbed()
	.setColor('#0099ff')
	.setTitle('Подтверждение действия')
	.setDescription(`Вополняемое действие: **${message.content}**\nПользователь: <@${message.author.id}> `)
	.addFields(
		{ name: '✅ - Подтвердить', value: 'При нажатии на реакцию действие подтверждается'},
		{ name: '❓ - Подробнее', value: 'При нажатии на реакцию вам в личные сообщения будет отправлено сообщение с описанием действия'},
		{ name: '❎ - Отменить', value: 'При нажатии на реакцию действие отменяетмя и сообщение бота удаляется'},
                { name: '**У Вас есть ровно 30 секунд на подтверждение**', value: '\u200B'},
	)
	.setTimestamp()
	.setFooter('Ferrera Family Bot', 'https://i.imgur.com/YDVgOgw.png');
message.channel.send(exampleEmbed)
await message.react('✅');
const filter = (reaction, user) => reaction.emoji.name === '✅' && user.id == message.author.id 
const collector = message.createReactionCollector(filter, { time: 15000 });
collector.on('collect', r => message.reply(`Сообщение #1`));
collector.on('end', collected => message.reply(`Сообщение #2`));
message.delete();
}
});

Так вот, он не ждёт почему-то 15 секунд а сразу отправляет "Сообщение #2".
А при нажатии на реакцию ничего не происходит.
Что я сделал не так?
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
Alexandre888
@Alexandre888 Куратор тега discord.js
Javascript-разработчик
какой-то у вас слишком запутанный код, почему вы не используете предложенный мною, в предыдущем вопросе?

почему там, где collector.on("collect", r => . . .), вы указываете только один параметр, если бот должен собирать не только реакцию, но и пользователя?

почему вы используете метод .delete(), отдельно от присланных сообщений? откуда боту знать, какое именно удалить? для таких целей используется
.then(message => {
. . .
})


к тому же, начиная с v12 discord.js и выше, внутри скобок .delete() в качестве времени, через которое нужно удалить сообщение, указывается { timeout: время_в_миллисекундах }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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