如何为Discord机器人的ban命令添加仅管理员可用的权限限制
实现方案
你可以通过校验消息发送者的服务器权限来限制只有管理员可调用该指令,Discord.js 内置了权限校验API,可以直接调用判断:
- 首先需要判断当前消息是否来自服务器(私信场景下不存在成员权限属性)
- 再校验发送者是否持有
BanMembers(封禁成员)或者Administrator(管理员)权限即可
修改后可用的代码如下:
client.on('message', async message =>{ if(message.author.bot) return; // 排除私信场景 if(!message.guild) return; // 校验发送者权限,无权限直接返回提示 if(!message.member.permissions.has(["BanMembers", "Administrator"])) { return message.channel.send("你没有管理员权限,无法使用该指令") } if(message.content === "ban"){ message.channel.send("用户已被封禁, lol") } })
如果你使用的是 discord.js v14 及以上版本,权限枚举需要从包内导入后使用,对应权限校验部分修改为:
const { PermissionsBitField } = require('discord.js'); // 把原来的权限校验行替换为下方代码 if(!message.member.permissions.has([PermissionsBitField.Flags.BanMembers, PermissionsBitField.Flags.Administrator]))
内容的提问来源于stack exchange,提问作者IHZAQ
相关产品推荐
相关产品推荐

