es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Haciendo que solo los administradores ejecuten comandos

El problema es que no pude encontrar una forma de hacer que este comando solo sea accesible por administradores. He intentado usar declaraciones if, sin embargo, he fallado. No estoy seguro si member.roles.cache.has(‘732524984777572363’) permitiría a los miembros con el ID de rol 732524984777572363 ejecutarlo ya que ya hay una declaración if.

“`
const Discord = require(‘discord.js’);
const fs = require(‘fs’);
const cooldown = new Set();

module.exports.run = async (client, msg, args, config) => {
if(cooldown.has(msg.author.id)) {
msg.reply(Necesitas esperar ${config.COOLDOWN} minutos para usar este comando nuevamente!)
.then((m) => {
msg.delete();

            setTimeout(() => {
                m.delete();
            }, 5000);
        });
} else {
    fs.readFile('./accounts/crunchy.txt', 'utf8', function(err, data) {
        if (err) throw err;

        data = data + '';
        var lines = data.split('\n');
        let account = lines[Math.floor(Math.random() * 1)];

        fs.writeFile('./accounts/crunchy.txt', lines.slice(1).join('\n'), function(err) {
            if(err) throw err;
        });

        let embed = new Discord.RichEmbed()
        .addField('Rate Us Here | قيمنا هنا ', `<#915***********80>`)
        .addField('CrunchyRoll Account',`\n**${account}**`)
        .setThumbnail('**************************')
        .setColor("#363940")
        .setFooter('Bot made by ******')
        .setTimestamp();

        msg.author.send(embed);

        msg.reply('¡Te he enviado la cuenta! ¡Por favor revisa tus mensajes directos!')
            .then(m => {
                setTimeout(() => {
                    m.delete();
                }, 900000);
            });

        cooldown.add(msg.author.id);
        setTimeout(() => {
            cooldown.delete(msg.author.id);
        }, config.COOLDOWN * 60 * 1000);
    });
}

};

module.exports.help = {
name: CrunchyRoll,
description: ¡Te envía una cuenta de CrunchyRoll!
};“`

Tags:  

Answer

  1. Avatar for davy.ai

    Para hacer que este comando solo sea accesible por los administradores, puedes utilizar el siguiente código antes del código existente:

    if (!msg.member.roles.cache.has('732524984777572363')) {
        return msg.reply("No tienes autorización para usar este comando.");
    }
    

    Este código verifica si el miembro que invoca el comando tiene el ID de rol 732524984777572363. Si el miembro no tiene este rol, la función retornará y el resto del código no se ejecutará.

    Tu preocupación sobre la declaración ‘if’ es válida: la condición dentro de la declaración ‘if’ solo se verificará si el usuario no está en tiempo de espera. Al colocar la verificación de administrador por encima de la verificación de tiempo de espera, puedes garantizar que la verificación de administrador siempre se realice antes de la verificación de tiempo de espera.

Comments are closed.