mirror of
https://github.com/arthur-pbty/bot-discord-coins.git
synced 2026-06-03 23:36:29 +02:00
add commands
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
const { EmbedBuilder, StringSelectMenuBuilder, ActionRowBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: [],
|
||||
description: 'Change la couleur de vos embed.',
|
||||
emote: '🔵',
|
||||
utilisation: '',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🔵 Embed')
|
||||
.setDescription(`Sélectionnez une couleur pour vos embeds`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
const select = new StringSelectMenuBuilder()
|
||||
.setCustomId('color')
|
||||
.setPlaceholder('Sélectionnez une couleur')
|
||||
.addOptions([
|
||||
{
|
||||
label: '🔴 Rouge',
|
||||
description: 'Prix : 3 rep🔺',
|
||||
value: 'red',
|
||||
},
|
||||
{
|
||||
label: '🟠 Orange',
|
||||
description: 'Prix : 3 rep🔺',
|
||||
value: 'orange',
|
||||
},
|
||||
{
|
||||
label: '🟡 Jaune',
|
||||
description: 'Prix : 3 rep🔺',
|
||||
value: 'yellow',
|
||||
},
|
||||
{
|
||||
label: '🟢 Vert',
|
||||
description: 'Prix : 3 rep🔺',
|
||||
value: 'green',
|
||||
},
|
||||
{
|
||||
label: '🔵 Bleu',
|
||||
description: 'Prix : 3 rep🔺',
|
||||
value: 'blue',
|
||||
},
|
||||
{
|
||||
label: '🟣 Violet',
|
||||
description: 'Prix : 3 rep🔺',
|
||||
value: 'purple',
|
||||
},
|
||||
{
|
||||
label: '🟤 Marron',
|
||||
description: 'Prix : 3 rep🔺',
|
||||
value: 'brown',
|
||||
},
|
||||
{
|
||||
label: '⚫ Noir',
|
||||
description: 'Prix : 3 rep🔺',
|
||||
value: 'black',
|
||||
},
|
||||
{
|
||||
label: '⚪ Blanc',
|
||||
description: 'Prix : 3 rep🔺',
|
||||
value: 'white',
|
||||
},
|
||||
{
|
||||
label: 'Aléatoire 🌈',
|
||||
description: 'Prix : 5 rep🔺',
|
||||
value: 'random',
|
||||
},
|
||||
]);
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(select);
|
||||
|
||||
const embedMessage = await message.reply({ embeds: [embed], components: [row], allowedMentions: { repliedUser: false } });
|
||||
|
||||
const filter = (interaction) => interaction.user.id === message.author.id;
|
||||
const collector = embedMessage.createMessageComponentCollector({ filter, time: 60000 });
|
||||
collector.on('collect', async (interaction) => {
|
||||
if (interaction.isStringSelectMenu()) {
|
||||
if (!client.user) return
|
||||
const value = interaction.values[0];
|
||||
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 reputation = user.reputation;
|
||||
|
||||
if (value === 'random') {
|
||||
if (reputation < 5) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Erreur')
|
||||
.setDescription('❌ Vous n\'avez pas assez de réputations pour acheter cette couleur.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
return interaction.reply({ embeds: [embed], ephemeral: true, allowedMentions: { repliedUser: false } });
|
||||
}
|
||||
|
||||
db.run(`UPDATE users SET reputation = reputation - 5, embed = 'random' WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err) => {
|
||||
if (err) return console.error(err);
|
||||
});
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🔵 Embed')
|
||||
.setDescription('✅ Vous avez acheté la couleur aléatoire pour vos embeds.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
interaction.reply({ embeds: [embed], ephemeral: true, allowedMentions: { repliedUser: false } });
|
||||
} else {
|
||||
if (reputation < 3) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Erreur')
|
||||
.setDescription('❌ Vous n\'avez pas assez de réputations pour acheter cette couleur.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
return interaction.reply({ embeds: [embed], ephemeral: true, allowedMentions: { repliedUser: false } });
|
||||
}
|
||||
|
||||
db.run(`UPDATE users SET reputation = reputation - 3, embed = ? WHERE guildId = ? AND userId = ?`, [value, message.guild.id, message.author.id], (err) => {
|
||||
if (err) return console.error(err);
|
||||
});
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🔵 Embed')
|
||||
.setDescription(`✅ Vous avez acheté la couleur ${value} pour vos embeds.`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
interaction.reply({ embeds: [embed], ephemeral: true, allowedMentions: { repliedUser: false } });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
collector.on('end', async () => {
|
||||
embedMessage.edit({ components: [] });
|
||||
});
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,23 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['shop', 'magasin', 'boutique', 'store'],
|
||||
description: 'Affiche le shop du bot.',
|
||||
emote: '🛍️',
|
||||
utilisation: '',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛍️ Shop')
|
||||
.setThumbnail(message.guild.iconURL())
|
||||
.setDescription(`Sélectionnez un item à acheter. Voici les items disponibles :\n\n> 🔒 AntiRob - Protège contre les vols pendant 2 heures - Prix : 2000 coins\n> 🔑 Clé - Permet d'ouvrir une boîte - Prix : 10000 coins\n> 🔫 [Job] Braqueur - Permet d'avoir accès à la commande &braquage - Prix : 15 réputations\n> 🔪 [Job] Killer - Permet d'avoir accès à la commande &kill - Prix : 13 réputations\n> 💻 [Job] Hacker - Permet d'avoir accès à la commande &hack - Prix : 11 réputations\n> ⚖️ [Job] Juge - Permet d'avoir accès à la commande &juge - Prix : 15 réputations`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,163 @@
|
||||
const { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
function commandsList (client, category) {
|
||||
const casinoCommands = client.commands.filter(command => command.category === category).sort((a, b) => a.name.localeCompare(b.name));
|
||||
const uniqueCommands = new Map();
|
||||
|
||||
casinoCommands.forEach(command => {
|
||||
uniqueCommands.set(command.name, {description: command.description, emote: command.emote, utilisation: command.utilisation});
|
||||
});
|
||||
|
||||
let commandsList = '';
|
||||
uniqueCommands.forEach((command, name) => {
|
||||
commandsList += `${command.emote} \`${name}${command.utilisation ? ' ' + command.utilisation : ''}\`\n┖ ${command.description}\n\n`;
|
||||
});
|
||||
|
||||
return commandsList;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
aliases: ['h', 'aide'],
|
||||
description: 'Affiche la liste des commandes disponibles',
|
||||
emote: '📚',
|
||||
utilisation: '[commande]',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
const embedPage1 = new EmbedBuilder()
|
||||
.setTitle('📚 Information')
|
||||
.setThumbnail(message.guild.iconURL())
|
||||
.setDescription(`Voici le panel d'aide du bot. Pour plus d'informations sur une commande, utilisez &help <commande>\n\n> **🎙️ Récompenses vocales :**\n> Vous gagnez \`1500\` pièces toutes les 15 minutes lorsque vous êtes en vocal.\n> \n> **📺 Récompenses de streaming :**\n> Activer un stream vous fera gagner \`250\`.\n> \n> **📷 Récompenses de caméra :**\n> Activer votre caméra vous fera gagner \`250\`.\n\n> Le coins est une monnaie fictive.`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Page 1/10 | Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
const leftButton = new ButtonBuilder()
|
||||
.setCustomId('left')
|
||||
.setLabel('◀')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
|
||||
const rightButton = new ButtonBuilder()
|
||||
.setCustomId('right')
|
||||
.setLabel('▶')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(leftButton, rightButton);
|
||||
|
||||
const messageEmbed = await message.reply({ embeds: [embedPage1], components: [row], allowedMentions: { repliedUser: false } });
|
||||
|
||||
const filter = i => i.user.id === message.author.id;
|
||||
const collector = message.channel.createMessageComponentCollector({ filter, time: 60000 });
|
||||
|
||||
let page = 1;
|
||||
collector.on('collect', async i => {
|
||||
if (i.customId === 'left') {
|
||||
page--;
|
||||
if (page < 1) page = 10;
|
||||
} else if (i.customId === 'right') {
|
||||
page++;
|
||||
if (page > 10) page = 1;
|
||||
}
|
||||
|
||||
if (page === 1) {
|
||||
i.update({ embeds: [embedPage1], components: [row] });
|
||||
} else if (page === 2) {
|
||||
const embedPage2 = new EmbedBuilder()
|
||||
.setTitle('💰 Casino')
|
||||
.setThumbnail(message.guild.iconURL())
|
||||
.setDescription(commandsList(client, 'casino'))
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Page 2/10 | Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
i.update({ embeds: [embedPage2], components: [row], allowedMentions: { repliedUser: false } });
|
||||
} else if (page === 3) {
|
||||
const embedPage3 = new EmbedBuilder()
|
||||
.setTitle('🎲 Jeux')
|
||||
.setThumbnail(message.guild.iconURL())
|
||||
.setDescription(commandsList(client, 'jeux'))
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Page 3/10 | Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
i.update({ embeds: [embedPage3], components: [row], allowedMentions: { repliedUser: false } });
|
||||
} else if (page === 4) {
|
||||
const embedPage4 = new EmbedBuilder()
|
||||
.setTitle('🛍️ Achats')
|
||||
.setThumbnail(message.guild.iconURL())
|
||||
.setDescription(commandsList(client, 'achats'))
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Page 4/10 | Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
i.update({ embeds: [embedPage4], components: [row], allowedMentions: { repliedUser: false } });
|
||||
} else if (page === 5) {
|
||||
const embedPage5 = new EmbedBuilder()
|
||||
.setTitle('🏭 Metier et capacité')
|
||||
.setThumbnail(message.guild.iconURL())
|
||||
.setDescription(`page 5`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Page 5/10 | Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
i.update({ embeds: [embedPage5], components: [row], allowedMentions: { repliedUser: false } });
|
||||
} else if (page === 6) {
|
||||
const embedPage6 = new EmbedBuilder()
|
||||
.setTitle('🛡️ Teams')
|
||||
.setThumbnail(message.guild.iconURL())
|
||||
.setDescription(commandsList(client, 'teams'))
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Page 6/10 | Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
i.update({ embeds: [embedPage6], components: [row], allowedMentions: { repliedUser: false } });
|
||||
} else if (page === 7) {
|
||||
const embedPage7 = new EmbedBuilder()
|
||||
.setTitle('💼 Teams 2')
|
||||
.setThumbnail(message.guild.iconURL())
|
||||
.setDescription(`page 7`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Page 7/10 | Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
i.update({ embeds: [embedPage7], components: [row], allowedMentions: { repliedUser: false } });
|
||||
} else if (page === 8) {
|
||||
const embedPage8 = new EmbedBuilder()
|
||||
.setTitle('🤝 Alliance')
|
||||
.setThumbnail(message.guild.iconURL())
|
||||
.setDescription(`page 8`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Page 8/10 | Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
i.update({ embeds: [embedPage8], components: [row], allowedMentions: { repliedUser: false } });
|
||||
} else if (page === 9) {
|
||||
const embedPage9 = new EmbedBuilder()
|
||||
.setTitle('👑 Gestion')
|
||||
.setThumbnail(message.guild.iconURL())
|
||||
.setDescription(commandsList(client, 'gestion'))
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Page 9/10 | Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
i.update({ embeds: [embedPage9], components: [row], allowedMentions: { repliedUser: false } });
|
||||
} else if (page === 10) {
|
||||
const embedPage10 = new EmbedBuilder()
|
||||
.setTitle('👑 Bot control')
|
||||
.setThumbnail(message.guild.iconURL())
|
||||
.setDescription(commandsList(client, 'bot control'))
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Page 10/10 | Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
i.update({ embeds: [embedPage10], components: [row], allowedMentions: { repliedUser: false } });
|
||||
}
|
||||
});
|
||||
|
||||
collector.on('end', () => {
|
||||
messageEmbed.edit({ components: [], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,38 @@
|
||||
const { ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['latence'],
|
||||
description: 'Avoir la latence du bot.',
|
||||
emote: '⏱️',
|
||||
utilisation: '',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
const ping = new ButtonBuilder()
|
||||
.setCustomId('confirm')
|
||||
.setLabel('🔄')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(ping);
|
||||
const sentMessage = await message.reply({
|
||||
content: `La latence est de : ${client.ws.ping}`,
|
||||
components: [row],
|
||||
});
|
||||
|
||||
|
||||
const filter = i => i.customId === 'confirm' && i.user.id === message.author.id;
|
||||
const collector = sentMessage.createMessageComponentCollector({ filter, time: 15000 })
|
||||
collector.on('collect', async (interaction) => {
|
||||
sentMessage.edit({
|
||||
content: `La latence est de : ${client.ws.ping}`,
|
||||
components: [row],
|
||||
});
|
||||
interaction.reply({ content: 'La latence a été rafraichie', ephemeral: true, allowedMentions: { repliedUser: false } });
|
||||
});
|
||||
|
||||
collector.on('end', () => {
|
||||
sentMessage.edit({ components: [] });
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,47 @@
|
||||
const { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['srvs'],
|
||||
description: 'Affiche la liste des serveurs où le bot est présent',
|
||||
emote: '🌐',
|
||||
utilisation: '',
|
||||
permission: 10,
|
||||
|
||||
async execute(message, args, client) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Liste des serveurs')
|
||||
.setDescription(client.guilds.cache.map(guild => `${guild.name} (ID: ${guild.id})`).join('\n'))
|
||||
.setColor(await embedColor(message.author.id, message.guild.id));
|
||||
|
||||
const ping = new ButtonBuilder()
|
||||
.setCustomId('confirm')
|
||||
.setLabel('🔄')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(ping);
|
||||
|
||||
const sentMessage = await message.reply({
|
||||
embeds: [embed],
|
||||
components: [row],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
|
||||
const filter = i => i.customId === 'confirm' && i.user.id === message.author.id;
|
||||
const collector = sentMessage.createMessageComponentCollector({ filter, time: 60000 });
|
||||
|
||||
collector.on('collect', async (interaction) => {
|
||||
embed.setDescription(client.guilds.cache.map(guild => `${guild.name} (ID: ${guild.id})`).join('\n'));
|
||||
sentMessage.edit({
|
||||
embeds: [embed],
|
||||
components: [row],
|
||||
});
|
||||
interaction.reply({ content: 'La liste des serveurs a été rafraichie', ephemeral: true });
|
||||
});
|
||||
|
||||
collector.on('end', () => {
|
||||
sentMessage.edit({ components: [] });
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,33 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['coin', 'money', 'balance', 'bal', 'wallet', 'cash'],
|
||||
description: 'Affiche le solde d\'un compte.',
|
||||
emote: '💵',
|
||||
utilisation: '[@membre]',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
const member = message.mentions.members.first() || message.member;
|
||||
const user = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, member.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row);
|
||||
});
|
||||
});
|
||||
const pocket = user.pocket
|
||||
const bank = user.bank
|
||||
const reputation = user.reputation
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({ name: `Détails du Compte de ${member.user.tag}`, iconURL: member.user.displayAvatarURL() })
|
||||
.setDescription(`> :moneybag: Poche ${pocket}\n> :bank: Banque ${bank}\n> :star2: Réputation ${reputation}`)
|
||||
.setColor(await embedColor(member.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,70 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['dy'],
|
||||
description: 'Récupère ton argent quotidien.',
|
||||
emote: '🎁',
|
||||
utilisation: '',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
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 lastDaily = user.lastDaily
|
||||
const pocket = user.pocket
|
||||
|
||||
if (lastDaily > Date.now() - 86400000) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Argent Impossible')
|
||||
.setDescription(`❌ Vous avez déjà récupèré votre argent quotidien récemment. Veuillez attendre ${Math.floor((lastDaily + 86400000 - Date.now()) / 60000)} minutes avant de pouvoir travailler à 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 } });
|
||||
}
|
||||
|
||||
const randomAmount = Math.floor(Math.random() * (500 - 100 + 1) + 100);
|
||||
db.run(`UPDATE users SET pocket = ?, lastDaily = ? WHERE guildId = ? AND userId = ?`, [pocket + randomAmount, Date.now(), message.guild.id, message.author.id]);
|
||||
|
||||
const dailys = [
|
||||
`🌅 Vous vous êtes réveillé tôt ce matin et avez trouvé ${randomAmount} coins sous votre oreiller.`,
|
||||
`🍳 Vous avez préparé un délicieux petit-déjeuner et avez été récompensé par ${randomAmount} coins pour votre talent culinaire.`,
|
||||
`☀️ En partant pour une promenade matinale, vous avez découvert ${randomAmount} coins brillant sous le soleil levant.`,
|
||||
`🌸 Vous avez aidé à planter de nouvelles fleurs dans le jardin du village et avez reçu ${randomAmount} coins pour votre contribution.`,
|
||||
`🐦 Vous avez nourri les oiseaux dans le parc et avez trouvé ${randomAmount} coins cachés parmi les graines.`,
|
||||
`📚 Après avoir lu un livre inspirant, vous avez été inspiré à démarrer votre journée avec ${randomAmount} coins d'idées nouvelles.`,
|
||||
`🌱 Vous avez planté un arbre pour marquer le début de la journée et avez été récompensé par ${randomAmount} coins pour votre action écologique.`,
|
||||
`🚴 Vous avez fait une balade à vélo matinale et avez découvert ${randomAmount} coins sur le bord du chemin.`,
|
||||
`🌞 Vous avez salué le lever du soleil avec une méditation paisible et avez trouvé ${randomAmount} coins cachés dans votre esprit calme.`,
|
||||
`🌳 En ramassant des déchets dans le parc, vous avez trouvé ${randomAmount} coins comme récompense pour garder l'environnement propre.`,
|
||||
`🎨 Vous avez commencé la journée avec une séance de peinture et avez vendu votre première toile pour ${randomAmount} coins.`,
|
||||
`🐶 Vous avez promené le chien du voisin et avez été surpris avec ${randomAmount} coins comme remerciement.`,
|
||||
`📝 Vous avez tenu un journal de gratitude pour votre routine matinale et avez été récompensé par ${randomAmount} coins pour chaque moment apprécié.`,
|
||||
`🏃♂️ Vous avez fait une course matinale et avez découvert ${randomAmount} coins le long du parcours.`,
|
||||
`☕ Après avoir préparé un café revigorant, vous avez trouvé ${randomAmount} coins au fond de votre tasse.`,
|
||||
`🌻 Vous avez cultivé votre jardin et avez récolté ${randomAmount} coins en légumes frais pour le petit-déjeuner.`,
|
||||
`🎶 Vous avez écouté votre chanson préférée pour commencer la journée et avez été récompensé par ${randomAmount} coins pour votre bon goût musical.`,
|
||||
`🌈 Vous avez commencé la journée avec une séance de yoga revitalisante et avez trouvé ${randomAmount} coins dans la position du lotus.`,
|
||||
`💌 Vous avez envoyé des messages de bonnes nouvelles à vos proches et avez été récompensé par ${randomAmount} coins pour répandre la joie.`,
|
||||
`💻 Vous avez commencé votre journée de travail avec détermination et avez trouvé ${randomAmount} coins cachés dans votre boîte de réception.`,
|
||||
];
|
||||
|
||||
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Argent Récupéré')
|
||||
.setDescription(dailys[Math.floor(Math.random() * dailys.length)])
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,58 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['dep', 'depot'],
|
||||
description: 'Dépose de l\'argent dans votre compte en banque.',
|
||||
emote: '💰',
|
||||
utilisation: '<montant|all>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
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 pocket = user.pocket
|
||||
const bank = user.bank
|
||||
|
||||
let title = 'Dépôt Impossible'
|
||||
let description = ''
|
||||
|
||||
if (args.length === 0) {
|
||||
description = '❌ Vous devez spécifier un montant à déposer.'
|
||||
} else if (args[0] === 'all') {
|
||||
if (pocket <= 0) {
|
||||
description = '❌ Vous n\'avez pas d\'argent à déposer.'
|
||||
} else {
|
||||
title = 'Dépôt Réussi'
|
||||
description = `💰 Vous avez déposé ${pocket} coins dans votre compte en banque.`
|
||||
db.run(`UPDATE users SET pocket = ?, bank = ? WHERE guildId = ? AND userId = ?`, [0, pocket + bank, message.guild.id, message.author.id]);
|
||||
}
|
||||
} else if (isNaN(args[0])) {
|
||||
description = '❌ Vous devez spécifier un montant valide à déposer.'
|
||||
} else if (pocket <= 0) {
|
||||
description = '❌ Vous n\'avez pas d\'argent à déposer.'
|
||||
} else if (parseInt(args[0]) > pocket) {
|
||||
description = '❌ Vous n\'avez pas assez d\'argent pour déposer cette somme.'
|
||||
} else if (parseInt(args[0]) <= 0) {
|
||||
description = '❌ Vous ne pouvez pas deposer une somme négative ou nulle.';
|
||||
} else {
|
||||
title = 'Dépôt Réussi'
|
||||
description = `💰 Vous avez déposé ${args[0]} coins dans votre compte en banque.`
|
||||
db.run(`UPDATE users SET pocket = ?, bank = ? WHERE guildId = ? AND userId = ?`, [pocket - parseInt(args[0]), bank + parseInt(args[0]), message.guild.id, message.author.id]);
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(title)
|
||||
.setDescription(description)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,98 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: [],
|
||||
description: 'Paye un membre de votre serveur.',
|
||||
emote: '💳',
|
||||
utilisation: '<montant> <@membre>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
let amount;
|
||||
const member = message.mentions.members.first();
|
||||
|
||||
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 pocket = user.pocket;
|
||||
|
||||
if (!member) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Erreur')
|
||||
.setDescription('❌ Veuillez mentionner un membre du serveur.')
|
||||
.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 } });
|
||||
}
|
||||
|
||||
if (!args[0]) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Erreur')
|
||||
.setDescription('❌ Veuillez spécifier un montant à payer.')
|
||||
.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] });
|
||||
} else if (args[0] === 'all') {
|
||||
amount = pocket;
|
||||
} else if (isNaN(args[0])) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Erreur')
|
||||
.setDescription('❌ Veuillez spécifier un montant valide.')
|
||||
.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] });
|
||||
} else if (args[0] <= 0) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Erreur')
|
||||
.setDescription('❌ Veuillez spécifier un montant supérieur à 0.')
|
||||
.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] });
|
||||
} else if (args[0] > pocket) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Erreur')
|
||||
.setDescription('❌ Vous n\'avez pas assez d\'argent pour effectuer cette transaction.')
|
||||
.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] });
|
||||
} else if (!Number.isInteger(Number(args[0]))) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Erreur')
|
||||
.setDescription('❌ Veuillez spécifier un montant entier.')
|
||||
.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 {
|
||||
amount = args[0];
|
||||
}
|
||||
|
||||
db.run(`UPDATE users SET pocket = pocket - ? WHERE guildId = ? AND userId = ?`, [amount, message.guild.id, message.author.id]);
|
||||
db.run(`UPDATE users SET pocket = pocket + ? WHERE guildId = ? AND userId = ?`, [amount, message.guild.id, member.id]);
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Paiement')
|
||||
.setDescription(`💰 Vous avez payé ${amount} à ${member.user.tag}.`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,87 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: [],
|
||||
description: 'Vol de l\'argent a un membre.',
|
||||
emote: '🦹',
|
||||
utilisation: '<@membre>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
const member = message.mentions.users.first();
|
||||
if (!member) {
|
||||
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 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);
|
||||
});
|
||||
});
|
||||
|
||||
if (user.lastRob + 7200000 > Date.now()) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Erreur')
|
||||
.setDescription(`❌ Vous devez encore attendre ${Math.floor((user.lastRob + 7200000 - Date.now()) / 60000)} minutes avant de pouvoir voler à 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 } });
|
||||
}
|
||||
|
||||
const memberInfo = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, member.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row);
|
||||
});
|
||||
});
|
||||
|
||||
if (memberInfo.antiRob + 7200000 > Date.now()) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Erreur')
|
||||
.setDescription(`❌ Vous ne pouvez pas voler <@${member.id}> pour le moment, il est protégé par un bouclier anti-vol pendant encore ${Math.floor((memberInfo.antiRob + 7200000 - Date.now()) / 60000)} minutes.`)
|
||||
.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 memberPocket = memberInfo.pocket;
|
||||
|
||||
if (memberPocket <= 0) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Erreur')
|
||||
.setDescription(`❌ <@${member.id}> n'a pas d'argent sur lui pour que vous puissiez le voler.`)
|
||||
.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 amount = Math.floor(Math.random() * memberPocket) + 1;
|
||||
db.run(`UPDATE users SET pocket = pocket - ? WHERE guildId = ? AND userId = ?`, [amount, message.guild.id, member.id]);
|
||||
db.run(`UPDATE users SET pocket = pocket + ?, lastRob = ? WHERE guildId = ? AND userId = ?`, [amount, Date.now(), message.guild.id, message.author.id]);
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Vol')
|
||||
.setDescription(`💰 Vous avez volé ${amount} à <@${member.id}>.`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,110 @@
|
||||
const { EmbedBuilder, ActionRowBuilder, StringSelectMenuBuilder, StringSelectMenuOptionBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['leaderboard', 'lb'],
|
||||
description: 'Affiche le top 10 des membres du serveur',
|
||||
emote: '🏆',
|
||||
utilisation: '[pocket|bank|reputation]',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
let type = 'bank';
|
||||
let emote = ':bank:';
|
||||
if (args[0] ==='pocket') {
|
||||
type = args[0]
|
||||
emote = ':moneybag:';
|
||||
} else if (args[0] === 'reputation') {
|
||||
type = args[0]
|
||||
emote = ':star2:';
|
||||
} else if (args[0] && args[0] !== 'bank') {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Erreur')
|
||||
.setDescription('❌ Veuillez spécifier un type de leaderboard valide: `pocket`, `bank` ou `reputation`')
|
||||
.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 [embed, row] = await leaderboard(message, type);
|
||||
const replyMessage = await message.reply({ embeds: [embed], components: [row] });
|
||||
|
||||
client.on('interactionCreate', async (interaction) => {
|
||||
if (!interaction.isStringSelectMenu()) return;
|
||||
|
||||
if (interaction.customId === 'topLeaderboard') {
|
||||
const selected = interaction.values[0];
|
||||
|
||||
await interaction.deferUpdate();
|
||||
|
||||
const [embed, row] = await leaderboard(message, selected);
|
||||
replyMessage.edit({ embeds: [embed], components: [row] });
|
||||
interaction.followUp({ content: `Leaderboard mis à jour en fonction de \`${selected}\``, ephemeral: true });
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
async function leaderboard(message, type) {
|
||||
const topUsers = await new Promise((resolve, reject) => {
|
||||
db.all(`SELECT * FROM users WHERE guildId = ? ORDER BY ${type} DESC LIMIT 10`, [message.guild.id], (err, rows) => {
|
||||
if (err) reject(err);
|
||||
resolve(rows);
|
||||
});
|
||||
});
|
||||
|
||||
let emote = ':bank:';
|
||||
if (type === 'pocket') {
|
||||
emote = ':moneybag:';
|
||||
} else if (type === 'reputation') {
|
||||
emote = ':star2:';
|
||||
}
|
||||
|
||||
const description = topUsers.map((user, index) => {
|
||||
let place;
|
||||
if (index === 0) {
|
||||
place = ':first_place:';
|
||||
} else if (index === 1) {
|
||||
place = ':second_place:';
|
||||
} else if (index === 2) {
|
||||
place = ':third_place:';
|
||||
} else {
|
||||
place = `${index + 1}.`;
|
||||
}
|
||||
return `${place} <@${user.userId}> - \`${user[type]}\` ${emote}`;
|
||||
});
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({ name: `Top 10 des Membres de ${message.guild.name} en ${type}`, iconURL: message.guild.iconURL() })
|
||||
.setDescription(description.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 select = new StringSelectMenuBuilder()
|
||||
.setCustomId('topLeaderboard')
|
||||
.setPlaceholder('Choisissez un type de leaderboard')
|
||||
.addOptions(
|
||||
new StringSelectMenuOptionBuilder()
|
||||
.setLabel('Pocket')
|
||||
.setDescription('Affiche le top en fonction de leur argent de poche')
|
||||
.setValue('pocket'),
|
||||
new StringSelectMenuOptionBuilder()
|
||||
.setLabel('Bank')
|
||||
.setDescription('Affiche le top en fonction de leur argent en banque')
|
||||
.setValue('bank'),
|
||||
new StringSelectMenuOptionBuilder()
|
||||
.setLabel('Reputation')
|
||||
.setDescription('Affiche le top en fonction de leur réputation')
|
||||
.setValue('reputation')
|
||||
);
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(select);
|
||||
|
||||
return [embed, row];
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['ret', 'retrait', 'with', 'withdraw', 'wd', 'take', 'wh'],
|
||||
description: 'Retire de l\'argent de votre compte en banque.',
|
||||
emote: '🏦',
|
||||
utilisation: '<montant|all>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
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 pocket = user.pocket;
|
||||
const bank = user.bank;
|
||||
|
||||
let title = 'Retrait Impossible';
|
||||
let description = '';
|
||||
|
||||
if (args.length === 0) {
|
||||
description = '❌ Vous devez spécifier un montant à retirer.';
|
||||
} else if (args[0] === 'all') {
|
||||
if (bank <= 0) {
|
||||
description = '❌ Vous n\'avez pas d\'argent à retirer de votre compte en banque.';
|
||||
} else {
|
||||
title = 'Retrait Réussi';
|
||||
description = `🏦 Vous avez retiré ${bank} coins de votre compte en banque.`;
|
||||
db.run(`UPDATE users SET pocket = ?, bank = ? WHERE guildId = ? AND userId = ?`, [pocket + bank, 0, message.guild.id, message.author.id]);
|
||||
}
|
||||
} else if (isNaN(args[0])) {
|
||||
description = '❌ Vous devez spécifier un montant valide à retirer.';
|
||||
} else if (bank <= 0) {
|
||||
description = '❌ Vous n\'avez pas d\'argent à retirer.'
|
||||
} else if (parseInt(args[0]) > bank) {
|
||||
description = '❌ Vous n\'avez pas assez d\'argent dans votre compte en banque pour retirer cette somme.';
|
||||
} else if (parseInt(args[0]) <= 0) {
|
||||
description = '❌ Vous ne pouvez pas retirer une somme négative ou nulle.';
|
||||
} else {
|
||||
title = 'Retrait Réussi';
|
||||
description = `🏦 Vous avez retiré ${args[0]} coins de votre compte en banque.`;
|
||||
db.run(`UPDATE users SET pocket = ?, bank = ? WHERE guildId = ? AND userId = ?`, [pocket + parseInt(args[0]), bank - parseInt(args[0]), message.guild.id, message.author.id]);
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(title)
|
||||
.setDescription(description)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,84 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['wk', 'travail'],
|
||||
description: 'Travaillez pour gagner de l\'argent.',
|
||||
emote: '💼',
|
||||
utilisation: '',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
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 lastWork = user.lastWork
|
||||
const pocket = user.pocket
|
||||
|
||||
if (lastWork > Date.now() - 3600000) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Travail Impossible')
|
||||
.setDescription(`❌ Vous avez déjà travaillé récemment. Veuillez attendre ${Math.floor((lastWork + 3600000 - Date.now()) / 60000)} minutes avant de pouvoir travailler à 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 } });
|
||||
}
|
||||
|
||||
const randomAmount = Math.floor(Math.random() * (500 - 100 + 1) + 100);
|
||||
db.run(`UPDATE users SET pocket = ?, lastWork = ? WHERE guildId = ? AND userId = ?`, [pocket + randomAmount, Date.now(), message.guild.id, message.author.id]);
|
||||
|
||||
const works = [
|
||||
`💼 Vous avez exploré une ancienne ruine et avez trouvé ${randomAmount} coins.`,
|
||||
`🛠️ Vous avez aidé un marchand à réparer son chariot et il vous a donné ${randomAmount} coins en remerciement.`,
|
||||
`🌳 En chassant dans la forêt, vous avez découvert un trésor caché contenant ${randomAmount} coins.`,
|
||||
`🔍 Après avoir résolu une énigme antique, vous avez reçu ${randomAmount} coins comme récompense.`,
|
||||
`🧪 Vous avez vendu des potions magiques sur le marché et avez gagné ${randomAmount} coins.`,
|
||||
`🕵️ En explorant une grotte sombre, vous avez trouvé ${randomAmount} coins dissimulés dans un coffre.`,
|
||||
`🐉 Après avoir vaincu un dragon, vous avez récupéré ${randomAmount} coins dans son repaire.`,
|
||||
`🏆 Vous avez participé à un tournoi de chevalerie et avez remporté ${randomAmount} coins en prix.`,
|
||||
`🗺️ En aidant un groupe de voyageurs perdus à retrouver leur chemin, vous avez reçu ${randomAmount} coins.`,
|
||||
`🔎 Après avoir résolu un mystère criminel, vous avez été récompensé par ${randomAmount} coins par la ville.`,
|
||||
`⚓ Vous avez navigué sur les mers et avez trouvé ${randomAmount} coins dans une épave.`,
|
||||
`⛏️ En explorant les catacombes, vous avez découvert ${randomAmount} coins enfouis dans le sol.`,
|
||||
`🌉 Après avoir construit un pont pour la communauté, vous avez reçu ${randomAmount} coins comme gratitude.`,
|
||||
`🦅 Vous avez réussi à apprivoiser un griffon et avez reçu ${randomAmount} coins en récompense.`,
|
||||
`⛏️ En découvrant une mine abandonnée, vous avez extrait ${randomAmount} coins de minerai précieux.`,
|
||||
`🏹 Vous avez secouru un groupe de voyageurs attaqués par des brigands et avez reçu ${randomAmount} coins comme reconnaissance.`,
|
||||
`📚 En explorant une ancienne bibliothèque abandonnée, vous avez trouvé ${randomAmount} coins cachés dans un vieux livre.`,
|
||||
`🏹 Après avoir participé à une compétition de tir à l'arc, vous avez remporté ${randomAmount} coins en prix.`,
|
||||
`😺 Vous avez sauvé un chaton coincé dans un arbre et son propriétaire vous a donné ${randomAmount} coins en guise de remerciement.`,
|
||||
`🕊️ En réussissant à apaiser une querelle entre deux factions rivales, vous avez été récompensé par ${randomAmount} coins.`,
|
||||
`🌊 Vous avez découvert un trésor antique dans les profondeurs de la mer et avez récupéré ${randomAmount} coins.`,
|
||||
`🏫 Après avoir construit une école pour les enfants du village, vous avez reçu ${randomAmount} coins de la part des parents reconnaissants.`,
|
||||
`👮 Vous avez capturé un voleur recherché et avez été récompensé par ${randomAmount} coins par les autorités locales.`,
|
||||
`🏞️ En explorant une caverne mystérieuse, vous avez trouvé ${randomAmount} coins dissimulés derrière une cascade.`,
|
||||
`🔨 Après avoir prêté main-forte à un forgeron pour créer une armure, vous avez été payé ${randomAmount} coins pour votre travail.`,
|
||||
`🏛️ Vous avez découvert un artefact magique dans les ruines d'un temple ancien et l'avez échangé contre ${randomAmount} coins.`,
|
||||
`🚶 En offrant vos services en tant que guide à des voyageurs perdus, vous avez gagné ${randomAmount} coins pour les ramener en sécurité.`,
|
||||
`🔥 Après avoir éteint un incendie qui menaçait le village, vous avez été récompensé par ${randomAmount} coins par les habitants reconnaissants.`,
|
||||
`🎉 Vous avez organisé un festival annuel pour célébrer la récolte et avez collecté ${randomAmount} coins en dons des participants.`,
|
||||
`🐉 En sauvant un noble des griffes d'une bête féroce, vous avez été généreusement récompensé par ${randomAmount} coins et des terres.`,
|
||||
`🏰 Après avoir découvert un passage secret dans le château du roi, vous avez trouvé ${randomAmount} coins cachés dans un coffre-fort.`,
|
||||
`👨👩👧👦 Vous avez résolu un conflit familial ancien et avez reçu ${randomAmount} coins en récompense de votre médiation.`,
|
||||
`⛏️ En explorant les montagnes, vous avez trouvé une mine abandonnée remplie de ${randomAmount} coins de minerai précieux.`,
|
||||
`📜 Après avoir livré un message crucial à temps, vous avez été payé ${randomAmount} coins par le destinataire reconnaissant.`,
|
||||
`🤝 Vous avez négocié un accord commercial fructueux entre deux cités et avez reçu ${randomAmount} coins comme commission.`,
|
||||
];
|
||||
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Travail Terminé')
|
||||
.setDescription(works[Math.floor(Math.random() * works.length)])
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,51 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: [],
|
||||
description: 'Ajoute de l\'argent de votre compte en banque ou de votre poche ou de votre réputation.',
|
||||
emote: '💰',
|
||||
utilisation: '<montant> <pocket|bank|reputation> [@membre]',
|
||||
permission: 10,
|
||||
|
||||
async execute(message, args, client) {
|
||||
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);
|
||||
});
|
||||
});
|
||||
|
||||
let member = message.author;
|
||||
let title = 'Ajout d\'argent';
|
||||
let description = `💰 Vous avez ajouté ${args[0]} à votre ${args[1]}.`;
|
||||
|
||||
if (isNaN(args[0])) {
|
||||
title = 'Erreur';
|
||||
description = '❌ Veuillez entrer un montant valide.';
|
||||
} else if (args[0] <= 0) {
|
||||
title = 'Erreur';
|
||||
description = '❌ Veuillez entrer un montant supérieur à 0.';
|
||||
} else if (args[1] !== 'pocket' && args[1] !== 'bank' && args[1] !== 'reputation') {
|
||||
title = 'Erreur';
|
||||
description = '❌ Veuillez entrer une destination valide (pocket, bank, reputation).';
|
||||
} else if (message.mentions.users.first()) {
|
||||
member = message.mentions.users.first();
|
||||
description = `💰 Vous avez ajouté ${args[0]} à la ${args[1]} de ${member.tag}.`;
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(title)
|
||||
.setDescription(description)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
if (title !== 'Erreur') {
|
||||
db.run(`UPDATE users SET ${args[1]} = ${args[1]} + ? WHERE guildId = ? AND userId = ?`, [args[0], message.guild.id, member.id]);
|
||||
}
|
||||
|
||||
message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,51 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: [],
|
||||
description: 'Retire de l\'argent de votre compte en banque ou de votre poche ou de votre réputation.',
|
||||
emote: '💰',
|
||||
utilisation: '<montant> <pocket|bank|reputation> [@membre]',
|
||||
permission: 10,
|
||||
|
||||
async execute(message, args, client) {
|
||||
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);
|
||||
});
|
||||
});
|
||||
|
||||
let member = message.author;
|
||||
let title = 'Argent retiré';
|
||||
let description = `💰 Vous avez retiré ${args[0]} à votre ${args[1]}.`;
|
||||
|
||||
if (isNaN(args[0])) {
|
||||
title = 'Erreur';
|
||||
description = '❌ Veuillez entrer un montant valide.';
|
||||
} else if (args[0] <= 0) {
|
||||
title = 'Erreur';
|
||||
description = '❌ Veuillez entrer un montant supérieur à 0.';
|
||||
} else if (args[1] !== 'pocket' && args[1] !== 'bank' && args[1] !== 'reputation') {
|
||||
title = 'Erreur';
|
||||
description = '❌ Veuillez entrer une destination valide (pocket, bank, reputation).';
|
||||
} else if (message.mentions.users.first()) {
|
||||
member = message.mentions.users.first();
|
||||
description = `💰 Vous avez retiré ${args[0]} à la ${args[1]} de ${member.tag}.`;
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(title)
|
||||
.setDescription(description)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
if (title !== 'Erreur') {
|
||||
db.run(`UPDATE users SET ${args[1]} = ${args[1]} - ? WHERE guildId = ? AND userId = ?`, [args[0], message.guild.id, member.id]);
|
||||
}
|
||||
|
||||
message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,366 @@
|
||||
const { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
|
||||
|
||||
const cardValues = {
|
||||
'A': 11, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 10, 'Q': 10, 'K': 10
|
||||
};
|
||||
|
||||
const cardSymbols = ['♠️', '♥️', '♦️', '♣️'];
|
||||
const usersWithGameInProgress = new Map();
|
||||
setInterval(() => {
|
||||
usersWithGameInProgress.clear();
|
||||
}, 180000);
|
||||
|
||||
function drawCard() {
|
||||
const symbol = cardSymbols[Math.floor(Math.random() * cardSymbols.length)];
|
||||
const value = Object.keys(cardValues)[Math.floor(Math.random() * Object.keys(cardValues).length)];
|
||||
return { symbol, value };
|
||||
}
|
||||
|
||||
|
||||
module.exports = {
|
||||
aliases: ['bj'],
|
||||
description: 'Joue au blackjack.',
|
||||
emote: '🃏',
|
||||
utilisation: '<mise>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
if (args.length !== 1) {
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🃏 Blackjack')
|
||||
.setDescription(`Vous devez spécifier une mise. Exemple : \`&blackjack 100\`.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
} else if (isNaN(args[0])) {
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🃏 Blackjack')
|
||||
.setDescription(`La mise doit être un nombre.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
} else if (args[0] < 25) {
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🃏 Blackjack')
|
||||
.setDescription(`La mise doit être supérieure ou égale à \`25\`.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
}
|
||||
|
||||
const pocket = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT pocket FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(row.pocket);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if (pocket < args[0]) {
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🃏 Blackjack')
|
||||
.setDescription(`Vous n'avez pas assez d'argent pour miser cette somme.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
} else {
|
||||
const user = message.author;
|
||||
const guildId = message.guild.id;
|
||||
const currencyName = 'coins'
|
||||
|
||||
let amount = args[0];
|
||||
|
||||
let pocketAmount = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT pocket FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(row.pocket || 0);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
const playerCards = [drawCard(), drawCard()];
|
||||
const dealerCards = [drawCard()];
|
||||
|
||||
const playerTotal = playerCards.reduce((total, card) => total + cardValues[card.value], 0);
|
||||
if (playerTotal === 21 && playerCards.length === 2) {
|
||||
const blackjackPayoutMultiplier = 1.25;
|
||||
const winnings = Math.floor(amount * blackjackPayoutMultiplier);
|
||||
|
||||
let pocketAmount = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT pocket FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(row.pocket || 0);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
db.run(`UPDATE users SET pocket = ? WHERE userId = ? AND guildId = ?`, [pocketAmount + winnings, message.author.id, message.guild.id], (err) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const winEmbed = new EmbedBuilder()
|
||||
.setTitle('Blackjack 🎲')
|
||||
.setDescription(`Félicitations ! Vous avez un blackjack naturel et vous avez gagné ${winnings} ${currencyName}.`)
|
||||
.setColor('#0099ff');
|
||||
|
||||
return message.reply({ embeds: [winEmbed], allowedMentions: { repliedUser: false } });
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Blackjack 🎲')
|
||||
.setThumbnail('https://cdn.discordapp.com/attachments/1120446538544595005/1190016467257802843/kumarhane-poker.gif?ex=65a04433&is=658dcf33&hm=3ea3b7c74eb724d17249e3a60968f8c10b7d85452f3684b969a02a17ca79ab3e&')
|
||||
.addFields(
|
||||
{ name: 'Votre main', value: `Cartes: ${playerCards.map(card => card.symbol + ' ' + card.value).join(' ')}\nTotal: ${playerTotal}`, inline: true },
|
||||
{ name: 'Main du croupier', value: `Cartes: ${dealerCards[0].symbol + ' ' + dealerCards[0].value} ?\nTotal: ?`, inline: true }
|
||||
)
|
||||
.setColor('#0099ff');
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(
|
||||
new ButtonBuilder()
|
||||
.setCustomId('blackjack_hit')
|
||||
.setLabel('Hit')
|
||||
.setStyle(ButtonStyle.Primary),
|
||||
new ButtonBuilder()
|
||||
.setCustomId('blackjack_stand')
|
||||
.setLabel('Stand')
|
||||
.setStyle(ButtonStyle.Primary),
|
||||
new ButtonBuilder()
|
||||
.setCustomId('blackjack_cancel')
|
||||
.setLabel('Annuler')
|
||||
.setStyle(ButtonStyle.Danger)
|
||||
);
|
||||
|
||||
const msg = await message.channel.send({ embeds: [embed], components: [row], allowedMentions: { repliedUser: false } });
|
||||
|
||||
const collector = msg.createMessageComponentCollector({time: 60000 });
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
db.run(`UPDATE users SET pocket = ? WHERE userId = ? AND guildId = ?`, [pocketAmount - amount, message.author.id, message.guild.id], (err) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
usersWithGameInProgress.set(user.id);
|
||||
collector.on('collect', async i => {
|
||||
if (i.user.id !== user.id) {
|
||||
return i.reply({ content: ":x: Vous n'avez pas la permission d'interagir avec ces boutons", ephemeral: true });
|
||||
}
|
||||
|
||||
await i.deferUpdate();
|
||||
|
||||
if (i.customId === 'blackjack_hit') {
|
||||
playerCards.push(drawCard());
|
||||
|
||||
let playerTotal = playerCards.reduce((total, card) => total + cardValues[card.value], 0);
|
||||
|
||||
if (playerTotal === 21) {
|
||||
const winnings = amount * 1.5;
|
||||
let pocketAmount = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT pocket FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(row.pocket || 0);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
db.run(`UPDATE users SET pocket = ? WHERE userId = ? AND guildId = ?`, [pocketAmount + winnings, message.author.id, message.guild.id], (err) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const winEmbed = new EmbedBuilder()
|
||||
.setTitle('Blackjack 🎲')
|
||||
.setDescription(`Félicitations ! Vous avez atteint 21. Vous avez gagné ${winnings} ${currencyName}.`)
|
||||
.setColor('#0099ff');
|
||||
|
||||
message.reply({ embeds: [winEmbed], allowedMentions: { repliedUser: false } });
|
||||
usersWithGameInProgress.delete(user.id);
|
||||
collector.stop();
|
||||
} else if (playerTotal > 21) {
|
||||
const loseEmbed = new EmbedBuilder()
|
||||
.setTitle('Blackjack 🎲')
|
||||
.setDescription(`Vous avez dépassé 21. Vous avez perdu ${amount} ${currencyName}.`)
|
||||
.setColor('#0099ff');
|
||||
|
||||
message.reply({ embeds: [loseEmbed], allowedMentions: { repliedUser: false } });
|
||||
collector.stop();
|
||||
} else {
|
||||
embed.spliceFields(0, 1, { name: 'Votre main', value: `Cartes: ${playerCards.map(card => card.symbol + ' ' + card.value).join(' ')}\nTotal: ${playerTotal}`, inline: true });
|
||||
i.editReply({ embeds: [embed] });
|
||||
}
|
||||
usersWithGameInProgress.delete(user.id);
|
||||
} else if (i.customId === 'blackjack_stand') {
|
||||
let dealerTotal = dealerCards.reduce((total, card) => total + cardValues[card.value], 0);
|
||||
while (dealerTotal < 17) {
|
||||
dealerCards.push(drawCard());
|
||||
dealerTotal = dealerCards.reduce((total, card) => total + cardValues[card.value], 0);
|
||||
}
|
||||
|
||||
const playerTotal = playerCards.reduce((total, card) => total + cardValues[card.value], 0);
|
||||
let result;
|
||||
if (dealerTotal > 21) {
|
||||
result = `Le croupier a dépassé 21. Vous gagnez ${amount * 1.5} ${currencyName}. !`;
|
||||
|
||||
let pocketAmount = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT pocket FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(row.pocket || 0);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
db.run(`UPDATE users SET pocket = ? WHERE userId = ? AND guildId = ?`, [pocketAmount + amount * 1.5, message.author.id, message.guild.id], (err) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const winEmbed = new EmbedBuilder()
|
||||
.setTitle('Blackjack 🎲')
|
||||
.setDescription(result)
|
||||
.setColor('#0099ff');
|
||||
|
||||
message.reply({ embeds: [winEmbed], allowedMentions: { repliedUser: false } });
|
||||
usersWithGameInProgress.delete(user.id);
|
||||
} else if (dealerTotal > playerTotal) {
|
||||
result = `Le croupier a ${dealerTotal} et gagne. Vous avez perdu ${amount} ${currencyName}.`;
|
||||
|
||||
const loseEmbed = new EmbedBuilder()
|
||||
.setTitle('Blackjack 🎲')
|
||||
.setDescription(result)
|
||||
.setColor('#0099ff');
|
||||
|
||||
message.reply({ embeds: [loseEmbed], allowedMentions: { repliedUser: false } });
|
||||
usersWithGameInProgress.delete(user.id);
|
||||
|
||||
} else if (dealerTotal < playerTotal) {
|
||||
let pocketAmount = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT pocket FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(row.pocket || 0);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const winnings = amount * 1.5;
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
db.run(`UPDATE users SET pocket = ? WHERE userId = ? AND guildId = ?`, [pocketAmount + winnings, message.author.id, message.guild.id], (err) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
result = `Vous gagnez ! Vous avez gagné ${winnings} ${currencyName}.`;
|
||||
|
||||
const winEmbed = new EmbedBuilder()
|
||||
.setTitle('Blackjack 🎲')
|
||||
.setDescription(result)
|
||||
.setColor('#0099ff');
|
||||
|
||||
message.reply({ embeds: [winEmbed], allowedMentions: { repliedUser: false } });
|
||||
usersWithGameInProgress.delete(user.id);
|
||||
} else {
|
||||
result = 'Il y a eu égalité. Vous récupérez votre mise.';
|
||||
let pocketAmount = await db.get(`${guildId}.pocket.${user.id}`) || 0;
|
||||
await db.set(`${guildId}.pocket.${user.id}`, pocketAmount + amount);
|
||||
|
||||
const tieEmbed = new EmbedBuilder()
|
||||
.setTitle('Blackjack 🎲')
|
||||
.setDescription(result)
|
||||
.setColor('#0099ff');
|
||||
|
||||
message.reply({ embeds: [tieEmbed], allowedMentions: { repliedUser: false } });
|
||||
}
|
||||
usersWithGameInProgress.delete(user.id);
|
||||
collector.stop();
|
||||
} else if (i.customId === 'blackjack_cancel') {
|
||||
let pocketAmount = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT pocket FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(row.pocket || 0);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
db.run(`UPDATE users SET pocket = ? WHERE userId = ? AND guildId = ?`, [pocketAmount + amount / 2, message.author.id, message.guild.id], (err) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const cancelEmbed = new EmbedBuilder()
|
||||
.setTitle('Blackjack 🎲')
|
||||
.setDescription('Partie annulée. Vous récupérez la moitié de votre mise.')
|
||||
.setColor('#0099ff');
|
||||
|
||||
message.reply({ embeds: [cancelEmbed], allowedMentions: { repliedUser: false } });
|
||||
|
||||
usersWithGameInProgress.delete(user.id);
|
||||
collector.stop();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,147 @@
|
||||
const { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['roulette'],
|
||||
description: 'Lance une roulette.',
|
||||
emote: '🎲',
|
||||
utilisation: '<mise> <couleur>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
if (args.length !== 2) {
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🎲 Roulette')
|
||||
.setDescription(`Vous devez spécifier une mise et une couleur. Exemple : \`&roulette 100 rouge\`.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
} else if (isNaN(args[0])) {
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🎲 Roulette')
|
||||
.setDescription(`La mise doit être un nombre.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
} else if (args[0] < 25) {
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🎲 Roulette')
|
||||
.setDescription(`La mise doit être supérieure ou égale à \`25\`.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
} else if (args[1] !== 'rouge' && args[1] !== 'noir' && args[1] !== 'vert' && args[1] !== 'red' && args[1] !== 'black' && args[1] !== 'green') {
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🎲 Roulette')
|
||||
.setDescription(`La couleur doit être \`rouge\`, \`noir\` ou \`vert\`.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
}
|
||||
|
||||
const pocket = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT pocket FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
if (row.pocket < args[0]) {
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🎲 Roulette')
|
||||
.setDescription(`Vous n'avez pas assez d'argent sur vous pour miser cette somme.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
} else {
|
||||
resolve(row.pocket);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🎲 Roulette')
|
||||
.setImage('https://images-ext-1.discordapp.net/external/Zz7GmmFoFdFRB7GCjiJGaDHDjJi8noOLY8zasCmUOGQ/https/media.giphy.com/media/26uflBhaGt5lQsaCA/giphy.gif')
|
||||
.setDescription(`Vous avez misé \`${args[0]}\` sur \`${args[1]}\`. La bille tourne...\nRésultat dans 10 secondes...`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
|
||||
await new Promise(resolve => setTimeout(resolve, 10000));
|
||||
|
||||
const result = Math.floor(Math.random() * 37);
|
||||
let colorR = '';
|
||||
if (result === 0) {
|
||||
colorR = 'vert';
|
||||
} else if (result % 2 === 0) {
|
||||
colorR = 'rouge';
|
||||
} else {
|
||||
colorR = 'noir';
|
||||
}
|
||||
|
||||
let gain = 0;
|
||||
if (((args[1] === 'rouge' || args[1] === 'red') && colorR === 'rouge') || ((args[1] === 'noir' || args[1] === 'black') && colorR === 'noir') || ((args[1] === 'vert' || args[1] === 'green') && colorR === 'vert')) {
|
||||
gain = args[0] * 2;
|
||||
} else {
|
||||
gain = 0-args[0];
|
||||
}
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
db.run(`UPDATE users SET pocket = pocket + ? WHERE userId = ? AND guildId = ?`, [gain, message.author.id, message.guild.id], (err) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if (gain >= 0) {
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🎲 Roulette')
|
||||
.setDescription(`Vous avez misé \`${args[0]}\` sur \`${args[1]}\` et la bille est tombée sur \`${colorR}\`. Vous avez gagné \`${gain}\` !`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
} else {
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🎲 Roulette')
|
||||
.setDescription(`Vous avez misé \`${args[0]}\` sur \`${args[1]}\` et la bille est tombée sur \`${colorR}\`. Vous avez perdu \`${0-gain}\` !`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,130 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
|
||||
let teamName
|
||||
let teamDescription
|
||||
|
||||
module.exports = {
|
||||
aliases: ['teamcreate'],
|
||||
description: 'Crée une team.',
|
||||
emote: '🛡️',
|
||||
utilisation: '',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT teamId, pocket FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
if (row.teamId !== null ) {
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Création de team')
|
||||
.setDescription(`Vous êtes déjà dans une team. Vous devez quitter votre team actuelle pour en créer une nouvelle.`)
|
||||
.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 team')
|
||||
.setDescription(`Vous n'avez pas assez de fonds pour créer une team. Vous avez besoin de 3000.`)
|
||||
.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 de team')
|
||||
.setDescription(`Ecrivez le nom de votre team 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 > 20) {
|
||||
m.reply('Le nom de la team ne doit pas dépasser 20 caractères.');
|
||||
return collector.stop();
|
||||
} else if (m.content.length < 3) {
|
||||
m.reply('Le nom de la team doit contenir au moins 3 caractères.');
|
||||
return collector.stop();
|
||||
} else {
|
||||
teamName = m.content;
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Création de team')
|
||||
.setDescription(`Ecrivez la description de votre team 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 > 100) {
|
||||
m.reply('La description de la team ne doit pas dépasser 100 caractères.');
|
||||
return collectorD.stop();
|
||||
} else if (m.content.length < 2) {
|
||||
m.reply('La description de la team doit contenir au moins 2 caractères.');
|
||||
return collectorD.stop();
|
||||
} else {
|
||||
teamDescription = m.content;
|
||||
|
||||
let idBase = teamName.toLowerCase().replace(/ /g, '');
|
||||
let id = idBase;
|
||||
let increment = 1;
|
||||
let exists = true;
|
||||
do {
|
||||
await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT * FROM teams WHERE id = ? AND guildId = ?`, [id, message.guild.id], (err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
exists = !!row;
|
||||
if (exists) {
|
||||
increment++;
|
||||
id = idBase + increment;
|
||||
} else {
|
||||
db.run(`INSERT INTO teams (guildId, id, name, description) VALUES (?, ?, ?, ?)`, [message.guild.id, id, teamName, teamDescription]);
|
||||
db.run(`UPDATE users SET teamId = ?, teamRole = ? WHERE guildId = ? AND userId = ?`, [id, 'owner', message.guild.id, message.author.id]);
|
||||
}
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
} while (exists);
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Création de team')
|
||||
.setDescription(`Votre team a été créée avec succès !\n\n**ID :** ${id}\n**Nom :** ${teamName}\n**Description :** ${teamDescription}\n\nVous pouvez maintenant inviter des membres dans votre team avec la commande \`&teaminvite\`.\n\nPour quitter la team, utilisez la commande \`&teamleave\`.`)
|
||||
.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();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,105 @@
|
||||
const { ButtonStyle, ButtonBuilder, ActionRowBuilder, EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['teamdelete'],
|
||||
description: 'Supprime votre équipe.',
|
||||
emote: '🛡️',
|
||||
util: '',
|
||||
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);
|
||||
});
|
||||
});
|
||||
|
||||
if (!team) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Suppression de l\'équipe')
|
||||
.setDescription('Vous n\'êtes actuellement pas dans une équipe.')
|
||||
.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 teamRole = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT teamRole FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row.teamRole);
|
||||
});
|
||||
});
|
||||
|
||||
if (teamRole !== 'owner') {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Suppression Impossible')
|
||||
.setDescription('❌ Vous n\'avez pas la permission de supprimer cette équipe.')
|
||||
.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 row = new ActionRowBuilder()
|
||||
.addComponents(
|
||||
new ButtonBuilder()
|
||||
.setCustomId('confirm_delete')
|
||||
.setLabel('Confirmer')
|
||||
.setStyle(ButtonStyle.Danger),
|
||||
new ButtonBuilder()
|
||||
.setCustomId('cancel_delete')
|
||||
.setLabel('Annuler')
|
||||
.setStyle(ButtonStyle.Secondary)
|
||||
);
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Suppression de l\'équipe')
|
||||
.setDescription(`Êtes-vous sûr de vouloir supprimer l'équipe ${team.name}? Cette action est irréversible.`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
message.reply({ embeds: [embed], components: [row], allowedMentions: { repliedUser: false } }).then(sentMessage => {
|
||||
const filter = i => i.customId === 'confirm_delete' || i.customId === 'cancel_delete' && i.user.id === message.author.id;
|
||||
|
||||
const collector = sentMessage.createMessageComponentCollector({ filter, time: 15000 });
|
||||
|
||||
collector.on('collect', async i => {
|
||||
if (i.customId === 'confirm_delete') {
|
||||
db.run(`DELETE FROM teams WHERE guildId = ? AND id = ?`, [message.guild.id, team.id], async (err) => {
|
||||
if (err) {
|
||||
return i.update({ content: 'Une erreur est survenue lors de la suppression de l\'équipe.', components: [] });
|
||||
}
|
||||
|
||||
db.run(`UPDATE users SET teamRole = NULL, teamId = NULL WHERE guildId = ? AND teamId = ?`, [message.guild.id, team.id], async (err) => {
|
||||
if (err) {
|
||||
return i.update({ content: 'Une erreur est survenue lors de la mise à jour des membres de l\'équipe.', components: [] });
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Suppression de l\'équipe')
|
||||
.setDescription(`L'équipe ${team.name} a été supprimée avec succès.`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
return i.update({ embeds: [embed], components: [] });
|
||||
});
|
||||
});
|
||||
} else {
|
||||
await i.update({ content: 'Suppression de l\'équipe annulée.', components: [] });
|
||||
}
|
||||
});
|
||||
|
||||
collector.on('end', collected => {
|
||||
if (collected.size === 0) sentMessage.edit({ content: 'Temps écoulé. Suppression de l\'équipe annulée.', components: [] });
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,113 @@
|
||||
const { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['teamdemote'],
|
||||
description: 'Rétrograder un officier à membre dans votre équipe.',
|
||||
emote: '🛡️',
|
||||
utilisation: '<@user>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
if (!args[0]) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Rétrograder un officier')
|
||||
.setDescription('Veuillez mentionner un utilisateur à rétrograder.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
const userToDemote = message.mentions.users.first();
|
||||
if (!userToDemote) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Rétrograder un officier')
|
||||
.setDescription('Utilisateur non trouvé.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
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);
|
||||
});
|
||||
});
|
||||
|
||||
if (!user || user.teamRole !== 'owner') {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Rétrograder un officier')
|
||||
.setDescription('Vous n\'êtes pas administrateur de cette équipe.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
const userToDemoteInfo = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, userToDemote.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row);
|
||||
});
|
||||
});
|
||||
|
||||
if (!userToDemoteInfo || userToDemoteInfo.teamId !== user.teamId) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Rétrograder un officier')
|
||||
.setDescription('L\'utilisateur mentionné n\'est pas dans votre équipe.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
if (userToDemoteInfo.teamRole !== 'officer') {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Rétrograder un officier')
|
||||
.setDescription('L\'utilisateur mentionné n\'est pas un officier.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
db.run(`UPDATE users SET teamRole = 'membre' WHERE guildId = ? AND userId = ?`, [message.guild.id, userToDemote.id], async (err) => {
|
||||
if (err) {
|
||||
return message.reply('Une erreur est survenue lors de la rétrogradation de l\'utilisateur.');
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Rétrogradation dans l\'équipe')
|
||||
.setDescription(`${userToDemote.tag} a été rétrogradé au rang de 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 } });
|
||||
});
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,94 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['tdep', 'tdepot', 'teamdep', 'teamdepot'],
|
||||
description: 'Dépose de l\'argent dans la banque de votre team.',
|
||||
emote: '💰',
|
||||
utilisation: '<montant|all>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
if (args.length !== 1) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Dépôt Impossible')
|
||||
.setDescription('❌ Vous devez spécifier un montant à déposer.')
|
||||
.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 if (args[0] !== 'all' && isNaN(args[0])) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Dépôt Impossible')
|
||||
.setDescription('❌ Vous devez spécifier un montant valide à déposer.')
|
||||
.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 if (args[0] < 1) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Dépôt Impossible')
|
||||
.setDescription('❌ Vous devez déposer au moins 1 coin.')
|
||||
.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 pocket = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT pocket FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row.pocket);
|
||||
});
|
||||
});
|
||||
|
||||
let amout;
|
||||
if (args[0] === 'all') {
|
||||
amout = pocket;
|
||||
} else if (args[0] > pocket) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Dépôt Impossible')
|
||||
.setDescription('❌ Vous n\'avez pas assez d\'argent sur vous pour déposer cette somme.\n\n💰 Vous avez actuellement **' + pocket + 'coins** sur vous.')
|
||||
.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 {
|
||||
amout = args[0];
|
||||
}
|
||||
|
||||
const team = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT teamId FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row.teamId);
|
||||
});
|
||||
});
|
||||
if (!team) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Dépôt Impossible')
|
||||
.setDescription('❌ Vous n\'êtes pas dans 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 {
|
||||
db.run(`UPDATE users SET pocket = pocket - ? WHERE guildId = ? AND userId = ?`, [amout, message.guild.id, message.author.id]);
|
||||
db.run(`UPDATE teams SET bank = bank + ? WHERE id = ?`, [amout, team]);
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Dépôt Effectué')
|
||||
.setDescription('💰 Vous avez déposé **' + amout + '** coins dans la banque de votre 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 } });
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,57 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['t'],
|
||||
description: 'Affiche les informations de votre team.',
|
||||
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);
|
||||
});
|
||||
});
|
||||
|
||||
if (!team) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Informations de team')
|
||||
.setDescription('Vous n\'êtes actuellement pas dans 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 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);
|
||||
});
|
||||
});
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Informations de team')
|
||||
.setDescription(`**Nom:** ${team.name}\n**Description:** ${team.description}\n**Banque:** ${team.bank} coins\n**Niveau:** ${team.level}\n**Soldats:** ${team.soldiers}\n**Soldats blessés:** ${team.woundedSoldiers}\n**Niveau du camp:** ${team.campLevel}\n**Tourelles:** ${team.turrets}\n**Cadenas:** ${team.padlock}\n**Membres (${memberlist.length}):**\n${memberlist.map(member => `<@${member.userId}> : ${member.teamRole}`).join('\n')}`)
|
||||
.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)) {
|
||||
embed.setImage(team.banner);
|
||||
}
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,54 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['tedit'],
|
||||
description: 'Modifie les informations de votre team.',
|
||||
emote: '🛡️',
|
||||
utilisation: '<nom|bannière|photo|description> <nouvelle valeur>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
if (args.length > 0) {
|
||||
const subCommand = args[0].toLowerCase();
|
||||
const newValue = args.slice(1).join(' ');
|
||||
|
||||
if (['name', 'banner', 'icon', 'description'].includes(subCommand)) {
|
||||
await new Promise((resolve, reject) => {
|
||||
db.run(`UPDATE teams SET ${subCommand} = ? WHERE guildId = ? AND id = (SELECT teamId FROM users WHERE guildId = ? AND userId = ?)`, [newValue, message.guild.id, message.guild.id, message.author.id], (err) => {
|
||||
if (err) reject(err);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Modification de team')
|
||||
.setDescription(`La ${subCommand} de votre team a été mise à jour.`)
|
||||
.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 embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Modification de team')
|
||||
.setDescription('❌ Vous devez spécifier ce que vous voulez modifier (name, banner, icon ou description).')
|
||||
.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 embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Modification de team')
|
||||
.setDescription('Veuillez spécifier ce que vous voulez modifier et la nouvelle valeur.')
|
||||
.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 } });
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,95 @@
|
||||
const { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['tinvite'],
|
||||
description: 'Invite un utilisateur à votre team.',
|
||||
emote: '🛡️',
|
||||
utilisation: '<@user>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
if (!args[0]) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Invitation à l\'équipe')
|
||||
.setDescription('Veuillez mentionner un utilisateur à inviter.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
const userToInvite = message.mentions.users.first();
|
||||
if (!userToInvite) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Invitation à l\'équipe')
|
||||
.setDescription('Utilisateur non trouvé.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
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);
|
||||
});
|
||||
});
|
||||
|
||||
if (!user || user.teamRole !== 'owner') {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Invitation à l\'équipe')
|
||||
.setDescription('Vous n\'êtes pas administrateur de cette équipe.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const accept = new ButtonBuilder()
|
||||
.setCustomId('accept')
|
||||
.setLabel('Rejoindre la team')
|
||||
.setStyle(ButtonStyle.Success);
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(accept);
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Invitation à l\'équipe')
|
||||
.setDescription(`<@${userToInvite.id}> tu as été invité à rejoindre l'équipe de <@${message.author.id}>. Pour accepter l'invitation, clique sur le bouton.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
(async () => {
|
||||
const sentMessage = await message.reply({ embeds: [embed], components: [row], allowedMentions: { repliedUser: false } });
|
||||
|
||||
const filter = i => i.customId === 'accept' && i.user.id === userToInvite.id;
|
||||
const collector = sentMessage.createMessageComponentCollector({ filter, time: 120000 });
|
||||
collector.on('collect', async (interaction) => {
|
||||
db.run(`UPDATE users SET teamId = ?, teamRole = ? WHERE guildId = ? AND userId = ?`, [user.teamId, 'membre', message.guild.id, userToInvite.id], (err) => {
|
||||
if (err) {
|
||||
return message.reply('Une erreur est survenue lors de l\'invitation de l\'utilisateur.');
|
||||
}
|
||||
interaction.reply({ content: 'Tu as rejoint l\'équipe.', allowedMentions: { repliedUser: false } });
|
||||
sentMessage.edit({ components: [] });
|
||||
});
|
||||
});
|
||||
})();
|
||||
});
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,144 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['teamkick'],
|
||||
description: 'Expulse un utilisateur de votre team.',
|
||||
emote: '🛡️',
|
||||
utilisation: '<@user>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
if (!args[0]) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Expulsion de l\'équipe')
|
||||
.setDescription('Veuillez mentionner un utilisateur à expulser.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
const userToKick = message.mentions.users.first();
|
||||
if (!userToKick) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Expulsion de l\'équipe')
|
||||
.setDescription('Utilisateur non trouvé.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
} else if (userToKick.id === message.author.id) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Expulsion de l\'équipe')
|
||||
.setDescription('Vous ne pouvez pas vous expulser de votre propre équipe. Si vous souhaitez quitter votre équipe, utilisez la commande `&tleave`.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
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);
|
||||
});
|
||||
});
|
||||
|
||||
if (!team) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Expulsion de l\'équipe')
|
||||
.setDescription('Vous n\'êtes pas dans une équipe.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
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 userToKickInfo = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, userToKick.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row);
|
||||
});
|
||||
});
|
||||
|
||||
if (!userToKickInfo || userToKickInfo.teamId !== user.teamId) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Expulsion de l\'équipe')
|
||||
.setDescription('L\'utilisateur mentionné n\'est pas dans votre équipe.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
if (!user || user.teamRole !== 'owner') {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Expulsion de l\'équipe')
|
||||
.setDescription('Vous n\'êtes pas administrateur de cette équipe.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
db.run(`UPDATE users SET teamId = NULL, teamRole = NULL WHERE guildId = ? AND userId = ?`, [message.guild.id, userToKick.id], async (err) => {
|
||||
if (err) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Expulsion de l\'équipe')
|
||||
.setDescription('Une erreur est survenue lors de l\'expulsion de l\'utilisateur.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Expulsion de l\'équipe')
|
||||
.setDescription(`${userToKick.tag} a été expulsé de l'équipe.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
});
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,101 @@
|
||||
const { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['teamleave'],
|
||||
description: 'Quitte une team.',
|
||||
emote: '🛡️',
|
||||
utilisation: '',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT teamId FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
if (row.teamId === null ) {
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Quitter une team')
|
||||
.setDescription(`Vous n'êtes dans aucune team.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT teamRole 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('🛡️ Quitter une team')
|
||||
.setDescription(`Vous êtes le leader de votre team. Vous devez nommer un autre membre leader avant de quitter la team. Pour cela, utilisez la commande \`&tpromote <membre>\` jusqu'à ce que vous ne soyez plus leader.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } })
|
||||
});
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Quitter une team')
|
||||
.setDescription(`Êtes-vous sûr de vouloir quitter votre team ?`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
const confirmeButton = new ButtonBuilder()
|
||||
.setCustomId('confirme')
|
||||
.setLabel('✅')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(confirmeButton);
|
||||
|
||||
const messageTeam = await message.reply({ embeds: [embed], components: [row], allowedMentions: { repliedUser: false } });
|
||||
|
||||
const filter = i => i.user.id === message.author.id;
|
||||
const collector = messageTeam.createMessageComponentCollector({ filter, time: 60000 });
|
||||
collector.on('collect', async i => {
|
||||
if (i.customId === 'confirme') {
|
||||
db.run(`UPDATE users SET teamId = NULL, teamRole = NULL WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], err => {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
return i.reply('Une erreur est survenue.');
|
||||
}
|
||||
|
||||
embedColor(message.author.id, message.guild.id).then(color => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Quitter une team')
|
||||
.setDescription(`Vous avez quitté votre team.`)
|
||||
.setColor(color)
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
|
||||
return i.update({ embeds: [embed], components: [] });
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,147 @@
|
||||
const { ButtonStyle, ButtonBuilder, ActionRowBuilder, EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['teamadmin', 'tadmin', 'teamowner'],
|
||||
description: 'Promouvoir un utilisateur à administrateur dans votre équipe.',
|
||||
emote: '🛡️',
|
||||
utilisation: '<@user>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
if (!args[0]) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription('Veuillez mentionner un utilisateur à promouvoir.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
const userToPromote = message.mentions.users.first();
|
||||
if (!userToPromote) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription('Utilisateur non trouvé.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
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);
|
||||
});
|
||||
});
|
||||
|
||||
if (!user || user.teamRole !== 'owner') {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription('Vous n\'êtes pas administrateur de cette équipe.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
const userToPromoteInfo = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, userToPromote.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row);
|
||||
});
|
||||
});
|
||||
|
||||
if (!userToPromoteInfo || userToPromoteInfo.teamId !== user.teamId) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription('L\'utilisateur mentionné n\'est pas dans votre équipe.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
const bouton = new ButtonBuilder()
|
||||
.setCustomId('promote_to_admin')
|
||||
.setLabel('Confirmer')
|
||||
.setStyle(ButtonStyle.Success);
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(bouton);
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription(`Êtes-vous sûr de vouloir promouvoir ${userToPromote.tag} au rang d'administrateur ?`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
const sendMessage = await message.reply({ embeds: [embed], components: [row], allowedMentions: { repliedUser: false } });
|
||||
|
||||
const filter = i => i.customId === 'promote_to_admin' && i.user.id === message.author.id;
|
||||
const collector = sendMessage.createMessageComponentCollector({ filter, time: 120000 });
|
||||
|
||||
collector.on('collect', async (interaction) => {
|
||||
db.run(`UPDATE users SET teamRole = 'owner' WHERE guildId = ? AND userId = ?`, [message.guild.id, userToPromote.id], async (err) => {
|
||||
if (err) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription('Une erreur est survenue lors de la promotion de l\'utilisateur.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
db.run(`UPDATE users SET teamRole = 'officier' WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], async (err) => {
|
||||
if (err) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription('Une erreur est survenue lors de la mise à jour de votre rôle.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription(`${userToPromote.tag} a été promu au rang d'administrateur. Vous avez été rétrogradé au rang d'officier.`)
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() });
|
||||
|
||||
sendMessage.edit({ embeds: [embed], components: [] });
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,123 @@
|
||||
const { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['teampromote'],
|
||||
description: 'Promouvoir un utilisateur à officier dans votre équipe.',
|
||||
emote: '🛡️',
|
||||
utilisation: '<@user>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
if (!args[0]) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription('Veuillez mentionner un utilisateur à promouvoir.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
const userToPromote = message.mentions.users.first();
|
||||
if (!userToPromote) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription('Utilisateur non trouvé.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
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);
|
||||
});
|
||||
});
|
||||
|
||||
if (!user || user.teamRole !== 'owner') {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription('Vous n\'êtes pas administrateur de cette équipe.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
const userToPromoteInfo = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, userToPromote.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row);
|
||||
});
|
||||
});
|
||||
|
||||
if (!userToPromoteInfo || userToPromoteInfo.teamId !== user.teamId) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription('L\'utilisateur mentionné n\'est pas dans votre équipe.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
if (userToPromoteInfo.teamRole === 'officer') {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription('L\'utilisateur mentionné est déjà un officier.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
db.run(`UPDATE users SET teamRole = 'officer' WHERE guildId = ? AND userId = ?`, [message.guild.id, userToPromote.id], async (err) => {
|
||||
if (err) {
|
||||
return message.reply({
|
||||
embeds: [
|
||||
new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription('Une erreur est survenue lors de la promotion de l\'utilisateur.')
|
||||
.setColor(await embedColor(message.author.id, message.guild.id))
|
||||
.setTimestamp()
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
],
|
||||
allowedMentions: { repliedUser: false }
|
||||
});
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🛡️ Promotion dans l\'équipe')
|
||||
.setDescription(`${userToPromote.tag} a été promu au rang d'officier.`)
|
||||
.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 } });
|
||||
});
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,113 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('../../fonctions/database.js');
|
||||
const embedColor = require('../../fonctions/embedColor.js');
|
||||
|
||||
module.exports = {
|
||||
aliases: ['tretirer', 'teamwithdraw', 'teamretirer', 'teamwh', 'twh'],
|
||||
description: 'Retire de l\'argent de la banque de votre team.',
|
||||
emote: '💰',
|
||||
utilisation: '<montant|all>',
|
||||
permission: 0,
|
||||
|
||||
async execute(message, args, client) {
|
||||
if (args.length !== 1) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Retrait Impossible')
|
||||
.setDescription('❌ Vous devez spécifier un montant à retirer.')
|
||||
.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 if (args[0] !== 'all' && isNaN(args[0])) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Retrait Impossible')
|
||||
.setDescription('❌ Vous devez spécifier un montant valide à retirer.')
|
||||
.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 if (args[0] < 1) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Retrait Impossible')
|
||||
.setDescription('❌ Vous devez retirer au moins 1 coin.')
|
||||
.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 teamRole = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT teamRole FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row.teamRole);
|
||||
});
|
||||
});
|
||||
|
||||
if (!teamRole || (teamRole !== 'officier' && teamRole !== 'owner')) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Retrait Impossible')
|
||||
.setDescription('❌ Vous n\'avez pas la permission de retirer de l\'argent de la banque de l\'équipe.')
|
||||
.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 team = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT teamId FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row.teamId);
|
||||
});
|
||||
});
|
||||
|
||||
if (!team) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Retrait Impossible')
|
||||
.setDescription('❌ Vous n\'êtes pas dans 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 bank = await new Promise((resolve, reject) => {
|
||||
db.get(`SELECT bank FROM teams WHERE id = ? AND guildId = ?`, [team, message.guild.id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
resolve(row.bank);
|
||||
});
|
||||
});
|
||||
|
||||
let amount;
|
||||
if (args[0] === 'all') {
|
||||
amount = bank;
|
||||
} else if (args[0] > bank) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Retrait Impossible')
|
||||
.setDescription(`❌ Votre team n'a pas assez d'argent dans la banque pour retirer cette somme.\n\n💰 Votre team a actuellement **${bank} coins** dans la banque.`)
|
||||
.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 {
|
||||
amount = args[0];
|
||||
}
|
||||
|
||||
db.run(`UPDATE users SET pocket = pocket + ? WHERE guildId = ? AND userId = ?`, [amount, message.guild.id, message.author.id]);
|
||||
db.run(`UPDATE teams SET bank = bank - ? WHERE id = ? AND guildId = ?`, [amount, team, message.guild.id]);
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Retrait Effectué')
|
||||
.setDescription(`💰 Vous avez retiré **${amount}** coins de la banque de votre 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 } });
|
||||
}
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user