Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

360
Visualizações
Discord.js v13 ¿Cómo evitar que los comandos mod funcionen en mods?

Así que quería hacer un comando de silencio para mi bot de Discord. Se supone que debe silenciar a un usuario mencionado hasta que se active mediante otro comando (WIP), además, debe haber una opción para dar una razón. Si no se proporciona ningún motivo, simplemente dice Motivo: ninguno. Me las arreglé para restringir el acceso del comando a un rol de mod (aunque en el siguiente código verifica el indicador MODERATE_MEMBERS, porque esa es una mejor manera de hacerlo) e hice que devolviera todos los mensajes de error requeridos como "I can' t silenciar a ese usuario" y tal. Aquí está mi código:

 const { Permissions } = require('discord.js'); module.exports = { name: 'mute', description: "Mutes a user for an unlimited amount of time.", execute(message, args) { const target = message.mentions.members.first(); let muteReason = args.join(" ").slice(22); if(message.member.permissions.has(Permissions.FLAGS.MODERATE_MEMBERS)) { if(target) { if(target.id == '943093289031176203') { message.reply("I can't mute myself.") } else if(message.member == target) { message.reply("You can't mute yourself!") } else if(target.permissions.has(Permissions.FLAGS.MODERATE_MEMBERS)) { if(!muteReason) { muteReason = "None" } let muteRole = message.guild.roles.cache.find(role => role.name === "muted"); let memberTarget = message.guild.members.cache.get(target.id); memberTarget.roles.add(muteRole.id); message.reply(`<@${memberTarget.user.id}> has been muted. Rason: ` + muteReason); } else { message.reply("I can't mute that user.") } } else { message.reply("You have to mention a valid member of this server.") } } else { message.reply("You can't use that.") } } }

El problema que tengo es que los moderadores pueden silenciar a otros moderadores, lo que no debería suceder. Básicamente, necesito una solución que haga que el comando no funcione con otras personas que tienen un rol de moderador o un comando que no funcione con personas con ciertos permisos (preferiblemente el segundo, ya que será más útil).

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puede verificar los permisos de moderador en el usuario especificado, luego solo silenciar si el usuario no tiene el permiso. De esta manera, no permitirá que las modificaciones se silencien.

 //... let memberTarget = message.guild.members.cache.get(target.id); if (memberTarget.permissions.has(Permissions.FLAGS.MODERATE_MEMBERS)) { message.reply(`<@${memberTarget.user.id}> is a Moderator. You cant' mute them.`); } else { memberTarget.roles.add(muteRole.id); message.reply(`<@${memberTarget.user.id}> has been muted. Reason: ` + muteReason); } //...
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda