Add systeme de niveau ( &bal == &lvl )

This commit is contained in:
*x1
2024-05-28 17:25:36 +02:00
parent 3adcf005f1
commit 3de542979c
4 changed files with 137 additions and 32 deletions
@@ -1,33 +1,35 @@
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 } });
},
const { EmbedBuilder } = require('discord.js');
const db = require('../../fonctions/database.js');
const embedColor = require('../../fonctions/embedColor.js');
module.exports = {
aliases: ['coin', 'coins', 'money', 'balance', 'bal', 'wallet', 'cash', 'lvl', 'level', 'niv', 'niveau'],
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 niveau = user.lvl
const xp = user.xp
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}\`\n\n> :bar_chart: **Niveau:** \`${niveau}\`\n> :thought_balloon: **xp:** \`${xp}\``)
.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 } });
},
};
+49
View File
@@ -0,0 +1,49 @@
const { Events } = require('discord.js');
const db = require('../fonctions/database.js');
module.exports = {
name: Events.InteractionCreate,
async execute(client, interaction) {
if (!interaction.isButton()) return
if (interaction.customId === "lvl_Recomp_Rep") {
const lvl = interaction.message.embeds[0].fields[0].value
const serv = interaction.message.embeds[0].fields[1].value
const user = await new Promise((resolve, reject) => {
db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [serv, member.id], (err, row) => {
if (err) reject(err);
resolve(row);
});
});
db.run(`UPDATE users SET reputation = reputation + ? WHERE guildId = ? AND userId = ?`, [lvl, serv, message.author.id]);
const embedClaim = new EmbedBuilder()
.setTitle('Recompense du niveau ' + lvl + ':')
.setDescription('La recompense du niveau ' + lvl + 'était de ' + lvl + 'reputation, ou bien de ' + lvl * 500 + 'coins\n\nVous avez choisi les reputations, vous avez donc `' + user.reputation + '` reputation !')
.setColor(await embedColor(message.author.id, serv))
.setTimestamp()
.setFooter({ text: `La recompense à été reçu sur le serveur ${serv.name}` })
interaction.edit({ embeds: [embedClaim], components: [] })
}
if (interaction.customId === "lvl_Recomp_Coins") {
const lvl = interaction.message.embeds[0].fields[0].value
const serv = interaction.message.embeds[0].fields[1].value
db.run(`UPDATE users SET pocket = pocket + ? WHERE guildId = ? AND userId = ?`, [lvl * 500, serv, message.author.id]);
const embedClaim = new EmbedBuilder()
.setTitle('Recompense du niveau ' + lvl + ':')
.setDescription('La recompense du niveau ' + lvl + 'était de ' + lvl + 'reputation, ou bien de ' + lvl * 500 + 'coins\n\nVous avez choisi les coins, vous avez donc `' + lvl * 500 + '` coins en plus !')
.setColor(await embedColor(message.author.id, serv))
.setTimestamp()
.setFooter({ text: `La recompense à été reçu sur le serveur ${serv.name}` })
interaction.edit({ embeds: [embedClaim], components: [] })
}
}
}
+52
View File
@@ -0,0 +1,52 @@
const { Message, Events, ActionRowBuilder, ActionRow, ButtonBuilder, EmbedBuilder } = require("discord.js");
const db = require('../fonctions/database.js');
module.exports = {
name: Events.MessageCreate,
async execute(message, client) {
if (message.author.bot) return;
if (message.content.length < 50) {
db.run(`UPDATE users SET xp = xp + 1, WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id]);
}
if (message.content.length >= 50) {
db.run(`UPDATE users SET xp = xp + 3, WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id]);
}
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.xp >= 100 * user.lvl) {
db.run(`UPDATE users SET xp = 0, lvl = lvl + 1 WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id]);
const embedlvl = new EmbedBuilder()
.setTitle('Nouveau niveau !')
.setDescription('Vous avez passé(e) un niveau sur ' + message.guild.name + ' !!\n\nVeuillez choisir une recompense :')
.setColor(await embedColor(message.author.id, message.guild.id))
.setTimestamp()
.addFields({ name: 'Le niveau passé :', value: `${user.lvl}`, inline: true })
.addFields({ name: 'Serveur id :', value: `${message.guild.id}`, inline: true})
.setFooter({ text: `Merci d'être actif/ve`, iconURL: message.author.displayAvatarURL() })
const btn1 = new ButtonBuilder()
.setCustomId('lvl_Recomp_Rep')
.setLabel(user.lvl + 'reputation')
.setStyle(ButtonStyle.Primary);
const btn2 = new ButtonBuilder()
.setCustomId('lvl_Recomp_Coins')
.setLabel(user.lvl * 500 + 'coins')
.setStyle(ButtonStyle.Primary);
const row = new ActionRowBuilder()
.addComponents(btn1)
.addComponents(btn2)
message.author.send({ embeds: [embedlvl], components: [row] })
}
}
};
+2
View File
@@ -15,6 +15,8 @@ db.run(`CREATE TABLE IF NOT EXISTS users (
pocket INTEGER DEFAULT 0,
bank INTEGER DEFAULT 0,
reputation INTEGER DEFAULT 0,
lvl INTERGER DEFAULT 0,
xp INTERGER DEFAULT 0,
buyer BOOLEAN DEFAULT FALSE,
owner BOOLEAN DEFAULT FALSE,
whitelist BOOLEAN DEFAULT FALSE,