Бот-дискорд не посылает сообщения на пользователя, присоединившегося?

1

Я пытаюсь отправить сообщение в канал аннуляции, когда члены присоединяются. Это работает, если я не использую 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.');
    }
});
  • 0
    Привет, ты решил проблему? Если да, можете ли вы принять ответ, который помог вам, чтобы тема была «закрыта»?
Теги:
discord
discord.js

2 ответа

1

Метод входа в систему discord.js является асинхронным, что означает, что при определении этой константы бот еще не вошел в систему. Если бот не зарегистрирован, он не может найти ни одного канала. Либо сохраните константу, определенную локально, либо сделайте ее глобальной и назначьте ее, когда событие готовности будет let объектом клиента.

  • 0
    Есть ли способ, которым я могу await при входе в систему? Прежде чем продолжить.
  • 0
    Да, вы можете использовать await при входе в систему, но только из async function .
0

Я не думаю, что есть способ сделать это: вы не можете await client.login() так как это будет верхний уровень, и вы не можете переопределить константу.
Единственный способ, которым вы можете продолжать использовать это значение как константу, - это положить весь остальной код в ready событие, чтобы вам не пришлось изменять его значение.
Было бы проще, если бы вы не использовали константы.

Кроме того, вы должны использовать guild.channels.find('name', 'channel_name'), так как .get() работает только с идентификаторами

Ещё вопросы

Сообщество Overcoder
Наверх
Меню