Discord.js如何检查机器人是否具有服务器/频道权限?

3

我想要检查两件事情:

  1. 检查我的机器人是否拥有特定的服务器权限(如果具备该权限,则返回true;否则返回false)
  2. 检查我的机器人是否拥有特定的频道权限(根据包含特定权限的频道设置的值返回true或false。例如,我可能已经在频道设置中添加了我的机器人并将"管理服务器"权限设置为true。如何读取这个信息?)
3个回答

6

找到了!

要查找机器人的权限,我们假设一个用户发送了一条消息(msg =>):

频道权限:

msg.guild.me.permissionsIn(msg.channel).has(<permission string here>)

服务器权限

msg.guild.me.hasPermission(<permission string here>)

3

在v14中,您现在需要使用Guild内的MemberManager来访问me

像这样

msg.guild.members.me?.permissionsIn(message.channel).has(permissions);

2

LDinos' answer 对于 Discord.js v12 是正确的。然而,Discord.js v13 中删除了 hasPermission 权限,转而使用 permissions.has

频道权限:

msg.guild.me.permissionsIn(msg.channel).has(permissions)

公会(服务器)权限:
msg.guild.me.permissions.has(permissions)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接