Files
LazyBot/app/commands/📈 Niveaux/level.js
T
2026-01-18 14:42:22 +01:00

92 lines
2.8 KiB
JavaScript

const addCommand = require("../../fonctions/addCommand");
const { EmbedBuilder } = require("discord.js");
const db = require("../../db");
module.exports = addCommand({
name: "level",
description: "Affiche votre niveau et XP sur ce serveur.",
aliases: ["lvl", "xp", "niveau"],
permissions: [],
botOwnerOnly: false,
dm: false,
scope: "guild",
guildCondition: async (guildId) => {
return new Promise((resolve) => {
db.get(
"SELECT enabled FROM levels_config WHERE guild_id = ?",
[guildId],
(err, row) => {
if (err) {
console.error(`DB error in guildCondition for guild ${guildId}`, err);
return resolve(false);
}
resolve(!!row?.enabled);
}
);
});
},
executePrefix: async (client, message, args) => {
const guildId = message.guild.id;
const userId = message.author.id;
db.get(
`SELECT xp, level FROM user_levels WHERE guild_id = ? AND user_id = ?`,
[guildId, userId],
async (err, row) => {
if (err) {
console.error("DB error fetching user level", err);
return message.reply("Une erreur est survenue en récupérant votre niveau.");
}
if (!row) {
return message.reply("Vous n'avez pas encore de niveau dans ce serveur.");
}
const embed = new EmbedBuilder()
.setTitle(`${message.author.username} — Niveau`)
.setDescription(`Vous êtes au **niveau ${row.level}** avec **${row.xp} XP**.`)
.setColor("#00FF00")
.setTimestamp()
.setFooter({ text: `ID: ${userId}` });
await message.reply({ embeds: [embed] });
}
);
},
executeSlash: async (client, interaction) => {
const guildId = interaction.guild.id;
const userId = interaction.user.id;
db.get(
`SELECT xp, level FROM user_levels WHERE guild_id = ? AND user_id = ?`,
[guildId, userId],
async (err, row) => {
if (err) {
console.error("DB error fetching user level", err);
return interaction.reply({ content: "Une erreur est survenue en récupérant votre niveau.", ephemeral: true });
}
if (!row) {
return interaction.reply({ content: "Vous n'avez pas encore de niveau dans ce serveur.", ephemeral: true });
}
const embed = new EmbedBuilder()
.setTitle(`${interaction.user.username} — Niveau`)
.setDescription(`Vous êtes au **niveau ${row.level}** avec **${row.xp} XP**.`)
.setColor("#00FF00")
.setTimestamp()
.setFooter({ text: `ID: ${userId}` });
await interaction.reply({ embeds: [embed] });
}
);
},
slashData: new (require("discord.js").SlashCommandBuilder)()
.setName("level")
.setDescription("Affiche votre niveau et XP sur ce serveur."),
});