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

IT技术 javascript discord discord.js roles
2021-02-25 21:56:32

因此,当新成员加入Guild[discord 服务器] 时。Bot应该在某个频道(ID = 766716351007686696)发送一条消息,直接给他们发送一条消息,然后添加一个角色(Human Bean)。这是我现在拥有的代码,它不起作用,底部有错误

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
2个回答

您的代码看起来不错,问题是未触发事件。那是因为不和谐默认关闭了“特权意图”。

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

  • GUILD_PRESENCES
  • GUILD_MEMBERS

一种影响就是你正在经历的,即不工作的guildMemberAdd事件。

好消息是您可以通过一个简单的步骤解决此问题。只需discord 开发人员门户中启用Privileged Gateway Intents,它就可以正常工作。

在此处输入图片说明

如果你想阅读更多关于它的信息

好的,现在事件被触发了。但是出现错误,详情见帖子底部
2021-05-01 21:56:32
是的,您无法在此事件中访问消息。更改messagemember而且你也不能在事件中回复。如果role6不存在,则返回。
2021-05-14 21:56:32

使固定: const channel = member.guild.channels.cache.get('CHANNEL ID')

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

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