mirror of
https://github.com/arthur-pbty/bot-discord-coins.git
synced 2026-06-26 06:32:56 +02:00
177 lines
10 KiB
JavaScript
177 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])
|
|
*/
|
|
});
|
|
}
|
|
}; |