Я пытаюсь отправить сообщение в канал аннуляции, когда члены присоединяются. Это работает, если я не использую welcomeChannel
как const и не определяю его внутри функции, но я не хочу этого делать.
const Discord = require('discord.js');
const bot = new Discord.Client();
bot.login('*****************************************');
const welcomeChannel = bot.channels.get("name", "annoucements") // also tried .find here
bot.on('guildMemberAdd', member => {
if (welcomeChannel) {
welcomeChannel.send(member + ', welcome to the server.');
}
});
Метод входа в систему discord.js является асинхронным, что означает, что при определении этой константы бот еще не вошел в систему. Если бот не зарегистрирован, он не может найти ни одного канала. Либо сохраните константу, определенную локально, либо сделайте ее глобальной и назначьте ее, когда событие готовности будет let
объектом клиента.
await
при входе в систему? Прежде чем продолжить.
await
при входе в систему, но только из async function
.
Я не думаю, что есть способ сделать это: вы не можете await client.login()
так как это будет верхний уровень, и вы не можете переопределить константу.
Единственный способ, которым вы можете продолжать использовать это значение как константу, - это положить весь остальной код в ready
событие, чтобы вам не пришлось изменять его значение.
Было бы проще, если бы вы не использовали константы.
Кроме того, вы должны использовать guild.channels.find('name', 'channel_name')
, так как .get()
работает только с идентификаторами