由于像这样 https://media.discordapp.net/attachments/223867697312694272/723382952330919976/image0.png
相反,我的机器人允许用户将上面的角色添加给他们自己或其他用户,只要他们具有所需的权限 https://cdn.discordapp.com/attachments/223867697312694272/723382993384767550/image0.png
Instead my bot allows the user to add the role above them to themselves or other users as long as they have the required permissions https://cdn.discordapp.com/attachments/223867697312694272/723382993384767550/image0.png
我的代码:
const Discord = require("discord.js");
module.exports.run = async (bot, message, args) => {
if (!message.member.hasPermission("MANAGE_ROLES")) return message.channel.send("You don't have permissions to use this!");
let xdemb = new Discord.RichEmbed()
.setColor("RANDOM")
.setTitle("Role Command")
.addField("Description:", `Adds/removes a role to/from a member`, true)
.addField("Usage:", "`?role` [user] roleName", true)
.addField("Example:" ,"`?role` @user goodrole", true)
let member = message.mentions.members.first();
if(!member) return message.channel.send(xdemb)
let role = args.slice(2).join(" ")
if(!role) return message.channel.send("Provide a role to assign")
let gRole = message.guild.roles.find(r => r.name.toLowerCase() === role.toLowerCase())
if(!gRole) return message.channel.send(`There's no role with the name `${role}``)
if(member.roles.has(gRole.id)) {
member.removeRole(gRole.id)
message.channel.send(`Removed role `${role}` from **${member.user.username}**`)
} else {
member.addRole(gRole.id)
message.channel.send(`Added role `${role}` to **${member.user.username}**`)
}
}
module.exports.help = {
name: "role"
}
Discord.js 中的 Role 类有一个 position 属性,表示其在角色管理器中的位置.
The Role class in Discord.js has a position property which represents its position in the role manager.
GuildMember 类有一个名为 roles,它的类型是 GuildMemberRoleManager.GuildMemberRoleManager 类有一个名为 highest,指向成员拥有的排名最高的角色.
The GuildMember class has a property named roles, which is of type GuildMemberRoleManager. The GuildMemberRoleManager class has a property named highest, which points to the highest ranked role that the member has.
所以.为了确保机器人不会在层次结构中为成员提供比他们更高的角色,您可以将他们想要的角色的 position 与 position 进行比较他们目前的最高职位.
So. To make sure that the bot doesn't give a member a role that is higher than them in the hierarchy, you can compare the position of the role they want with the position of their current highest role.
这篇关于用户角色层次结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
discord.js v12:我如何等待 DM 频道中的消息?discord.js v12: How do I await for messages in a DM channel?(discord.js v12:我如何等待 DM 频道中的消息?)
如何让我的机器人提及发出该机器人命令的人how to make my bot mention the person who gave that bot command(如何让我的机器人提及发出该机器人命令的人)
如何修复必须使用导入来加载 ES 模块 discord.jsHow to fix Must use import to load ES Module discord.js(如何修复必须使用导入来加载 ES 模块 discord.js)
如何列出来自特定服务器的所有成员?How to list all members from a specific server?(如何列出来自特定服务器的所有成员?)
Discord bot:修复“找不到 FFMPEG"Discord bot: Fix ‘FFMPEG not found’(Discord bot:修复“找不到 FFMPEG)
使用 discord.js 加入 discord 服务器时的欢迎消息Welcome message when joining discord Server using discord.js(使用 discord.js 加入 discord 服务器时的欢迎消息)