为啥我的欢迎信息不起作用(discord.js)

Posted

技术标签:

【中文标题】为啥我的欢迎信息不起作用(discord.js)【英文标题】:Why doesn't my welcome message work(discord.js)为什么我的欢迎信息不起作用(discord.js) 【发布时间】:2021-12-06 11:40:21 【问题描述】:

我正在尝试制作一个机器人,它赋予用户成员角色并向聊天发送简单的欢迎消息。但是,当有人加入时,什么也没有发生(甚至没有错误)。这是我的代码:

client.on('guildMemberAdd', guildMember => 
        console.log(guildMember);
        let role = guildMember.guild.roles.cache.find(role => role.name == 'member');
        guildMember.roles.add(role);
    
        member.guild.channels.get('channelID').send(`welcome <@$guildMember.id> dont forget to 
        check the rules`);
    );

【问题讨论】:

【参考方案1】:

您是否激活了必要的标志?客户端需要以下意图才能在有人加入机器人所在的服务器时收到警报

const client = new Discord.Client(intents : ["GUILD_MEMBERS"])

the official documentation中查看更多意图

最后,它看起来像:

const Discord = require('discord.js')
const client = new Discord.Client(intents : ["GUILD_MEMBERS"])

client.on('guildMemberAdd', guildMember => 
        console.log(guildMember);
        let role = guildMember.guild.roles.cache.find(role => role.name == 'member');
        guildMember.roles.add(role.id);
    
        guildMember.guild.channels.get('the channel id')).send(`welcome <@$guildMember.id> dont forget to 
        check the rules`);
    );

还要确保您没有将client.on('guildMemberAdd',...) 放在client.on('message',..) 中,它们需要分开。

【讨论】:

我忘了添加 guild_members 意图,但现在有人加入服务器时会出错:TypeError: "899366272100339752".send is not a function 你得到一个ID,确保它是Channel 这是一个与问题无关的不同问题。如果此答案解决了相关问题,请打勾

以上是关于为啥我的欢迎信息不起作用(discord.js)的主要内容,如果未能解决你的问题,请参考以下文章

为啥 startWithPrefix 在 discord.js v13 中不起作用?

为啥我的 Discord.js 欢迎消息中出现“无效的表单正文”错误?

为啥我的不和谐机器人命令不起作用

discord.js 我的代码不起作用,在终端中显示 typeError 但我不知道出了啥问题

Discord.js mod bot ban 命令不起作用

Discord.js 关于消息命令不起作用