Code Examples

Some examples of Cler codes

Here is the kick command [Updated] for the new version Discord v14

const { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder } = require('discord.js');
const { query } = require('../db'); // Importar el conector de PostgreSQL

module.exports = {
  data: new SlashCommandBuilder()
    .setName('kick')
    .setDescription('Expulsa a un miembro del servidor.')
    .addUserOption(option =>
      option.setName('user')
        .setDescription('El usuario que deseas expulsar')
        .setRequired(true)
    )
    .addStringOption(option =>
      option.setName('reason')
        .setDescription('Razón para expulsar al miembro')
        .setRequired(false)
    )
    .setDefaultMemberPermissions(PermissionFlagsBits.KickMembers), // Permisos de expulsión

  name: 'kick', // Este es el nombre para los comandos con prefijo
  description: 'Expulsa a un miembro del servidor.',
  
  async executeSlash(interaction) {
    const member = interaction.options.getMember('user');
    const reason = interaction.options.getString('reason') || 'No se proporcionó ninguna razón.';
    await this.kickMember(interaction, member, reason);
  },
  
  async executePrefix(message, args) {
    const member = message.mentions.members.first();
    if (!member) {
      return message.reply('<:440warning:1287542257985126501> | Por favor menciona a un usuario válido.');
    }

    // El resto del mensaje puede contener el motivo, si se proporciona
    const reason = args.slice(1).join(' ') || 'No se proporcionó ninguna razón.';
    await this.kickMember(message, member, reason);
  },

  async kickMember(context, member, reason) {
    const isInteraction = !!context.isCommand;

    // Verificar si tiene permisos de expulsión (solo en prefijos)
    if (!isInteraction && !context.member.permissions.has('KICK_MEMBERS')) {
      return context.reply({ content: '<:win11erroicon:1287543137505378324> | No tienes permiso para expulsar miembros.', ephemeral: true });
    }

    if (!member) {
      return context.reply({ content: '<:440warning:1287542257985126501> | Por favor selecciona a un miembro válido.', ephemeral: true });
    }

    if (!member.kickable) {
      return context.reply({ content: '<a:denyxbox:1287542408082358292> | No puedo expulsar a este miembro.', ephemeral: true });
    }

    try {
      // Intentar enviar un mensaje directo al usuario antes de expulsarlo
      try {
        await member.send(`Has sido expulsado del servidor ${context.guild.name} por ${context.user.tag}. Razón: ${reason}`);
      } catch (error) {
        console.log(`[LOG] No se pudo enviar un mensaje directo a ${member.user.tag}.`);
      }

      // Expulsar al miembro
      await member.kick(reason);

      // Crear el embed para notificar al canal
      const kickEmbed = new EmbedBuilder()
        .setColor(0xff0000) // Rojo
        .setTitle('Miembro Expulsado')
        .setDescription(`${member.user.tag} ha sido expulsado del servidor.`)
        .addFields(
          { name: '<a:9755discordstaffanimated:1287542237571321896> Moderador', value: `${context.user.tag}`, inline: true },
          { name: '<:discordcopyid:1287542182080679997> Miembro', value: `${member.user.tag}`, inline: true },
          { name: '<:discordeditprofile:1287542190926467094> Razón', value: reason, inline: false }
        )
        .setThumbnail(member.user.displayAvatarURL())
        .setTimestamp()
        .setFooter({ text: 'Expulsión ejecutada', iconURL: context.user.displayAvatarURL() });

      // Enviar el embed como respuesta
      await context.reply({ embeds: [kickEmbed] });

      // Registrar el kick en la tabla 'kicks'
      await query('INSERT INTO kicks (user_id, moderator_id, reason, timestamp) VALUES ($1, $2, $3, $4)', [
        member.user.id,
        context.user.id,
        reason,
        new Date(),
      ]);

      // Registrar el evento en 'moderation_events'
      await query('INSERT INTO moderation_events (user_id, moderator_id, action, reason, timestamp) VALUES ($1, $2, $3, $4, $5)', [
        member.user.id,
        context.user.id,
        'kick',
        reason,
        new Date(),
      ]);

      // Log en consola
      console.log(`[LOG] ${context.user.tag} ha expulsado a ${member.user.tag} en ${context.guild.name} por ${reason}`);
    } catch (error) {
      console.error(error);
      context.reply({ content: 'Hubo un error al expulsar a este miembro.', ephemeral: true });
    }
  },
};

module.exports.help = {
  name: 'kick',
  description: 'Expulsa a un miembros del servidor.',
  usage: 'kick <user> <reason>',
};

Here is an example for the Love command

Here is an example for the Bc command

Last updated

Was this helpful?