arisu/src/commands/Community/adicionar_membro.js
2025-04-27 02:31:54 +01:00

81 lines
2.8 KiB
JavaScript

// comandos/add.js
const { InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, MessageFlags } = require('discord.js');
const conn = require('../../../database/db'); // Ajusta o caminho
console.error("--------------------- adicionar_membro.js ---------------------");
module.exports = {
data: new SlashCommandBuilder()
.setName('addmembro')
.setDescription('Adiciona o servidor à base de dados.')
.addUserOption(option =>
option.setName('nome')
.setDescription('The member to ban')
.setRequired(true)
)
.addStringOption(option =>
option.setName('cargo')
.setDescription('Escolhe uma opção')
.setRequired(true)
.setAutocomplete(true) // ATENÇÃO AQUI
),
//.addStringOption(option =>
// option.setName('raça')
// .setDescription('Escolhe uma opção')
// .setRequired(true)
// .setAutocomplete(true) // ATENÇÃO AQUI
//),
async execute(interaction) {
const nome = interaction.options.getUser('nome');
const cargo = interaction.options.getString('cargo');
// const raça = interaction.options.getString('raça') ?? 'No reason provided'
const urlavatar = interaction.user.displayAvatarURL({ extension: 'jpg' });
const idavatar = urlavatar.split('/').pop().split('.')[0];
const url = `https://cdn.discordapp.com/avatars/${nome.id}/${idavatar}.jpg`;
console.log(idavatar);
await interaction.reply(`Selecionaste: \r nome:${nome}\r id:${nome.id} \r cargo:<@&${cargo}>(${cargo}) \r url:${url}\r idavatar:${idavatar}`);
// 1 - Verificar se já existe no banco
const [existing] = await conn.execute(
`SELECT * FROM users WHERE discord_id = ?`,
[nome.id]
);
if (existing.length > 0) {
return await interaction.reply({ content: `❗ O membro ${nome.username} já está registrado no banco de dados.`, ephemeral: true });
}
// 2 - Inserir no banco
await conn.execute(
`INSERT INTO users (discord_id, discord_avatar, discord_username, cargo, level) VALUES (?, ?, ?, ?, ?)`,
[nome.id, idavatar,nome.username, cargo, "0"]
);
// 3 - Pegar o membro na guilda
const member = await interaction.guild.members.fetch(nome.id);
// 4 - Verificar se o membro já tem o cargo
if (member.roles.cache.has(cargo)) {
return await interaction.editReply({ content: `❗ O membro ${nome.username} já possui o cargo <@&${cargo}>.`, ephemeral: true });
}
// 5 - Adicionar o cargo
await member.roles.add(cargo);
},
};