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

158 lines
5.4 KiB
JavaScript

const { EmbedBuilder } = require("discord.js");
const db = require("../../fonctions/database.js");
const embedColor = require("../../fonctions/embedColor.js");
module.exports = {
aliases: ["t", "tinfo", "teaminfo"],
description: "Affiche les informations de votre team.",
emote: "🛡️",
utilisation: "",
permission: 0,
async execute(message, args, client) {
const member = message.mentions.members.first() || message.member;
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, member.id],
(err, row) => {
if (err) reject(err);
resolve(row);
},
);
});
if (!team) {
const embed = new EmbedBuilder()
.setTitle("🛡️ Informations de team")
.setDescription(
"<@" + member.id + "> n'est actuellement dans aucune une team.",
)
.setColor(await embedColor(message.author.id, message.guild.id))
.setTimestamp()
.setFooter({
text: `Demandé par ${message.author.tag}`,
iconURL: message.author.displayAvatarURL(),
});
return message.reply({
embeds: [embed],
allowedMentions: { repliedUser: false },
});
} else {
const alliance = await new Promise((resolve, reject) => {
db.get(
`SELECT * FROM alliances WHERE guildId = ? AND id = (SELECT alliancesId FROM teams WHERE guildId = ? AND id = ?)`,
[message.guild.id, message.guild.id, team.id],
(err, row) => {
if (err) reject(err);
resolve(row);
},
);
});
let Aname;
if (alliance) {
Aname = alliance.name;
} else {
Aname = "aucune alliance";
}
const memberlist = await new Promise((resolve, reject) => {
db.all(
`SELECT userId, teamRole FROM users WHERE guildId = ? AND teamId = ?`,
[message.guild.id, team.id],
(err, rows) => {
if (err) reject(err);
resolve(rows);
},
);
});
let CadenaS = "🔓";
if (team.padlock == 5) {
CadenaS = "🔐🔐🔐🔐🔐";
}
if (team.padlock == 4) {
CadenaS = "🔐🔐🔐🔐";
}
if (team.padlock == 3) {
CadenaS = "🔐🔐🔐";
}
if (team.padlock == 2) {
CadenaS = "🔐🔐";
}
if (team.padlock == 1) {
CadenaS = "🔐";
}
//////////////////////////////////////////////////// TEAM DROPER ///////////////////////////////////////////////////////////////////
data = await new Promise((resolve, reject) => {
db.all(
`SELECT userId, teamDroper AS coins FROM users WHERE teamId = ? ORDER BY coins DESC LIMIT 10`,
[team.id],
(err, rows) => {
if (err) reject(err);
resolve(rows);
},
);
});
let leaderboard = data
.map((row, i) => {
let position;
switch (i) {
case 0:
position = ":first_place:";
break;
case 1:
position = ":second_place:";
break;
case 2:
position = ":third_place:";
break;
default:
position = `**${i + 1}.**`;
}
return `${position} <@${row.userId}> - \`${row.coins}\`coins donné(s)`;
})
.join("\n");
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const embed = new EmbedBuilder()
.setTitle("🛡️ Informations de `" + team.name + "`:")
.setDescription(
`**Id:** \`${team.id}\`\n**Description:** \`${team.description}\`\n**Banque:** \`${team.bank}\`coins\n**Niveau:** \`${team.level}\`\n**Reputation:** \`${team.reputation}\`\n\n**Soldats:** \`${team.soldiers}\`\n**Soldats blessés:** \`${team.woundedSoldiers}\`\n**Niveau du camp:** \`${team.campLevel}\`\n**Tourelles:** \`${team.turrets}\`\n**Cadenas:** \`${CadenaS}\`\n\n\nAlliance : ${Aname}\n\n\n**Membres (\`${memberlist.length}\`):**\n${memberlist.map((member) => `**${member.teamRole}:** <@${member.userId}>`).join("\n")}\n`,
)
.setColor(await embedColor(message.author.id, message.guild.id))
.setTimestamp()
.setFooter({
text: `Demandé par ${message.author.tag}`,
iconURL: message.author.displayAvatarURL(),
});
const embedTopDonnateur = new EmbedBuilder()
.setTitle("**Les 10 meilleurs donnateurs de la team sont :**")
.setDescription(`${leaderboard}`)
.setColor(await embedColor(message.author.id, message.guild.id))
.setTimestamp()
.setFooter({
text: `Demandé par ${message.author.tag}`,
iconURL: message.author.displayAvatarURL(),
});
const urlRegex1 = /(https?:\/\/[^\s]+)/g;
if (team.icon && urlRegex1.test(team.icon)) {
embed.setThumbnail(team.icon);
}
const urlRegex2 = /(https?:\/\/[^\s]+)/g;
if (team.banner && urlRegex2.test(team.banner)) {
embedTopDonnateur.setImage(team.banner);
}
return message.reply({
embeds: [embed, embedTopDonnateur],
allowedMentions: { repliedUser: false },
});
}
},
};