Node.js 具有用户权限、客户端权限和限制的Discord.js命令处理程序
我怎样才能像commando那样在导出中检查用户权限、客户端权限、添加限制和定义参数 我的消息事件如下所示Node.js 具有用户权限、客户端权限和限制的Discord.js命令处理程序,node.js,discord,discord.js,commando,Node.js,Discord,Discord.js,Commando,我怎样才能像commando那样在导出中检查用户权限、客户端权限、添加限制和定义参数 我的消息事件如下所示 client.on('message', async (message) => { if (message.author.bot) return; if (!message.guild) return; let prefix await db.collection('guilds').doc(message.guild.id).get().then(
client.on('message', async (message) => {
if (message.author.bot) return;
if (!message.guild) return;
let prefix
await db.collection('guilds').doc(message.guild.id).get().then((q) => {
if (q.exists) {
prefix = q.data().prefix || config1.prefix_mention;
} else {
prefix = "." || config1.prefix_mention;
}
})
const prefixRegex = new RegExp(`^(<@!?${client.user.id}>|${escapeRegex(prefix)})\\s*`);
if (!prefixRegex.test(message.content)) return;
const [ matchedPrefix ] = message.content.match(prefixRegex);
const args = message.content.slice(matchedPrefix.length).trim().split(/ +/g);
const cmd = args.shift().toLowerCase();
if (cmd.length === 0) return;
let command = client.commands.get(cmd);
if (!command) command = client.commands.get(client.aliases.get(cmd));
if (!message.channel.permissionsFor(client.user).has("SEND_MESSAGES")) return;
if (command)
command.run(client, message, args, db);
})
您可以获取message.channel的client.user权限和message.member权限,然后使用has进行检查
关于节流,可以使用冷却。这就是如何使用它的好方法
const{Permissions}=require'discord.js';
ifcommand.clientPermissions.length>0{
让clientChannelPermissions=message.channel.permissionsFormessage.guild.me;
clientChannelPermissions=新权限clientChannelPermissions.bitfield;
如果!clientChannelPermissions.hascommand.clientPermissions{
让missingPermissions=command.clientPermissions.filterperm=>clientChannelPermissions.hasperm==false.join','
返回消息。答复`我无法执行此命令,缺少${missingPermissions}的权限`
}
}
ifcommand.userPermissions.length>0{
让memberChannelPermissions=message.channel.permissionsFormessage.member;
memberChannelPermissions=新权限memberChannelPermissions.bitfield;
如果!memberChannelPermissions.hascommand.clientPermissions{
让missingPermissions=command.clientPermissions.filterperm=>memberChannelPermissions.hasperm==false.join','
返回消息。回复`我无法执行此命令,您缺少${missingPermissions}的权限`
}
}
检查参数呢?这个问题需要更详细的研究,命令参数可以是用户、角色、频道、关键字、它们的顺序,并且严格遵守某些参数,这些参数可以表示为ID、userTAG、Tention、name,在某些地方也很重要。因此,我在这里无法给出一些通用且简单的解决方案。未捕获的承诺拒绝范围错误:无效的权限字符串或数字。第行clientChannelPermissions=新权限clientChannelPermissions;我授予的权限是clientPermissions:[嵌入链接,发送消息],@ETHYT我正在添加一些修复,忘记返回对象的权限。。。
name: 'osu',
group: 'search',
memberName: 'osu',
description: 'Responds with information on an osu! user.',
clientPermissions: ["EMBED_LINKS","SEND_MESSAGES"],
userPermissions:['VIEW_CHANNEL'],
args: [
{
key: 'user',
prompt: 'What user would you like to get information on?',
type: 'string'
}
],
async run(client ,message ,args) {
//some code here
}