【发布时间】:2021-01-18 01:11:40
【问题描述】:
你好我想知道bot是否可以注册用户的最高权限?知道是否可以这样做会很有帮助。
【问题讨论】:
标签: discord.js
你好我想知道bot是否可以注册用户的最高权限?知道是否可以这样做会很有帮助。
【问题讨论】:
标签: discord.js
您可以使用GuildMemberroleManager#highest获取成员的最高角色:
const highestRole = member.roles.highest
Discord.js 还可以为您计算成员的权限,使用 permissions 和 permissionsIn:
// The permissions for a member (all the permissions of their roles)
const permissions = member.permissions
// The permissions for a member, taking into account the permission overwrites
// for a channel
const permissionsInChannel = member.permissionsIn(channel)
【讨论】:
您可以使用GuildMemberRoleManager.highest 查看任何成员的最高角色。如果您要比较位置,可以使用Role.position 属性。
// example ban command
const target = message.mentions.members.first();
if (message.member.roles.highest.position <= target.roles.highest.permission)
return message.channel.send('The target has a higher position than you.');
另一种更简单的方法是使用Role.comparePositionTo()
if (target.roles.highest.comparePositionTo(message.member.roles.highest) < 1)
return message.channel.send('The target has a higher position than you');
要查看成员的权限,您可以使用GuildMember.permissions。如果只想查看用户是否有一定的权限,可以使用GuildMember.hasPermissions
if (!message.member.hasPermission('KICK_MEMBERS'))
return message.channel.send('You do not have sufficient permissions.');
如果您只想考虑一个具有特定权限覆盖的频道,您也可以使用GuildMember.permissionsIn()。
const channel = message.client.channels.cache.find(channel => channel.name === 'hammer-time');
if (!message.member.permissionsIn(channel).has('KICK_MEMBERS'))
return message.channel.send('You do not have sufficient permissions.');
您可以查看权限标志的完整列表(如KICK_MEMBERS、BAN_MEMBERS 等)here
【讨论】: