Cler es una bot de Discord para administrar tu servidor, cuenta con multiples comandos como de administración, utilidad y de diversión.
v4.7.20
c!
o el Slash /
Para comandos de moderaciónPostdata: Si abandoné este proyecto es porque me aburrí o hice una mejor versión.
Para instalar y ejecutar Cler localmente, sigue estos pasos:
Clona el repositorio:
#BASH1git clone git@github.com:Rawierdt/Cler.git 2
Navega al directorio del proyecto:
#BASH1cd Cler 2
Crea un archivo de configuración .env dentro del directorio:
#BASH1BOT_TOKEN=YOUR_BOT_TOKEN 2CLIENT_ID=YOUR_CLIENT_ID 3GUILD_ID=YOUR_GUILD_ID 4PREFIX='YOUR_PREFIX' 5COLOR='0x5e10f8' 6OWNER=YOUR_DISCORD_ID 7
Instala las dependencias:
#BASH1npm install 2
Ejecuta el comando de carga global:
#BASH1npm deploy-commands.js 2
Ejecuta el comando de inicio:
#BASH1npm start 2
Dirigete a tu servidor de discord al que invitaste a tu bot y ejecuta el comando de /help.
Lista completa de comandos en Documentación
Estructura y Diagramación en Repositorio de Github
/mute <@member> <reason>
Silencia al miembro etiquetado./unmute <@member> <reason>
Quita el Silenco del miembro etiquetado./set_mute <@rol>
Define el rol de Mute en el servidor Importante./ban <@member> <reason>
Expulsa del servidor de manera difinitiva al miembro etiquetado./unban <@member>
Revoca la prohibición del comando anterior./kick <@member> <reason>
Expulsa del servidor al miembro etiquetado./softban <@member> <reason>
Expulsa del servidor al miembro etiquetado de manera temporal por 7 dias./warn <@member> <reason>
Notifica al miembro seleccionadoLista completa de comandos en Documentación
Ver Avatar
Envia el avatar de un usuario Gif / Imagen.Lista completa de comandos en Documentación
#JAVASCRIPT1const { SlashCommandBuilder, EmbedBuilder, PermissionFlagsBits } = require('discord.js'); 2const db = require('megadb'); 3const warnDB = new db.crearDB('warnings'); // Usar crearDB para inicializar la base de datos 4 5module.exports = { 6 data: new SlashCommandBuilder() 7 .setName('warn') 8 .setDescription('Advierte a un miembro del servidor.') 9 .addUserOption(option => 10 option.setName('user') 11 .setDescription('El usuario que deseas advertir') 12 .setRequired(true)) 13 .addStringOption(option => 14 option.setName('reason') 15 .setDescription('Razón de la advertencia') 16 .setRequired(false)) 17 .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers), // Permisos de advertencia 18 19 name: 'warn', // Nombre para comandos con prefijo 20 description: 'Advierte a un miembro del servidor.', 21 22 async executeSlash(interaction) { 23 const member = interaction.options.getMember('user'); 24 const reason = interaction.options.getString('reason') || 'No se proporcionó razón.'; 25 await this.warnMember(interaction, member, reason); 26 }, 27 28 async executePrefix(message, args) { 29 const member = message.mentions.members.first(); 30 const reason = args.slice(1).join(' ') || 'No se proporcionó razón.'; 31 if (!member) { 32 //<a:denyxbox:1287542408082358292> son emojis globales, subidos desde discord dev portal 33 return message.reply('<a:denyxbox:1287542408082358292> | Por favor menciona a un usuario válido.'); 34 } 35 await this.warnMember(message, member, reason); 36 }, 37 38 async warnMember(context, member, reason) { 39 const isInteraction = !!context.isCommand; 40 41 // Verificar si tiene permisos de advertencia (solo en prefijos) 42 if (!isInteraction && !context.member.permissions.has('MODERATE_MEMBERS')) { 43 return context.reply({ content: '<:win11erroicon:1287543137505378324> | No tienes permiso para advertir miembros.', ephemeral: true }); 44 } 45 46 if (!member) { 47 return context.reply({ content: '<:440warning:1287542257985126501> | Por favor selecciona a un miembro válido.', ephemeral: true }); 48 } 49 50 try { 51 // Intentar enviar un mensaje directo al usuario 52 try { 53 await member.send(`<a:1302moderatorprogramsalumnia:1287542225399709737> Has recibido una advertencia en el servidor ${context.guild.name} por ${context.user.tag}. Razón: ${reason}`); 54 } catch (error) { 55 console.log(`[LOG] No se pudo enviar un mensaje directo a ${member.user.tag}.`); 56 } 57 58 // Registrar advertencia en MegaDB 59 if (!await warnDB.has(`warnings.${member.id}`)) { 60 await warnDB.set(`warnings.${member.id}`, []); 61 } 62 await warnDB.push(`warnings.${member.id}`, { 63 reason: reason, 64 moderator: context.user.tag, 65 timestamp: new Date().toISOString() 66 }); 67 68 // Crear embed para notificar al canal 69 const warnEmbed = new EmbedBuilder() 70 .setColor(0xffff00) // Amarillo 71 .setTitle('<a:1302moderatorprogramsalumnia:1287542225399709737> **ADVERTENCIA**') 72 .setDescription(`${member.user.tag} ha recibido una advertencia.`) 73 .addFields( 74 { name: '<a:9755discordstaffanimated:1287542237571321896> Moderador', value: `${context.user.tag}`, inline: true }, 75 { name: '<:discordcopyid:1287542182080679997> Miembro', value: `${member.user.tag}`, inline: true }, 76 { name: '<:discordeditprofile:1287542190926467094> Razón', value: reason, inline: false } 77 ) 78 .setThumbnail(member.user.displayAvatarURL()) 79 .setTimestamp() 80 .setFooter({ text: 'Advertencia registrada', iconURL: context.user.displayAvatarURL() }); 81 82 // Enviar el embed como respuesta 83 await context.reply({ embeds: [warnEmbed] }); 84 85 // Log en consola 86 console.log(`[LOG] ${context.user.tag} ha advertido a ${member.user.tag} en ${context.guild.name}`); 87 } catch (error) { 88 console.error(error); 89 context.reply({ content: 'Hubo un error al advertir a este miembro.', ephemeral: true }); 90 } 91 }, 92}; 93
El apartado o modulo más complejo es el index.js, pero debido a que es muy largo no pienso ponerlo, recomiendo revisar el github del proyecto.
Pero en resumen el proyecto lo revivi, si lo abandono de nuevo es porque me aburri jajaja, asi que ahora tiene mas comandos y tiene una funcion de guardar, a si, lo aloje en un intel celeron con poca ram, de igual forma en otro blog daré las caracteristicas del NAS y de la PC.
Contributions, issues and feature requests are welcome! Feel free to check issues page.
Haz un Fork del Repositorio: Crea una copia del repositorio en tu cuenta de GitHub.
Crea una Rama:
#BASH1git checkout -b nombre-de-tu-rama 2
Haz tus Cambios: Realiza las modificaciones que deseas agregar.
Commit y Push:
#BASH1git add . 2git commit -m "Descripción de los cambios" 3git push origin nombre-de-tu-rama 4
Crea un Pull Request: Abre un Pull Request desde tu rama a la rama principal del repositorio.
Give a ⭐️ if this project helped you!