mirror of
https://github.com/arthur-pbty/bot-discord-coins.git
synced 2026-06-03 15:07:20 +02:00
289 lines
10 KiB
JavaScript
289 lines
10 KiB
JavaScript
const {
|
|
EmbedBuilder,
|
|
ButtonStyle,
|
|
ButtonBuilder,
|
|
ActionRowBuilder,
|
|
} = require("discord.js");
|
|
const embedColor = require("../../fonctions/embedColor.js");
|
|
const db = require("../../fonctions/database.js");
|
|
const cooldown = new Set();
|
|
|
|
module.exports = {
|
|
aliases: ["jugement", "procès", "proces"],
|
|
description: "Juge un membre. (cout : 1reputation + 500coins)",
|
|
emote: "🏦",
|
|
utilisation: "<@membre>",
|
|
permission: 0,
|
|
|
|
async execute(message, args, client) {
|
|
/////////////////////////////// Calcule des données de la cible ////////////////////////////////////////////////
|
|
|
|
const cible = message.mentions.users.first();
|
|
if (!cible) {
|
|
const embed = new EmbedBuilder()
|
|
.setTitle("Erreur")
|
|
.setDescription("❌ Vous devez mentionner un membre.")
|
|
.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 },
|
|
});
|
|
}
|
|
const cibleBD = await new Promise((resolve, reject) => {
|
|
db.get(
|
|
`SELECT * FROM users WHERE guildId = ? AND userId = ?`,
|
|
[message.guild.id, cible.id],
|
|
(err, row) => {
|
|
if (err) reject(err);
|
|
resolve(row);
|
|
},
|
|
);
|
|
});
|
|
|
|
/////////////////////////////// Calcule des données du message.author /////////////////////////////////////////
|
|
|
|
const user = await new Promise((resolve, reject) => {
|
|
db.get(
|
|
`SELECT * FROM users WHERE guildId = ? AND userId = ?`,
|
|
[message.guild.id, message.author.id],
|
|
(err, row) => {
|
|
if (err) reject(err);
|
|
resolve(row);
|
|
},
|
|
);
|
|
});
|
|
|
|
const lastJuge = user.lastJuge;
|
|
if (lastJuge > Date.now() - 3600000) {
|
|
const embed = new EmbedBuilder()
|
|
.setTitle("Jugement Impossible")
|
|
.setDescription(
|
|
`❌ Vous avez déjà juger récemment. Veuillez attendre ${Math.floor((lastBraquage + 7200000 - Date.now()) / 60000)} minutes avant de pouvoir braquer à nouveau.`,
|
|
)
|
|
.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 },
|
|
});
|
|
}
|
|
|
|
let countPr = 0;
|
|
let countContre = 0;
|
|
const pour = new ButtonBuilder()
|
|
.setCustomId("pour")
|
|
.setLabel("✅ Pour la sanction")
|
|
.setStyle(ButtonStyle.Primary);
|
|
const contre = new ButtonBuilder()
|
|
.setCustomId("contre")
|
|
.setLabel("😡 Contre la sanction")
|
|
.setStyle(ButtonStyle.Primary);
|
|
|
|
const row = new ActionRowBuilder().addComponents(pour);
|
|
const msg = message.channel.send({
|
|
embeds: [
|
|
new EmbedBuilder()
|
|
.setTitle(`Jugement de ${cible.user.username}`)
|
|
.setDescription(
|
|
`Vote pour la sanction: \`${countPr}\`\nVote contre la sanction: \`${countContre}\``,
|
|
)
|
|
.setColor(await embedColor(message.author.id, message.guild.id))
|
|
.setTimestamp()
|
|
.setImage("")
|
|
.setFooter({
|
|
text: `Demandé par ${message.author.tag}`,
|
|
iconURL: message.author.displayAvatarURL(),
|
|
}),
|
|
],
|
|
components: [row],
|
|
allowedMentions: { repliedUser: false },
|
|
});
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
const filter = (i) =>
|
|
(i.customId === "pour" || i.customId === "contre") &&
|
|
i.user.id === message.author.id;
|
|
const collector = msg.createMessageComponentCollector({
|
|
filter,
|
|
time: 60000,
|
|
});
|
|
collector.on("collect", async (interaction) => {
|
|
if (cooldown.has(message.author.id)) {
|
|
return message.reply({
|
|
content: "Vous avez deja voté",
|
|
ephemeral: true,
|
|
});
|
|
}
|
|
cooldown.add(message.author.id);
|
|
if (i.customId === "contre") {
|
|
if (i.user.id == message.author.id) {
|
|
countContre = +2;
|
|
} else {
|
|
countContre = +1;
|
|
}
|
|
msg.edit({
|
|
embeds: [
|
|
new EmbedBuilder()
|
|
.setTitle(`Jugement de ${cible.user.username}`)
|
|
.setDescription(
|
|
`Vote pour la sanction: \`${countPr}\`\nVote contre la sanction: \`${countContre}\``,
|
|
)
|
|
.setColor(await embedColor(message.author.id, message.guild.id))
|
|
.setTimestamp()
|
|
.setImage("")
|
|
.setFooter({
|
|
text: `Demandé par ${message.author.tag}`,
|
|
iconURL: message.author.displayAvatarURL(),
|
|
}),
|
|
],
|
|
components: [row],
|
|
allowedMentions: { repliedUser: false },
|
|
});
|
|
} else {
|
|
if (i.user.id == message.author.id) {
|
|
countPr = +2;
|
|
} else {
|
|
countPr = +1;
|
|
}
|
|
msg.edit({
|
|
embeds: [
|
|
new EmbedBuilder()
|
|
.setTitle(`Jugement de <${cible.id}>`)
|
|
.setDescription(
|
|
`Vote pour la sanction: \`${countPr}\`\nVote contre la sanction: \`${countContre}\``,
|
|
)
|
|
.setColor(await embedColor(message.author.id, message.guild.id))
|
|
.setTimestamp()
|
|
.setImage(
|
|
"https://tenor.com/view/judge-ace-attorney-ace-attorney-aa-gif-2687377729828245947",
|
|
)
|
|
.setFooter({
|
|
text: `Demandé par ${message.author.tag}`,
|
|
iconURL: message.author.displayAvatarURL(),
|
|
}),
|
|
],
|
|
components: [row],
|
|
allowedMentions: { repliedUser: false },
|
|
});
|
|
}
|
|
});
|
|
|
|
collector.on("end", () => {
|
|
if (countContre > countPr) {
|
|
msg.edit({
|
|
embeds: [
|
|
new EmbedBuilder()
|
|
.setTitle(`Jugement de ${cible.user.username}`)
|
|
.setDescription(`Les charges sont abandonnée`)
|
|
.setTimestamp()
|
|
.setImage("")
|
|
.setFooter({
|
|
text: `Demandé par ${message.author.tag}`,
|
|
iconURL: message.author.displayAvatarURL(),
|
|
}),
|
|
],
|
|
components: [],
|
|
allowedMentions: { repliedUser: false },
|
|
});
|
|
}
|
|
if (countContre == countPr) {
|
|
msg.edit({
|
|
embeds: [
|
|
new EmbedBuilder()
|
|
.setTitle(`Jugement de ${cible.user.username}`)
|
|
.setDescription(
|
|
`Le jury n'arrive pas à ce mettre d'accord ||(${countPr}pour VS ${countContre}contre)|| Les charges sont donc appliquer mais à moitié, ${cible.user.username} ne pourras plus faire la commande \`work\`, \`daily\`, \`rob\`, \`hack\`, \`kill\`, \`braquage\`, \`rep\`, \`trep\` et \`recolt\` pour la prochaine heures plus le cooldown de chaque commande qui recommancera a la fin de ce delai.`,
|
|
)
|
|
.setTimestamp()
|
|
.setImage("")
|
|
.setFooter({
|
|
text: `Demandé par ${message.author.tag}`,
|
|
iconURL: message.author.displayAvatarURL(),
|
|
}),
|
|
],
|
|
components: [],
|
|
allowedMentions: { repliedUser: false },
|
|
});
|
|
db.run(
|
|
`UPDATE users SET lastRob =? AND lastRecolt =? AND lastWork =? AND lastDaily =? AND lastRep =? AND lastTrep =? AND lastHack =? AND lastKill =? AND lastBraquage =? WHERE guildId =? AND userId =?`,
|
|
[
|
|
Date.now() + 3600000,
|
|
Date.now() + 3600000,
|
|
Date.now() + 3600000,
|
|
Date.now() + 3600000,
|
|
Date.now() + 3600000,
|
|
Date.now() + 3600000,
|
|
Date.now() + 3600000,
|
|
Date.now() + 3600000,
|
|
Date.now() + 3600000,
|
|
message.guild.id,
|
|
cible.id,
|
|
],
|
|
(err) => {
|
|
if (err) {
|
|
console.log(`${err}`);
|
|
}
|
|
},
|
|
);
|
|
}
|
|
if (countContre < countPr) {
|
|
msg.edit({
|
|
embeds: [
|
|
new EmbedBuilder()
|
|
.setTitle(`Jugement de ${cible.user.username}`)
|
|
.setDescription(
|
|
`Le jury c'est mis d'accord, ${cible.user.username} ne pourras plus faire les commandes \`work\`, \`daily\`, \`rob\`, \`hack\`, \`kill\`, \`braquage\`, \`rep\`, \`trep\` et \`recolt\` pour __les deux__ prochaines heure __**plus le cooldown de chaque commande** qui recommancera a la **fin de ce delai**.__`,
|
|
)
|
|
.setTimestamp()
|
|
.setImage("")
|
|
.setFooter({
|
|
text: `Demandé par ${message.author.tag}`,
|
|
iconURL: message.author.displayAvatarURL(),
|
|
}),
|
|
],
|
|
components: [],
|
|
allowedMentions: { repliedUser: false },
|
|
});
|
|
db.run(
|
|
`UPDATE users SET lastRob =? AND lastRecolt =? AND lastWork =? AND lastDaily =? AND lastRep =? AND lastTrep =? AND lastHack =? AND lastKill =? AND lastBraquage =? WHERE guildId =? AND userId =?`,
|
|
[
|
|
Date.now() + 7200000,
|
|
Date.now() + 7200000,
|
|
Date.now() + 7200000,
|
|
Date.now() + 7200000,
|
|
Date.now() + 7200000,
|
|
Date.now() + 7200000,
|
|
Date.now() + 7200000,
|
|
Date.now() + 7200000,
|
|
Date.now() + 7200000,
|
|
message.guild.id,
|
|
cible.id,
|
|
],
|
|
(err) => {
|
|
if (err) {
|
|
console.log(`${err}`);
|
|
}
|
|
},
|
|
);
|
|
}
|
|
/* CAR TOUJOURS EN TEST ET FLEMME DE ME DROP DES REP ET COINS A CHAQUE FOIS
|
|
db.run(`UPDATE users SET reputation = reputation - 1 WHERE guildId =? AND userId =?`, [message.guild.id, message.author.id])
|
|
db.run(`UPDATE users SET pocket = pocket - 500 WHERE guildId =? AND userId =?`, [message.guild.id, message.author.id])
|
|
*/
|
|
});
|
|
},
|
|
};
|