我正在尝试在成员加入时向消息发布渠道发送消息。如果我不使用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 :(得分:1)
discord.js的登录方法是异步的,这意味着当您定义该常量时,该漫游器尚未登录。如果漫游器未登录,则找不到任何频道。要么保留在本地定义的常量,要么使其成为全局let
并在客户端对象发出ready事件时进行分配。
答案 1 :(得分:0)
我认为没有办法做到这一点:您不能await client.login()
,因为它是顶级的,您不能重新定义常量。
您可以继续将该值用作常量的唯一方法是将其余所有代码放在ready
事件中,这样就不必更改其值。
如果不使用常量,会更容易。
此外,您必须使用guild.channels.find('name', 'channel_name')
,因为.get()
仅适用于ID