ajout du système d'xp
This commit is contained in:
parent
ccba4756d1
commit
753c924ff1
138
index.js
138
index.js
@ -197,3 +197,141 @@ client.on('guildMemberRemove', member => {
|
|||||||
|
|
||||||
// Connexion du bot à Discord
|
// Connexion du bot à Discord
|
||||||
client.login('TOKEN_DU_BOT');
|
client.login('TOKEN_DU_BOT');
|
||||||
|
|
||||||
|
// Variables globales pour stocker les paramètres XP et les canaux exclus
|
||||||
|
let excludedChannels = [];
|
||||||
|
let xpMultiplierChannels = [];
|
||||||
|
let xpCooldowns = {};
|
||||||
|
|
||||||
|
client.on('message', message => {
|
||||||
|
// Vérifier si le message est dans un salon exclu ou provenant du bot lui-même
|
||||||
|
if (excludedChannels.includes(message.channel.id) || message.author.bot) return;
|
||||||
|
|
||||||
|
// Vérifier si l'utilisateur est un booster
|
||||||
|
let xpMultiplier = 1;
|
||||||
|
if (message.member.roles.cache.some(role => role.name === 'Booster')) {
|
||||||
|
xpMultiplier = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vérifier si le salon a un multiplicateur d'XP
|
||||||
|
if (xpMultiplierChannels.includes(message.channel.id)) {
|
||||||
|
xpMultiplier *= 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vérifier si l'utilisateur est déjà en cooldown
|
||||||
|
if (xpCooldowns[message.author.id]) return;
|
||||||
|
|
||||||
|
// Ajouter l'XP à l'utilisateur
|
||||||
|
addXP(message.author, 1 * xpMultiplier);
|
||||||
|
|
||||||
|
// Mettre l'utilisateur en cooldown pour 2 minutes
|
||||||
|
xpCooldowns[message.author.id] = true;
|
||||||
|
setTimeout(() => {
|
||||||
|
delete xpCooldowns[message.author.id];
|
||||||
|
}, 120000);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Fonction pour ajouter de l'XP à un utilisateur
|
||||||
|
function addXP(user, amount) {
|
||||||
|
// Logique pour ajouter l'XP à l'utilisateur
|
||||||
|
// ...
|
||||||
|
|
||||||
|
// Vérifier si l'utilisateur a atteint un nouveau rang
|
||||||
|
const currentXP = getUserXP(user);
|
||||||
|
const newRank = calculateRank(currentXP + amount);
|
||||||
|
if (newRank !== getUserRank(user)) {
|
||||||
|
const newRole = getRoleFromRank(newRank);
|
||||||
|
const notificationMessage = `Héhé ! C'est que tu as bien xp dit donc, tu peux désormais évoluer au ${newRole} ! Pour cela, rien de plus simple, utilise la commande /gachajaiunegrosseépée.`;
|
||||||
|
user.send(notificationMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fonction pour calculer le nouveau rang à partir de l'XP
|
||||||
|
function calculateRank(xp) {
|
||||||
|
if (xp >= 66666) return "Rang S++";
|
||||||
|
if (xp >= 10000) return "Rang S+";
|
||||||
|
if (xp >= 1000) return "Rang S";
|
||||||
|
if (xp >= 100) return "Rang A";
|
||||||
|
return "Rang B";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fonction pour obtenir le rang d'un utilisateur
|
||||||
|
function getUserRank(user) {
|
||||||
|
const xp = getUserXP(user);
|
||||||
|
return calculateRank(xp);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fonction pour obtenir l'XP d'un utilisateur
|
||||||
|
function getUserXP(user) {
|
||||||
|
// Logique pour récupérer l'XP d'un utilisateur
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fonction pour obtenir le rôle associé à un rang
|
||||||
|
function getRoleFromRank(rank) {
|
||||||
|
// Logique pour obtenir le rôle associé à un rang
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commande pour obtenir le nouveau rang
|
||||||
|
client.on('message', message => {
|
||||||
|
if (message.content === '/gachajaiunegrosseépée') {
|
||||||
|
const user = message.author;
|
||||||
|
const currentXP = getUserXP(user);
|
||||||
|
const newRank = calculateRank(currentXP);
|
||||||
|
const roles = ['Rang B', 'Rang A', 'Rang S', 'Rang S+', 'Rang S++'];
|
||||||
|
const index = roles.indexOf(newRank);
|
||||||
|
if (index !== -1) {
|
||||||
|
const newRole = roles[index + 1];
|
||||||
|
const guildRole = message.guild.roles.cache.find(role => role.name === newRole);
|
||||||
|
if (guildRole) {
|
||||||
|
const currentRole = message.guild.roles.cache.find(role => role.name === getUserRank(user));
|
||||||
|
if (currentRole) {
|
||||||
|
message.member.roles.remove(currentRole);
|
||||||
|
}
|
||||||
|
message.member.roles.add(guildRole);
|
||||||
|
message.reply(`Félicitations ! Vous avez maintenant atteint le ${newRole}.`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Commande pour exclure des salons du décompte de l'XP
|
||||||
|
client.on('message', message => {
|
||||||
|
if (message.member.hasPermission('ADMINISTRATOR') && message.content.startsWith('/excludesalon')) {
|
||||||
|
const channelID = message.content.split(' ')[1];
|
||||||
|
excludedChannels.push(channelID);
|
||||||
|
message.channel.send(`Le salon avec l'ID ${channelID} a été exclu du décompte de l'XP.`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Commande pour multiplier l'XP dans certains salons
|
||||||
|
client.on('message', message => {
|
||||||
|
if (message.member.hasPermission('ADMINISTRATOR') && message.content.startsWith('/multiplierxp')) {
|
||||||
|
const channelID = message.content.split(' ')[1];
|
||||||
|
xpMultiplierChannels.push(channelID);
|
||||||
|
message.channel.send(`Le salon avec l'ID ${channelID} a maintenant un multiplicateur d'XP.`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Variable globale pour stocker le rôle déclenchant le Rang ULTRA
|
||||||
|
let ultraRole = null;
|
||||||
|
|
||||||
|
// Fonction pour vérifier si l'utilisateur a le rôle déclenchant le Rang ULTRA
|
||||||
|
function hasUltraRole(user) {
|
||||||
|
return user.roles.cache.some(role => role === ultraRole);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fonction pour obtenir le rôle "Rang ULTRA" et l'assigner à la variable globale
|
||||||
|
function setUltraRole(roleName) {
|
||||||
|
ultraRole = message.guild.roles.cache.find(role => role.name === roleName);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commande pour définir le rôle déclenchant le Rang ULTRA
|
||||||
|
client.on('message', message => {
|
||||||
|
if (message.member.hasPermission('ADMINISTRATOR') && message.content.startsWith('/gachaoptions ultrarole')) {
|
||||||
|
const roleName = message.content.split(' ')[1];
|
||||||
|
setUltraRole(roleName);
|
||||||
|
message.channel.send(`Le rôle déclenchant le Rang ULTRA a été défini sur "${roleName}".`);
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user