mirror of
https://github.com/arthur-pbty/bot-discord-coins.git
synced 2026-06-11 03:14:17 +02:00
196 lines
6.8 KiB
JavaScript
196 lines
6.8 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";
|
|
}
|
|
|
|
function convert(labelValue) {
|
|
|
|
return Math.abs(Number(labelValue)) >= 1.0e+9
|
|
|
|
? (Math.abs(Number(labelValue)) / 1.0e+9).toFixed(4) + "B"
|
|
|
|
: Math.abs(Number(labelValue)) >= 1.0e+6
|
|
|
|
? (Math.abs(Number(labelValue)) / 1.0e+6).toFixed(3) + "M"
|
|
|
|
: Math.abs(Number(labelValue)) >= 1.0e+3
|
|
|
|
? (Math.abs(Number(labelValue)) / 1.0e+3).toFixed(2) + "K"
|
|
|
|
: Math.abs(Number(labelValue));
|
|
|
|
}
|
|
|
|
const ownerlist = await new Promise((resolve, reject) => {
|
|
db.all(
|
|
`SELECT userId, teamRole FROM users WHERE guildId = ? AND teamId = ? AND teamRole = ?`,
|
|
[message.guild.id, team.id, "owner"],
|
|
(err, rows) => {
|
|
if (err) reject(err);
|
|
resolve(rows);
|
|
},
|
|
);
|
|
});
|
|
const officierlist = await new Promise((resolve, reject) => {
|
|
db.all(
|
|
`SELECT userId, teamRole FROM users WHERE guildId = ? AND teamId = ? AND teamRole = ?`,
|
|
[message.guild.id, team.id, "officer"],
|
|
(err, rows) => {
|
|
if (err) reject(err);
|
|
resolve(rows);
|
|
},
|
|
);
|
|
});
|
|
const memberlist = await new Promise((resolve, reject) => {
|
|
db.all(
|
|
`SELECT userId, teamRole FROM users WHERE guildId = ? AND teamId = ? AND teamRole = ?`,
|
|
[message.guild.id, team.id, "membre"],
|
|
(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}> - \`${convert(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:** \`${convert(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 + officierlist.length + 1}\`):**\n${ownerlist.map((member) => `**owner:** <@${member.userId}>`).join("\n")}\n${officierlist.map((member) => `**officier:** <@${member.userId}>`).join("\n")}\n${memberlist.map((member) => `**membre:** <@${member.userId}>`).join("\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 },
|
|
});
|
|
}
|
|
},
|
|
};
|