80 lines
2.8 KiB
JavaScript
80 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 membros 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
|
|
const 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.reply({ content: `❗ O membro ${nome.username} já possui o cargo <@&${cargo}>.`, ephemeral: true });
|
|
}
|
|
|
|
// 5 - Adicionar o cargo
|
|
await member.roles.add(cargo);
|
|
|
|
},
|
|
}; |