如何解决我想将PermLvl添加到我的index.js-DISCORD.JS
因此,最近我开始制作自己的机器人,我也不是最有经验的人,但是我知道我在做什么。我退出了《 Discord.js指南》中提供的基本Discord.js索引,并向其中添加了自己的代码,而没有实际接触命令处理程序。
对于某些命令,我想要一个仅具有该烫发级别的烫发级别
permlvl 1 =管理邮件 ^并不是实际的代码,只是一个示例,这样,只有具有相应权限级别的用户才能使用它。
此刻是我的index.js。
const Discord = require('discord.js');
const config = require('./commands/config.json');
const fs = require('fs');
const { dir } = require('console');
const client = new Discord.Client();
client.commands = new Discord.Collection();
const Fun = fs.readdirSync(`./commands/Fun/`).filter(file => file.endsWith('.js'));
for (const file of Fun) {
const command = require(`./commands/Fun/${file}`);
client.commands.set(command.name,command);
}
const General = fs.readdirSync(`./commands/General/`).filter(file => file.endsWith('.js'));
for (const file of General) {
const command = require(`./commands/General/${file}`);
client.commands.set(command.name,command);
}
const Information = fs.readdirSync(`./commands/Information/`).filter(file => file.endsWith('.js'));
for (const file of Information) {
const command = require(`./commands/Information/${file}`);
client.commands.set(command.name,command);
}
client.elevation = message => {
if (message.channel.type === 'dm') return;
let permlvl = 0;
if (message.member.hasPermission("MANAGE_MESSAGES")) permlvl = 1;
if (message.member.hasPermission("BAN_MEMBERS")) permlvl = 2;
if (message.member.hasPermission("MANAGE_GUILD")) permlvl = 3;
if (message.member.id === message.guild.ownerID) permlvl = 4;
if (message.author.id === config.devID) permlvl = 5;
return permlvl;
};
client.on("ready",() => {
console.log(`${client.user.tag} has started,with ${client.users.cache.size} users,in ${client.channels.cache.size} channels of ${client.guilds.cache.size} guilds.`);
client.user.setActivity(`Serving ${client.users.cache.size} users in ${client.guilds.cache.size} server.`,{ url: 'https://www.twitch.tv/discordsstream',type: 'STREAMING' });
)};
client.on('message',message => {
if (!message.content.startsWith(config.prefix) || message.author.bot) return;
const args = message.content.slice(config.prefix.length).trim().split(/ +/);
const commandName = args.shift().toLowerCase();
const command = client.commands.get(commandName)
|| client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
if (!command) return;
if (command.guildOnly && message.channel.type === 'dm') {
return message.reply('I can\'t execute that command inside DMs!');
}
if (command.args && !args.length) {
let reply = `You didn't provide any arguments,${message.author}!`;
if (command.usage) {
reply += `\nThe proper usage would be: \`${config.prefix}${command.name} ${command.usage}\``;
}
return message.channel.send(reply);
}
try {
command.execute(message,args);
} catch (error) {
console.error(error);
message.reply('there was an error trying to execute that command!');
}
});
,除了我的另一个client.on以及client.on中的一些主要代码以及底部的内容。这与索引中的命令处理程序有关,这是实际命令中的配置:
module.exports = {
name: 'ping',description: 'See the bots response time!',usage: '',guildOnly: false,permLevel: 0,aliases: ['responsetime','pong'],execute(message,args,async) {
}
问题是,当运行命令时,它的工作错误为0,但是permlvl不起作用,
我尝试将“ say”命令添加为仅permlvl 1,
if (message.member.hasPermission("MANAGE_MESSAGES")) permlvl = 1;
,但成员仍然可以使用它。 -他们也没有权限。
我尝试使用config进行一些操作,尝试用AwesomeCommandHandler替换它,但在该代码中它不起作用,所以我恢复了原样。我搜索了一些discord.js网站,以及一些堆栈问题,但找不到我的答案,如果有人可以帮助我,无论是找到答案还是给出答案,这都是一种很好的方式。
解决方法
您还需要检查用户permLevel是否高于或等于命令一:
const Discord = require('discord.js');
const config = require('./commands/config.json');
const fs = require('fs');
const { dir } = require('console');
const client = new Discord.Client();
client.commands = new Discord.Collection();
const Fun = fs.readdirSync(`./commands/Fun/`).filter(file => file.endsWith('.js'));
for (const file of Fun) {
const command = require(`./commands/Fun/${file}`);
client.commands.set(command.name,command);
}
const General = fs.readdirSync(`./commands/General/`).filter(file => file.endsWith('.js'));
for (const file of General) {
const command = require(`./commands/General/${file}`);
client.commands.set(command.name,command);
}
const Information = fs.readdirSync(`./commands/Information/`).filter(file => file.endsWith('.js'));
for (const file of Information) {
const command = require(`./commands/Information/${file}`);
client.commands.set(command.name,command);
}
client.elevation = message => {
if (message.channel.type === 'dm') return;
let permlvl = 0;
if (message.member.hasPermission("MANAGE_MESSAGES")) permlvl = 1;
if (message.member.hasPermission("BAN_MEMBERS")) permlvl = 2;
if (message.member.hasPermission("MANAGE_GUILD")) permlvl = 3;
if (message.member.id === message.guild.ownerID) permlvl = 4;
if (message.author.id === config.devID) permlvl = 5;
return permlvl;
};
client.on("ready",() => {
console.log(`${client.user.tag} has started,with ${client.users.cache.size} users,in ${client.channels.cache.size} channels of ${client.guilds.cache.size} guilds.`);
client.user.setActivity(`Serving ${client.users.cache.size} users in ${client.guilds.cache.size} server.`,{ url: 'https://www.twitch.tv/discordsstream',type: 'STREAMING' });
)};
client.on('message',message => {
if (!message.content.startsWith(config.prefix) || message.author.bot) return;
const args = message.content.slice(config.prefix.length).trim().split(/ +/);
const commandName = args.shift().toLowerCase();
const command = client.commands.get(commandName)
|| client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
if (!command) return;
if (command.guildOnly && message.channel.type === 'dm') {
return message.reply('I can\'t execute that command inside DMs!');
}
if (command.args && !args.length) {
let reply = `You didn't provide any arguments,${message.author}!`;
if (command.usage) {
reply += `\nThe proper usage would be: \`${config.prefix}${command.name} ${command.usage}\``;
}
return message.channel.send(reply);
}
const userPermLevel = client.elevation(message);
const commandPermLevel = command.permLevel;
if(commandPermLevel > userPermLevel){
return message.channel.send('You do not have required permissions');
}
try {
command.execute(message,args);
} catch (error) {
console.error(error);
message.reply('there was an error trying to execute that command!');
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。