Files
bot-discord-coins/commands/teams/tcreate.js
T
2024-05-26 19:56:11 +02:00

130 lines
6.0 KiB
JavaScript

const { EmbedBuilder } = require('discord.js');
const embedColor = require('../../fonctions/embedColor.js');
const db = require('../../fonctions/database.js');
let teamName
let teamDescription
module.exports = {
aliases: ['teamcreate'],
description: 'Crée une team.',
emote: '🛡️',
utilisation: '',
permission: 0,
async execute(message, args, client) {
await new Promise((resolve, reject) => {
db.get(`SELECT teamId, pocket FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => {
if (err) {
reject(err);
} else {
if (row.teamId !== null ) {
embedColor(message.author.id, message.guild.id).then(color => {
const embed = new EmbedBuilder()
.setTitle('🛡️ Création de team')
.setDescription(`Vous êtes déjà dans une team. Vous devez quitter votre team actuelle pour en créer une nouvelle.`)
.setColor(color)
.setTimestamp()
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
});
} else if (row.pocket < 3000) {
embedColor(message.author.id, message.guild.id).then(color => {
const embed = new EmbedBuilder()
.setTitle('🛡️ Création de team')
.setDescription(`Vous n'avez pas assez de fonds pour créer une team. Vous avez besoin de 3000.`)
.setColor(color)
.setTimestamp()
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
});
} else {
db.run(`UPDATE users SET pocket = pocket - 3000 WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id]);
resolve();
}
}
});
});
const embed = new EmbedBuilder()
.setTitle('🛡️ Création de team')
.setDescription(`Ecrivez le nom de votre team dans le chat.`)
.setColor(await embedColor(message.author.id, message.guild.id))
.setTimestamp()
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
const messageTeam = await message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
const filter = m => m.author.id === message.author.id;
const collector = message.channel.createMessageCollector({ filter, time: 60000, max: 1 });
collector.on('collect', async m => {
if (m.content.length > 20) {
m.reply('Le nom de la team ne doit pas dépasser 20 caractères.');
return collector.stop();
} else if (m.content.length < 3) {
m.reply('Le nom de la team doit contenir au moins 3 caractères.');
return collector.stop();
} else {
teamName = m.content;
const embed = new EmbedBuilder()
.setTitle('🛡️ Création de team')
.setDescription(`Ecrivez la description de votre team dans le chat.`)
.setColor(await embedColor(message.author.id, message.guild.id))
.setTimestamp()
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
messageTeam.edit({ embeds: [embed] });
m.delete();
const collectorD = message.channel.createMessageCollector({ filter, time: 60000, max: 1 });
collectorD.on('collect', async m => {
if (m.content.length > 100) {
m.reply('La description de la team ne doit pas dépasser 100 caractères.');
return collectorD.stop();
} else if (m.content.length < 2) {
m.reply('La description de la team doit contenir au moins 2 caractères.');
return collectorD.stop();
} else {
teamDescription = m.content;
let idBase = teamName.toLowerCase().replace(/ /g, '');
let id = idBase;
let increment = 1;
let exists = true;
do {
await new Promise((resolve, reject) => {
db.get(`SELECT * FROM teams WHERE id = ? AND guildId = ?`, [id, message.guild.id], (err, row) => {
if (err) {
reject(err);
} else {
exists = !!row;
if (exists) {
increment++;
id = idBase + increment;
} else {
db.run(`INSERT INTO teams (guildId, id, name, description) VALUES (?, ?, ?, ?)`, [message.guild.id, id, teamName, teamDescription]);
db.run(`UPDATE users SET teamId = ?, teamRole = ? WHERE guildId = ? AND userId = ?`, [id, 'owner', message.guild.id, message.author.id]);
}
resolve();
}
});
});
} while (exists);
const embed = new EmbedBuilder()
.setTitle('🛡️ Création de team')
.setDescription(`Votre team a été créée avec succès !\n\n**ID :** ${id}\n**Nom :** ${teamName}\n**Description :** ${teamDescription}\n\nVous pouvez maintenant inviter des membres dans votre team avec la commande \`&teaminvite\`.\n\nPour quitter la team, utilisez la commande \`&teamleave\`.`)
.setColor(await embedColor(message.author.id, message.guild.id))
.setTimestamp()
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
messageTeam.edit({ embeds: [embed] });
m.delete();
}
});
}
});
}
};