为 discord.js v12 创建一个自动角色

Posted

技术标签:

【中文标题】为 discord.js v12 创建一个自动角色【英文标题】:make an autorole for discord.js v12 【发布时间】:2021-02-09 20:01:00 【问题描述】:

我想让我的机器人在我的朋友第一次加入我的服务器时自动扮演角色:我已经尝试过这个我的 VPS 节点版本:12.19.0v:?

client.on('guildMemberAdd', member => 
console.log('User @' + member.user.tag + ' has joined the server!');
var role = member.guild.roles.cache.find(role => role.name == "Newbie")
let user = member.user
user.roles.add(role);
);

但没有任何效果!请帮帮我

【问题讨论】:

console.log() 是否写入控制台? 你是什么意思?它在我的视觉中是什么:prnt.sc/v7z2m8 这能回答你的问题吗? What is the difference between a User and a GuildMember in discord.js?你应该使用message.member 另外,“不起作用”不足以提供获得帮助的信​​息。你有任何错误吗? 从字面上看没有任何错误,只是当我的朋友加入时什么都没有发生! 【参考方案1】:

Discord 现在正在执行特权意图。 GUILD_MEMBERS Intent 是接收 guildMemberAddguildMemberUpdate 等事件所必需的。

要了解意图的工作原理以及如何使用它们,请查看discord.js' detailed guide。

另外,如 cmets 中所述,您需要使用 message.member 而不是 message.user

【讨论】:

【参考方案2】:

您需要了解会员和用户之间的区别。一个用户代表一个 Discord 帐户,一个成员代表一个在服务器中的用户。因此,例如要获取某人的标签,您需要执行user.tagmember.tag 将不起作用。昵称也一样,user.displayName 不起作用,因为用户是帐户,成员是服务器中的用户。你会改用member.displayName

不管怎样,放在哪里

let user = member.user
user.roles.add(role);

应该换成

member.roles.add(role);

这有望解决您的问题。

【讨论】:

我之前试过这个也不起作用,当有人在日志中加入我的服务器时我也没有收到!

以上是关于为 discord.js v12 创建一个自动角色的主要内容,如果未能解决你的问题,请参考以下文章

如何从用户 discord.js v12 中删除所有角色?

如何检查我的机器人是不是可以在 discord.js v12 中添加角色?

Discord.js V12 如何显示具有特定角色的所有成员?

如何检查用户是不是具有特定角色 discord.js v12? [复制]

如何添加 ID 保存在 JSON 文件 discord.js v12 中的角色?

Discord.js v12 角色查询