mirror of
https://github.com/arthur-pbty/bot-discord-coins.git
synced 2026-06-03 15:07:20 +02:00
234 lines
8.6 KiB
JavaScript
234 lines
8.6 KiB
JavaScript
const { EmbedBuilder } = require("discord.js");
|
|
const embedColor = require("../../fonctions/embedColor.js");
|
|
const db = require("../../fonctions/database.js");
|
|
|
|
let allianceName;
|
|
let allianceDescription;
|
|
|
|
module.exports = {
|
|
aliases: ["acreate", "alliancecreate"],
|
|
description: "Crée une alliance.",
|
|
emote: "✒️",
|
|
utilisation: "",
|
|
permission: 0,
|
|
|
|
async execute(message, args, client) {
|
|
const team = await new Promise((resolve, reject) => {
|
|
db.get(
|
|
`SELECT * FROM teams WHERE guildId = ? AND id = (SELECT teamId FROM users WHERE guildId = ? AND userId = ?)`,
|
|
[message.guild.id, message.guild.id, message.author.id],
|
|
(err, row) => {
|
|
if (err) reject(err);
|
|
resolve(row);
|
|
},
|
|
);
|
|
});
|
|
await new Promise((resolve, reject) => {
|
|
db.get(
|
|
`SELECT * FROM users WHERE userId = ? AND guildId = ?`,
|
|
[message.author.id, message.guild.id],
|
|
(err, row) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
if (row.teamRole !== "owner") {
|
|
embedColor(message.author.id, message.guild.id).then((color) => {
|
|
const embed = new EmbedBuilder()
|
|
.setTitle("🛡️ Création de alliance")
|
|
.setDescription(`Vous n'êtes pas proprietaire d'une team.`)
|
|
.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.alliancesId) {
|
|
embedColor(message.author.id, message.guild.id).then((color) => {
|
|
const embed = new EmbedBuilder()
|
|
.setTitle("🛡️ Création de alliance")
|
|
.setDescription(`Votre team a deja une alliance.`)
|
|
.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 alliance")
|
|
.setDescription(
|
|
`Vous n'avez pas assez de fonds pour créer une alliance. Vous avez besoin de 3000coins.`,
|
|
)
|
|
.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 d'alliance")
|
|
.setDescription(`Ecrivez le nom de votre alliance 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 l'alliance ne doit pas dépasser 25 caractères.");
|
|
return collector.stop();
|
|
} else if (m.content.length < 3) {
|
|
m.reply("Le nom de l'alliance doit contenir au moins 3 caractères.");
|
|
return collector.stop();
|
|
} else {
|
|
allianceName = m.content;
|
|
const embed = new EmbedBuilder()
|
|
.setTitle("🛡️ Création de l'alliance")
|
|
.setDescription(
|
|
`Ecrivez la description de votre alliance 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 l'alliance ne doit pas dépasser 250 caractères.",
|
|
);
|
|
return collectorD.stop();
|
|
} else if (m.content.length < 5) {
|
|
m.reply(
|
|
"La description de l'alliance doit contenir au moins 5 caractères.",
|
|
);
|
|
return collectorD.stop();
|
|
} else {
|
|
allianceDescription = m.content;
|
|
|
|
let idBase = allianceName.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 alliances WHERE id = ? AND guildId = ?`,
|
|
[id, message.guild.id],
|
|
(err, row) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
exists = !!row;
|
|
if (exists) {
|
|
increment = increment + 1;
|
|
id = idBase + increment;
|
|
} else {
|
|
db.run(
|
|
`INSERT INTO alliances (guildId, id, name, description, creator) VALUES (?, ?, ?, ?, ?)`,
|
|
[
|
|
message.guild.id,
|
|
id,
|
|
allianceName,
|
|
allianceDescription,
|
|
message.author.id,
|
|
],
|
|
);
|
|
db.run(
|
|
`UPDATE teams SET alliancesId = ? WHERE guildId = ? AND id = ?`,
|
|
[id, message.guild.id, team.id],
|
|
);
|
|
}
|
|
resolve();
|
|
}
|
|
},
|
|
);
|
|
});
|
|
} while (exists);
|
|
|
|
const embed = new EmbedBuilder()
|
|
.setTitle("🛡️ Création de l'alliance")
|
|
.setDescription(
|
|
`Votre alliance a été créée avec succès !\n\n**ID :** ${id}\n**Nom :** ${allianceName}\n**Description :** ${allianceDescription}\n\nVous pouvez maintenant inviter des owners de team dans votre alliance avec la commande \`&allianceinvite\`.\n\nPour quitter la alliance, utilisez la commande \`&allianceleave\` (vous deverez d'abord donner l\'alliance à 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();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
},
|
|
};
|