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
,但只能从异步函数中使用。您好,您解决了问题吗?如果是这样的话,你能接受帮助你使线程“关闭”的答案吗?