mirror of
https://github.com/arthur-pbty/bot-discord-coins.git
synced 2026-06-24 22:24:53 +02:00
201 lines
7.3 KiB
JavaScript
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();
|
||
}
|
||
});
|
||
}
|
||
});
|
||
},
|
||
};
|