Javascript 已加入成员时,Discord bot未发送消息?

Javascript 已加入成员时,Discord bot未发送消息?,javascript,discord,discord.js,Javascript,Discord,Discord.js,我正试图在会员加入时向公告频道发送消息。如果我不使用welcomeChannel作为常量并在函数中定义它,这是可行的,但我不想这样做 const Discord = require('discord.js'); const bot = new Discord.Client(); bot.login('*****************************************'); const welcomeChannel = bot.channels.get("name", "ann

我正试图在会员加入时向公告频道发送消息。如果我不使用
welcomeChannel
作为常量并在函数中定义它,这是可行的,但我不想这样做

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的登录方法是异步的,这意味着当您定义该常量时,bot尚未登录。如果bot未登录,则找不到任何频道。要么保留本地定义的常量,要么将其设置为全局
并在客户端对象发出就绪事件时分配它。

我认为没有办法做到这一点:您不能
等待client.login()
,因为它将是顶级的,并且您不能重新定义常量。
保持将该值用作常量的唯一方法是将所有剩余代码放入
ready
事件中,这样就不必更改其值。
如果你不使用常量,那就容易多了


此外,您还必须使用
guild.channels.find('name','channel_name')
,因为
.get()
仅适用于ID

是否有办法
等待登录?继续之前。是的,您可以在登录时使用
wait
,但只能从
异步函数中使用。您好,您解决了问题吗?如果是这样的话,你能接受帮助你使线程“关闭”的答案吗?