Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

358
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda