Files
bot-discord-coins/commands/teams admin/tcreate.js
T
2024-06-24 00:32:05 +02:00

201 lines
7.3 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 > 25) {
m.reply("Le nom de la team ne doit pas dépasser 25 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 > 250) {
m.reply(
"La description de la team ne doit pas dépasser 250 caractères.",
);
return collectorD.stop();
} else if (m.content.length < 5) {
m.reply(
"La description de la team doit contenir au moins 5 caractères.",
);
return collectorD.stop();
} else {
teamDescription = m.content;
let idBase = teamName.toLowerCase().replace(/ /g, "");
idBase = idBase.replace("0", "");
idBase = idBase.replace("1", "");
idBase = idBase.replace("2", "");
idBase = idBase.replace("3", "");
idBase = idBase.replace("4", "");
idBase = idBase.replace("5", "");
idBase = idBase.replace("6", "");
idBase = idBase.replace("7", "");
idBase = idBase.replace("8", "");
idBase = idBase.replace("9", "");
let id = idBase;
let increment = 0;
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 += 1;
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\` (vous deverez d'abord donner la team a quelqu'un d'autre).`,
)
.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();
}
});
}
});
},
};