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

201 lines
7.3 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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();
}
});
}
});
},
};