Discord.js Bot 欢迎会员,分配角色并向他们发送 DM

Discord.js Bot Welcomes Member, Assign a Role and send them a DM

因此,当新成员加入 Guild [不和谐服务器] 时。机器人应该在某个频道(ID = 766716351007686696)中发送消息,向他们发送直接消息,然后添加角色(人豆)。这是我现在的代码,它不起作用,底部有错误

client.on('guildMemberAdd', member =>{
    const channel = message.guild.channels.cache.find(c => c.id === "766716351007686696")
    const channelwelcomeEmbed = new Discord.MessageEmbed()
        .setColor('#ffd6d6')
        .setTitle('Welcome!')
        .setDescription(`${member} just joined the discord! Make sure to read #rules!`)
        .setTimestamp();
    channel.send(channelwelcomeEmbed);
    const dmwelcomeEmbed = new Discord.MessageEmbed()
        .setColor('#ffd6d6')
        .setTitle('Welcome!')
        .setDescription("For Help Using @Pro Bot#7903, Send The Command `!help` In Server")
        .setTimestamp();
    member.send(dmwelcomeEmbed);
    let role6 = message.guild.roles.cache.find(role => role.name == "Human Bean"); //BASIC ROLE, EVERYONE GETS IT
    if(!role6) return message.reply("Couldn't find that Role .")
    member.roles.add(role6);
});

错误信息是;

    const channel = message.guild.channels.cache.find(c => c.id === "766716351007686696")
                    ^

ReferenceError: message is not defined

你的代码看起来没问题,问题是事件没有被触发。那是因为 discord 默认关闭了“特权意图”。

由于数据的敏感性,一些意图被定义为“特权”。这些意图是:

  • GUILD_PRESENCES
  • GUILD_MEMBERS

其中一个影响就是您正在经历的,即不工作 guildMemberAdd 事件。

好消息是您可以通过一个简单的步骤解决这个问题。只需在 discord developer portal 中启用 Privileged Gateway Intents,它应该可以正常工作。

如果您想阅读更多相关信息

修复:const channel = member.guild.channels.cache.get('CHANNEL ID')

您需要使用 member 而不是 message。因为 guildMemberAdd 函数使用 member.

client.on('guildMemberAdd', member => {