当前位置: 首页 > 知识库问答 >
问题:

我想将PermLvl添加到我的index.js-DISCORD. JS

严俊彦
2023-03-14

所以,最近我开始制作自己的机器人,我也不是最有经验的人,但我知道我在做什么。我打破了基本的不和。在Discord上提供了js索引。js指南,并且只是在其中添加了我自己的代码,而没有实际接触命令处理程序。

对于一些命令,我想有一个烫发水平,只有烫发水平

permlvl 1=管理消息^不是实际的代码只是一个例子,这样只有具有perm级别的用户才能使用它。

这是我的索引。目前:

    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!');
}
});

除了我的另一个客户。和客户端中的一些主要代码。在上面和底部的东西。这与索引中的命令处理程序有关,下面是实际命令中的配置:

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”命令中,作为唯一的permlv1,它是

        if (message.member.hasPermission("MANAGE_MESSAGES")) permlvl = 1;

但成员们仍然可以使用它他们对自己的角色也没有权限。

我尝试了一些配置,我尝试用AwesomeCommandHandler替换它,在这些代码中它不起作用,所以我返回。我找了一些不和谐的地方。js网站和一些堆叠的问题,但没有我在哪里可以找到答案,如果有人可以帮助我,无论是在找到答案还是给出答案,这将是伟大的。

共有1个答案

明正德
2023-03-14

您还需要检查用户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!');
}
});
 类似资料:
  • 我正在用Java和FXML编写一个messenger,我想在(chatBar)上显示用户当前的所有聊天。我的聊天在中,但我仍然无法将值添加到中。

  • 问题内容: 如何将servlets API添加到项目的pom.xml中 mvnrepository.com有很多servlet api和名称类似的项目,我不知道哪个是正确的。还是所有人都还好吗? 问题答案: 我相信大多数Web /应用程序服务器都捆绑了servlet api版本,因此您不希望将api捆绑到.war文件中。您需要找出服务器随附的版本,然后才能使用 用您的版本替换servlet-api

  • 问题内容: 我对git和詹金斯都很陌生。 我将密钥添加到bitbucket和本地计算机中时: 我可以克隆。 但是,当我将相同的url()添加到Jenkins存储库url时,出现以下错误: 问题答案: 您还需要为Jenkins用户设置ssh密钥。 通常的想法是,您登录到Jenkins框,并成为“ jenkins”用户。您可以为您的Jenkins用户打电话,所以请确保使用正确的名称。一旦成为Jenki

  • 我尝试使用和将添加到中,但无法将添加到中。我正在使用NetBeans和后端MySQL。请帮帮我. 编辑:谢谢,但我不知道如何分组。你能帮帮我吗?我有4列。第一列单元格包含项目名称,第二列单元格包含数量,第三列和第四列单元格连接JRadio按钮。然后我想在每一行中分组包含JRadio按钮的第三列和第四列单元格 编辑:如果我试图通过使用这个在jTable的自定义代码中添加radiobutton, ,那

  • 问题内容: 我正在尝试将pandas Dataframe(orders_df)中的两个现有列相乘- 价格(股票收盘价)和Amount(股票数量),并将计算结果添加到名为“值”的新列中。由于某些原因,当我运行此代码时,“值”列下的所有行均为正数,而某些行应为负数。在DataFrame的“操作”列下,有七行带有“出售”字符串,七行带有“购买”字符串。 请让我知道我在做什么错! 问题答案: 如果我们愿意

  • 我是新的和。 我想尝试一下。但我如何将该SDK添加到我的。在中有和Mac上的。我知道这是一个非常棘手的问题,但我找不到一个对我来说显而易见的解决方案。我是C#/。NET/MS开发人员希望在这个新世界中让我的脚湿润。据我所知,