【问题标题】:Discord bot not sending message on member joined?Discord bot 未在会员加入时发送消息?
【发布时间】:2019-01-16 10:18:51
【问题描述】:

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

【问题讨论】:

  • 您好,您的问题解决了吗?如果是这样,您能否接受对您有所帮助的答案,以便线程“关闭”?

标签: javascript discord discord.js


【解决方案1】:

discord.js 的登录方法是异步的,这意味着当您定义该常量时,机器人尚未登录。如果机器人没有登录,它就找不到任何频道。要么保持本地定义的常量,要么将其设为全局let,并在客户端对象发出就绪事件时分配它。

【讨论】:

  • 有没有办法可以await 登录?在继续之前。
  • 是的,您可以在登录时使用await,但只能使用async function
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2021-06-06
    • 2023-03-07
    • 2021-03-24
    • 1970-01-01
    • 2020-12-01
    • 2021-03-02
    • 2021-01-12
    • 2021-06-05
    • 2022-01-05
    相关资源
    最近更新 更多