Discord机器人没有在加入的成员上发送消息?

时间:2018-08-09 04:13:08

标签: javascript discord discord.js

我正在尝试在成员加入时向消息发布渠道发送消息。如果我不使用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.');
    }
});

2 个答案:

答案 0 :(得分:1)

discord.js的登录方法是异步的,这意味着当您定义该常量时,该漫游器尚未登录。如果漫游器未登录,则找不到任何频道。要么保留在本地定义的常量,要么使其成为全局let并在客户端对象发出ready事件时进行分配。

答案 1 :(得分:0)

我认为没有办法做到这一点:您不能await client.login(),因为它是顶级的,您不能重新定义常量。
您可以继续将该值用作常量的唯一方法是将其余所有代码放在ready事件中,这样就不必更改其值。
如果不使用常量,会更容易。

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