#javascript #discord #discord.js
#javascript #Discord #discord.js
Вопрос:
Кажется, что блок кода выполняется более 1 после 1 попытки, хотя я вызвал его только один раз
Функция кода состоит в том, чтобы дождаться реакции, а затем дождаться сообщения и сохранить это сообщение в файле .json
main.js
client.on('message', message => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ /);
const command = args.shift().toLocaleLowerCase();
if (command == story) {
client.commands.get('story').execute(message, args, Discord, client, fs);
}
});
команда story.js
client.on('messageReactionAdd', async (reaction, user) => {
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.message.fetch();
if (user.bot) return;
if (!reaction.message.guild) return;
if (reaction.message.channel.id = channel) {
if (reaction.emoji.name === emoj) {
const filter = m => {
return m.author.id === message.author.id;
}
message.channel.send('Input Story').then(msg => {
msg.channel.awaitMessages(filter, {
max: 1,
time: 30000
})
.then(swag => {
swag = swag.first()
client.msgs[swag.author.username] = {
message: swag.content
}
fs.writeFile("./Database/msgs.json", JSON.stringify(client.msgs, null, 4), err => {
if (err) throw err;
message.channel.send("logged");
});
})
})
}
}
else {
return;
}
});
});
Комментарии:
1. Можете ли вы включить верхнюю область (или даже весь код)? Может быть, вы создаете прослушиватель дважды?
2. Я отредактировал проблему и включил основной файл, который вызывал файл блока. Означает ли двойной client.on, что я прослушивал дважды?
3. Вы не включили верхнюю область объявления слушателя. Каждый
client.on(...)
регистрирует слушателя. Если это произойдет дважды, у вас будет 2 идентичных слушателя (хотя и не одна и та же ссылка на функцию)4. Могу я попросить совета? Я уже пробовал awaitReactions и awaitMessages регистрировать сообщение, отправленное после того, как пользователь реагирует на эмодзи, и кажется, что есть ошибка
5. Опять же, пожалуйста, добавьте верхнюю область объявления прослушивателя в свой блок кода и, если возможно, весь файл целиком.