如何从提及 discord.js 添加角色

Posted

技术标签:

【中文标题】如何从提及 discord.js 添加角色【英文标题】:How to add a role from mention discord.js 【发布时间】:2021-08-02 00:43:50 【问题描述】:

好的,所以我在 discord.js 中制作了一个机器人,我想要一种添加角色的方法。现在我有这个

let role = message.member.guild.roles.cache.find(role => role.name === "MyRole");
message.guild.members.cache.get(message.author.id).roles.add(role);

但我想知道是否有一种方法可以使用@提及来获得角色。所以我可以为所有角色使用一个 cmd,而不是为我希望机器人添加的每个角色使用一个 cmd

【问题讨论】:

你有什么尝试让它与提及一起工作? 类似:let role = message.roles.first() 【参考方案1】:

有两种获得角色的方法。一种方法是您上面列出的,通过角色名称。另一种方法是通过ID,这是我使用的。

我将首先获取消息中提到的角色的 ID,然后从中获取 role 并继续将其添加到 message.author


代码:

//checks if the user has mentioned any roles
if (message.mentions.roles.size === 0) return message.channel.send("You didn't mention any roles.");
let roleID = message.mentions.roles.first().id;
let role = message.member.guild.roles.cache.get(roleID);
message.guild.members.cache.get(message.author.id).roles.add(role);

【讨论】:

我不断收到TypeError: Cannot read properties of undefined (reading 'id'),我该如何解决这个问题? 如果您使用的是 discord.js v13,那么它可能已经改变。此代码仅与 discord.js v12 相关。

以上是关于如何从提及 discord.js 添加角色的主要内容,如果未能解决你的问题,请参考以下文章

如何提及使用 Chat Discord.JS 发送消息的用户?

Discord.js v12 - 如何添加角色?

如何从 Discord.js 中的用户名中查找用户 ID?

当有人对消息做出反应时,我如何让我的 discord.js 机器人添加角色?

Discord.js 如何提及消息作者?

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