mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-06 06:10:39 +02:00
grand commit que tutur attend ( marche pas le raidmode en dev)
sinon il y a pleins de truc comme les anti raid , des coorectif ect
This commit is contained in:
+28
-16
@@ -1,6 +1,29 @@
|
||||
const fetch = require('node-fetch');
|
||||
const axios = require('axios');
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
async function getUserBanner(user, message) {
|
||||
try {
|
||||
const response = await axios.get(`https://discord.com/api/users/${user.id}`, {
|
||||
headers: {
|
||||
Authorization: `Bot ${message.client.token}`
|
||||
}
|
||||
});
|
||||
|
||||
const data = response.data;
|
||||
|
||||
if (!data.banner) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const format = data.banner.startsWith('a_') ? 'gif' : 'png';
|
||||
const bannerURL = `https://cdn.discordapp.com/banners/${user.id}/${data.banner}.${format}?size=2048`;
|
||||
|
||||
return bannerURL;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
message.reply('Une erreur s\'est produite lors de la récupération des données de l\'utilisateur.');
|
||||
return null;
|
||||
}
|
||||
}
|
||||
module.exports = {
|
||||
name: 'banner',
|
||||
aliases: ['bannière', 'banniere'],
|
||||
@@ -11,26 +34,15 @@ module.exports = {
|
||||
|
||||
async execute(message, args, client) {
|
||||
const user = message.mentions.users.first() || message.author;
|
||||
const bannerURL = await getUserBanner(user, message);
|
||||
|
||||
const response = await fetch(`https://discord.com/api/users/${user.id}`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
Authorization: `Bot ${message.client.token}`
|
||||
}
|
||||
});
|
||||
const data = await response.json();
|
||||
|
||||
if (!data.banner) {
|
||||
return message.reply('Cet utilisateur n\'a pas de bannière.');
|
||||
if (!bannerURL) {
|
||||
return message.reply('Cet utilisateur n\'a pas de bannière.');
|
||||
}
|
||||
|
||||
const format = data.banner.startsWith('a_') ? 'gif' : 'png';
|
||||
|
||||
const bannerURL = `https://cdn.discordapp.com/banners/${user.id}/${data.banner}.${format}?size=2048`;
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(`Bannière de ${user.tag}`)
|
||||
.setImage(bannerURL)
|
||||
.setImage(bannerURL || '')
|
||||
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
|
||||
.setTimestamp();
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
const axios = require('axios');
|
||||
const BlaguesAPI = require('blagues-api');
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
name: 'blague',
|
||||
description: 'Envoie une blague au hasard.',
|
||||
emote: '😄',
|
||||
utilisation: 'blague ',
|
||||
category: 'utils',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const blagues = new BlaguesAPI("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiMjcyNzI0MTA4NjQ1NDk4ODgwIiwibGltaXQiOjEwMCwia2V5Ijoib3V6cDQ2cjhkT3NlV1I1ZmlmcDNCc1pZSDBGWHJsb0lBQmtSTXpmcnpJalp3NmVidEciLCJjcmVhdGVkX2F0IjoiMjAyNC0wMy0wNVQxODowMjozOCswMDowMCIsImlhdCI6MTcwOTY2MTc1OH0.i-hNHrRXSdceVa_4ozInjVAapkK6KNRPt1PjO5z6I7g");
|
||||
const blague = await blagues.random();
|
||||
const question = blague.joke;
|
||||
const reponse = blague.answer;
|
||||
const randomColor = Math.floor(Math.random() * 16777215).toString(16);
|
||||
|
||||
const blagueEmbed = new EmbedBuilder()
|
||||
.setDescription(`**${question}**\n➜ ||${reponse}||`)
|
||||
.setColor(parseInt(randomColor, 16))
|
||||
|
||||
message.reply({ embeds: [blagueEmbed] });
|
||||
},
|
||||
};
|
||||
@@ -1,5 +1,5 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
|
||||
const fetch = require('node-fetch');
|
||||
module.exports = {
|
||||
name: 'botconfig',
|
||||
description: 'Affiche la configuration du bot',
|
||||
@@ -11,8 +11,23 @@ module.exports = {
|
||||
async execute(message, args, client) {
|
||||
const bot = client.user;
|
||||
const presenceStatus = bot.presence.status;
|
||||
let presenceEmoji = '';
|
||||
|
||||
const axios = require('axios');
|
||||
const response = await fetch(`https://discord.com/api/users/${bot.id}`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
Authorization: `Bot ${message.client.token}`
|
||||
}
|
||||
});
|
||||
const data = await response.json();
|
||||
|
||||
if (!data.banner) {
|
||||
return message.reply('Cet utilisateur n\'a pas de bannière.');
|
||||
}
|
||||
|
||||
const format = data.banner.startsWith('a_') ? 'gif' : 'png';
|
||||
|
||||
const bannerURL = `https://cdn.discordapp.com/banners/${bot.id}/${data.banner}.${format}?size=2048`;
|
||||
let presenceEmoji = '';
|
||||
switch (presenceStatus) {
|
||||
case 'online':
|
||||
presenceEmoji = '🟢';
|
||||
@@ -36,6 +51,7 @@ module.exports = {
|
||||
{ name: 'Nom du bot', value: bot.username || 'Inconnu' },
|
||||
{ name: 'ID du bot', value: bot.id || 'Inconnu'},
|
||||
{ name: ' ', value: `[URL du profil](${bot.displayAvatarURL({ dynamic: true })})`},
|
||||
{ name: ' ', value: `[URL de la banniere](${bannerURL})`},
|
||||
{ name: 'Présence', value: `${presenceEmoji}`},
|
||||
{ name: 'Statut', value: bot.presence.activities[0] && bot.presence.activities[0].state ? bot.presence.activities[0].state : 'Aucun statut'}
|
||||
)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
module.exports = {
|
||||
name: 'christmas',
|
||||
description: 'Calcule le nombre de jours jusqu\'à Noël.',
|
||||
emote: '🎄',
|
||||
utilisation: 'christmas ',
|
||||
category: 'game',
|
||||
|
||||
async execute(message, args, client) {
|
||||
let today = new Date();
|
||||
let xmas = new Date(today.getFullYear(), 11, 24);
|
||||
if (today.getMonth() == 11 && today.getDate() > 24) {
|
||||
xmas.setFullYear(xmas.getFullYear() + 1);
|
||||
}
|
||||
let one_day = 1000 * 60 * 60 * 24;
|
||||
let daysleft = Math.ceil((xmas.getTime() - today.getTime()) / (one_day));
|
||||
let days = daysleft + 1;
|
||||
|
||||
message.reply(`🎄・Noël\n${days} jours jusqu'à Noël`);
|
||||
},
|
||||
};
|
||||
@@ -28,7 +28,7 @@ module.exports = {
|
||||
.setTitle('🎬 Films Populaires & Récents 🎥')
|
||||
.setDescription('Voici les films populaires et les plus récents en ce moment :')
|
||||
.setThumbnail(botUser.displayAvatarURL())
|
||||
.setTimestamp() // Ajoute l'heure actuelle
|
||||
.setTimestamp()
|
||||
.setFooter({ text: 'Commande Films', iconURL:botUser.displayAvatarURL() });
|
||||
filmsEmbed.addFields({ name: 'Films Populaires', value: popularFilms.map(film => film.title).join(',') || 'Non disponible' });
|
||||
filmsEmbed.addFields({ name: 'Nouveautés au Cinéma', value: recentFilms.map(film => film.title).join(',') || 'Non disponible' });
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
module.exports = {
|
||||
name: 'halloween',
|
||||
description: 'Calcule le nombre de jours jusqu\'à Halloween.',
|
||||
emote: '🎃',
|
||||
utilisation: 'halloween ',
|
||||
category: 'game',
|
||||
|
||||
async execute(message, args, client) {
|
||||
let today = new Date();
|
||||
let halloween = new Date(today.getFullYear(), 9, 31);
|
||||
if (today.getMonth() > 9) {
|
||||
halloween.setFullYear(halloween.getFullYear() + 1);
|
||||
}
|
||||
let one_day = 1000 * 60 * 60 * 24;
|
||||
let daysleft = Math.ceil((halloween.getTime() - today.getTime()) / (one_day));
|
||||
let days = daysleft + 1;
|
||||
|
||||
message.reply(`🎃・Halloween\n${days} jours jusqu'à Halloween`);
|
||||
},
|
||||
};
|
||||
+137
-16
@@ -17,18 +17,126 @@ module.exports = {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Arguments de messages")
|
||||
.addFields(
|
||||
{ name: '{MemberMention}', value: `Mentionne le membre concerné` , inline: true },
|
||||
{ name: '{MemberName}', value: `Le nom du membre concerné` , inline: true },
|
||||
{ name: '{MemberDisplayName}', value:'Le pseudo de serveur du membre concerné', inline: true },
|
||||
{ name: '{MemberJoinedAt}',value: `La date à la quelle le membre concerné a rejoint le serveur`, inline: true },
|
||||
{ name: '{MemberID}', value: `L'ID du membre concerné` , inline: true },
|
||||
{ name: '{MemberPic}', value:'La photo de profil du membre concerné' , inline: true },
|
||||
{ name: '{MemberCreatedAt}', value: 'La date de création du compte du membre concerné ', inline: true },
|
||||
{ name: '{ServerName}', value: 'Le nom du serveur concerné', inline: true },
|
||||
{ name: '{ServerMembersCount}', value: 'Le nombre total de membres sur le serveur', inline: true }
|
||||
)
|
||||
{ name: '{MemberMention}', value: `Mentionne le membre concerné (\`exemple\`: **<@${message.author.id}>**)`, inline: true },
|
||||
{ name: '{MemberName}', value: `Le nom du membre concerné (\`exemple\`: **${message.author.username}**)`, inline: true },
|
||||
{ name: '{MemberDisplayName}', value: `Le pseudo de serveur du membre concerné (\`exemple\`: **${message.member.displayName}**)`, inline: true },
|
||||
{ name: '{MemberJoinedAt}', value: `La date à laquelle le membre concerné a rejoint le serveur (\`exemple\`: **${new Date(message.member.joinedAt).toLocaleDateString('fr-FR')}**)`, inline: true },
|
||||
{ name: '{MemberID}', value: `L\'ID du membre concerné (\`exemple\`: **${message.author.id}**)`, inline: true },
|
||||
{ name: '{MemberPic}', value: `La photo de profil du membre concerné (\`exemple\`: **${message.author.displayAvatarURL({dynamic: true})}**)`, inline: true },
|
||||
{ name: '{MemberCreatedAt}', value: `La date de création du compte du membre concerné (\`exemple\`: **${new Date(message.author.createdAt).toLocaleDateString('fr-FR')}**)`, inline: true },
|
||||
{ name: '{ServerName}', value: `Le nom du serveur concerné (\`exemple\`: **${message.guild.name}**)`, inline: true },
|
||||
{ name: '{ServerMembersCount}', value: `Le nombre total de membres sur le serveur (\`exemple\`: **${message.guild.memberCount}**)`, inline: true }
|
||||
)
|
||||
return message.reply({ embeds: [embed] });
|
||||
}
|
||||
} else if (args[0] === 'antiraid' ) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Help AntiRaid")
|
||||
.setDescription(`
|
||||
**AntiRaid Configuration**
|
||||
|
||||
La commande \`antiraid\` permet de configurer la protection anti-raid pour votre serveur. Voici comment vous pouvez la configurer :
|
||||
|
||||
**Syntaxe :**
|
||||
\`\`\`
|
||||
+antiraid [type] [action]
|
||||
\`\`\`
|
||||
|
||||
**Types disponibles :**
|
||||
- \`whitelist\` : Permet de limiter l'accès aux actions anti-raid uniquement au whitelist du serveur et aux owners et buyer du bot.
|
||||
- \`owner\` : Permet de limiter l'accès aux actions anti-raid uniquement au owners et buyer du bot.
|
||||
- \`buyer\` : Permet de limiter l'accès aux actions anti-raid uniquement aux buyer du bot.
|
||||
- \`off\` : Désactive la protection anti-raid.
|
||||
|
||||
**Actions disponibles :**
|
||||
- \`derank\` : Retire les rôles dangereux des utilisateurs qui tentent de déclencher un raid.
|
||||
- \`kick\` : Expulse les utilisateurs qui tentent de déclencher un raid.
|
||||
- \`ban\` : Bannit les utilisateurs qui tentent de déclencher un raid.
|
||||
- \`nothing\` : Ne fait rien en réponse à un raid.
|
||||
|
||||
**Exemples d'utilisation :**
|
||||
- Pour activer la protection anti-raid avec une liste blanche : \`+antiraid whitelist derank\`
|
||||
- Pour désactiver la protection anti-raid : \`+antiraid off\`
|
||||
|
||||
Note : Assurez-vous d'avoir les permissions nécessaires pour exécuter cette commande.
|
||||
`)
|
||||
return message.reply({ embeds: [embed] });
|
||||
} else if (args[0] === 'backup') {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Aide pour la commande Backup")
|
||||
.setDescription(`
|
||||
**Gestion des sauvegardes**
|
||||
|
||||
La commande \`backup\` permet de créer, lister, charger ou supprimer des sauvegardes du serveur. Voici comment vous pouvez l'utiliser :
|
||||
|
||||
**Syntaxe :**
|
||||
\`\`\`
|
||||
+backup <paramètres>
|
||||
\`\`\`
|
||||
|
||||
**Paramètres disponibles :**
|
||||
- \`create\` : Crée une sauvegarde du serveur actuel.
|
||||
- \`list\` : Affiche la liste de toutes les sauvegardes disponibles.
|
||||
- \`load\` : Charge une sauvegarde sur le serveur. Vous devez spécifier l'ID de la sauvegarde à charger.
|
||||
- \`delete\` : Supprime une sauvegarde. Vous devez spécifier l'ID de la sauvegarde à supprimer.
|
||||
|
||||
**Exemples d'utilisation :**
|
||||
* Pour créer une sauvegarde : \`+backup create\`
|
||||
* Pour afficher la liste des sauvegardes : \`+backup list\`
|
||||
* Pour charger une sauvegarde (remplacez \`<backupId>\` par l'ID de la sauvegarde) : \`+backup load <backupId>\`
|
||||
* Pour supprimer une sauvegarde (remplacez \`<backupId>\` par l'ID de la sauvegarde) : \`+backup delete <backupId>\`
|
||||
|
||||
Note : Assurez-vous d'avoir les permissions nécessaires pour exécuter cette commande.
|
||||
`)
|
||||
return message.reply({ embeds: [embed] });
|
||||
} else if (args[0] === 'rolelimit') {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Aide pour la commande RoleLimit")
|
||||
.setDescription(`
|
||||
**Gestion des limites de rôles**
|
||||
|
||||
La commande \`rolelimit\` permet de gérer les limites de rôles pour les utilisateurs. Voici comment vous pouvez l'utiliser :
|
||||
|
||||
**Syntaxe :**
|
||||
\`\`\`
|
||||
+rolelimit
|
||||
\`\`\`
|
||||
|
||||
**Fonctionnalités :**
|
||||
- **Ajouter une limite de rôle :** Utilisez le bouton "Add" pour ajouter une limite à un rôle spécifique. Vous devrez mentionner le rôle ou fournir son ID et spécifier la limite.
|
||||
- **Supprimer une limite de rôle :** Utilisez le bouton "Remove" pour supprimer une limite de rôle. Vous devrez mentionner le rôle ou fournir son ID.
|
||||
|
||||
**Exemples d'utilisation :**
|
||||
- Pour ajouter une limite de rôle : Sélectionnez le bouton "Add", mentionnez le rôle et spécifiez la limite.
|
||||
- Pour supprimer une limite de rôle : Sélectionnez le bouton "Remove", mentionnez le rôle.
|
||||
|
||||
Note : Assurez-vous d'avoir les permissions nécessaires pour exécuter cette commande.
|
||||
`)
|
||||
return message.reply({ embeds: [embed] });
|
||||
} else if (args[0] === 'confession') {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle("Aide pour le système de confession")
|
||||
.setDescription(`
|
||||
**Configuration du système de confession**
|
||||
|
||||
Le système de confession permet aux utilisateurs de partager leurs confessions de manière anonyme. Voici comment vous pouvez le configurer :
|
||||
|
||||
**Syntaxe :**
|
||||
\`\`\`
|
||||
+setconfession [channel|send] [channelID|#channel]
|
||||
\`\`\`
|
||||
|
||||
**Paramètres disponibles :**
|
||||
- \`channel\` : Définit le salon de confession pour le serveur. Vous devez spécifier l'ID du salon ou mentionner le salon.
|
||||
- \`send\` : Envoie un embed avec un bouton pour ajouter une confession dans le salon spécifié. Vous devez spécifier l'ID du salon ou mentionner le salon.
|
||||
|
||||
**Exemples d'utilisation :**
|
||||
- Pour définir le salon de confession : \`+setconfession channel <channelID|#channel>\`
|
||||
- Pour envoyer un embed de confession : \`+setconfession send <channelID|#channel>\`
|
||||
|
||||
**Note : **Assurez-vous d'avoir les permissions nécessaires pour exécuter cette commande.
|
||||
`)
|
||||
return message.reply({ embeds: [embed] });
|
||||
} else {
|
||||
let data = await new Promise((resolve, reject) => {
|
||||
db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
|
||||
if (err) {
|
||||
@@ -43,7 +151,7 @@ module.exports = {
|
||||
let mainPrefix = data.prefixes && data.prefixes.main ? data.prefixes.main : defaultPrefix;
|
||||
let serverPrefix = data.prefixes && data.prefixes[guildId];
|
||||
const prefix = serverPrefix !== undefined ? serverPrefix : mainPrefix;
|
||||
if (args[0]) {
|
||||
if (args[0] && client.commands.has(args[0])) {
|
||||
const command = client.commands.get(args[0]);
|
||||
if (!command) {
|
||||
return message.reply(`Je n'ai pas trouvé de commande nommée "${args[0]}".`);
|
||||
@@ -74,7 +182,7 @@ module.exports = {
|
||||
{ name: 'Permissions', value: commandPerm === 11 ? 'buyer' : commandPerm === 10 ? 'owner' : `Perm level: ${commandPerm}`, inline: true },
|
||||
)
|
||||
.setTimestamp()
|
||||
.setFooter({text: `${client.user.tag} © 2024`, iconURL: client.user.displayAvatarURL({dynamic: true})})
|
||||
.setFooter({text: `By Valou336 and tuturp33`, iconURL: client.user.displayAvatarURL({dynamic: true})})
|
||||
|
||||
return message.reply({ embeds: [embed_command] });
|
||||
}
|
||||
@@ -87,9 +195,21 @@ module.exports = {
|
||||
game: [],
|
||||
gestion: [],
|
||||
utils: [],
|
||||
invitation: [],
|
||||
other: [],
|
||||
};
|
||||
|
||||
const categoryEmojis = {
|
||||
antiraid: '🛡️',
|
||||
botcontrol: '🛠️',
|
||||
moderation: '⚖️',
|
||||
buyer: '💰',
|
||||
game: '🎮',
|
||||
gestion: '📝',
|
||||
utils: '⚙️',
|
||||
invitation: '📩',
|
||||
other: '❓',
|
||||
};
|
||||
|
||||
let liste = [];
|
||||
for (const command of client.commands.values()) {
|
||||
const existingCommand = liste.find(cmd => cmd.name === command.name);
|
||||
@@ -144,13 +264,13 @@ module.exports = {
|
||||
.setPlaceholder('Sélectionnez une catégorie')
|
||||
.addOptions([
|
||||
{ label: 'Accueil', value: 'home' },
|
||||
...Object.keys(categories).map(category => ({ label: `Catégorie ${category}`, value: category })),
|
||||
...Object.keys(categories).map(category => ({ label: `${categoryEmojis[category]} ${category}`, value: category })),
|
||||
]);
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(menu);
|
||||
const sentMessage = await message.reply({ embeds: [embeds[args[0]] || embeds.home], components: [row] });
|
||||
|
||||
const sentMessage = await message.reply({ embeds: [embeds.home], components: [row] });
|
||||
|
||||
const filter = i => i.customId === 'help_menu' && i.user.id === message.author.id;
|
||||
const collector = sentMessage.createMessageComponentCollector({ filter, time: 60000 });
|
||||
@@ -161,5 +281,6 @@ module.exports = {
|
||||
collector.on('end', () => {
|
||||
sentMessage.edit({ components: [] });
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
+32
-16
@@ -1,6 +1,7 @@
|
||||
const { EmbedBuilder , ButtonBuilder, ButtonStyle, ActionRowBuilder } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
|
||||
module.exports = {
|
||||
name: 'helpall',
|
||||
description: 'Liste toutes les commandes disponibles par niveau de permission',
|
||||
@@ -35,27 +36,43 @@ try {
|
||||
commandsByPermission[permissionLevel].push(commandName);
|
||||
}
|
||||
|
||||
|
||||
|
||||
const embeds = Object.entries(commandsByPermission).map(([permissionLevel, commands]) => {
|
||||
const commandDescriptions = commands.map(commandName => {
|
||||
const command = client.commands.get(commandName);
|
||||
if (!command) {
|
||||
if (!command || permissions[command.name] === "off") {
|
||||
return null;
|
||||
}
|
||||
return `**${prefix}${commandName}**\n\`${command.description}\``;
|
||||
return `* \`${prefix}${command.utilisation}\``;
|
||||
}).filter(Boolean);
|
||||
|
||||
if (commandDescriptions.length === 0) {
|
||||
return null;
|
||||
if (commandDescriptions.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(`Commandes de niveau de permission ${permissionLevel}`)
|
||||
.setColor('#0099ff');
|
||||
const embedsForPermissionLevel = [];
|
||||
let currentEmbedDescription = '';
|
||||
commandDescriptions.forEach(description => {
|
||||
if ((currentEmbedDescription + description).length <= 4096) {
|
||||
currentEmbedDescription += description + '\n';
|
||||
} else {
|
||||
embedsForPermissionLevel.push(currentEmbedDescription);
|
||||
currentEmbedDescription = description + '\n';
|
||||
}
|
||||
});
|
||||
if (currentEmbedDescription) {
|
||||
embedsForPermissionLevel.push(currentEmbedDescription);
|
||||
}
|
||||
|
||||
embed.setDescription(commandDescriptions.join('\n'));
|
||||
return embed;
|
||||
}).filter(Boolean)
|
||||
return embedsForPermissionLevel.map(description => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(`Commandes de niveau de permission ${permissionLevel === '0' ? "public" : permissionLevel === '10' ? "owner" : permissionLevel === '11' ? "buyer" : permissionLevel}`)
|
||||
.setColor('#0099ff');
|
||||
embed.setDescription(description);
|
||||
embed.permissionLevel = permissionLevel
|
||||
return embed;
|
||||
});
|
||||
}).flat().filter(Boolean);
|
||||
|
||||
if (embeds.length === 0) {
|
||||
return message.reply("Aucune commande disponible pour ce serveur.");
|
||||
@@ -81,22 +98,21 @@ try {
|
||||
filter: (interaction) => interaction.isButton() && interaction.user.id === message.author.id,
|
||||
time: 60000
|
||||
});
|
||||
|
||||
const userPermissionLevel = await getPermissionLevel(message.member, client);
|
||||
let currentPage = 0;
|
||||
collector.on('collect', async (interaction) => {
|
||||
await interaction.deferUpdate();
|
||||
|
||||
if (interaction.customId === 'back') {
|
||||
currentPage = currentPage > 0 ? --currentPage : embeds.length - 1;
|
||||
currentPage = currentPage > 0 ? --currentPage : 0;
|
||||
} else if (interaction.customId === 'next') {
|
||||
currentPage = currentPage + 1 < embeds.length ? ++currentPage : 0;
|
||||
currentPage = currentPage + 1 < embeds.length && embeds[currentPage + 1].permissionLevel <= userPermissionLevel ? ++currentPage : 0;
|
||||
}
|
||||
|
||||
await msg.edit({ embeds: [embeds[currentPage]], components: [row] });
|
||||
});
|
||||
|
||||
collector.on('end', () => msg.edit({ embeds: [embeds[currentPage]], components: [] }));
|
||||
}catch (error) {
|
||||
console.log(error);
|
||||
return message.reply("Veuillez changer des commandes de permission pour avoir accès au helpall.");
|
||||
}
|
||||
},
|
||||
|
||||
@@ -7,7 +7,7 @@ module.exports = {
|
||||
description: "Recherche et envoie des images basées sur une requête.",
|
||||
category: 'utils',
|
||||
emote: '🔍',
|
||||
utilisation: '+image [requête]',
|
||||
utilisation: 'image [requête]',
|
||||
async execute(message, args, client) {
|
||||
const query = args.join(" ");
|
||||
if (!query) return message.react("❌");
|
||||
@@ -25,7 +25,6 @@ module.exports = {
|
||||
|
||||
message.channel.send({ embeds: [embed] });
|
||||
}).catch(error => {
|
||||
console.error(error);
|
||||
message.reply('Une erreur est survenue lors de la recherche de l\'image.');
|
||||
});
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ module.exports = {
|
||||
description: "Permet d'afficher les informations des utilisateurs du serveur.",
|
||||
category: 'utils',
|
||||
emote: '🌐',
|
||||
utilisation: '+statserveur',
|
||||
utilisation: 'statserveur',
|
||||
async execute(message, args, client) {
|
||||
const members = await message.guild.members.fetch();
|
||||
const totalMembers = members.size;
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
|
||||
const paginationEmbed = require('discordjs-button-pagination');
|
||||
|
||||
module.exports = {
|
||||
name: 'news',
|
||||
aliases: ['changelog'],
|
||||
description: 'Affiche tous les changements récents sur le bot',
|
||||
category: "utils" ,
|
||||
emote:"📌",
|
||||
utilisation: "changelog",
|
||||
async execute(message, args, client) {
|
||||
let changelogs = await new Promise((resolve, reject) => {
|
||||
db.get('SELECT value FROM master WHERE id = ?', ["changelogGestion"], (err, row) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
reject(err);
|
||||
}
|
||||
resolve(row ? JSON.parse(row.value) : []);
|
||||
});
|
||||
});
|
||||
|
||||
if (changelogs.length === 0) {
|
||||
const noChangeLogEmbed = new EmbedBuilder()
|
||||
.setTitle('Aucun changement récent')
|
||||
.setDescription('Il n\'y a aucun changement récent à afficher.')
|
||||
.setColor('#0099ff');
|
||||
return message.channel.send({ embeds: [noChangeLogEmbed] });
|
||||
}
|
||||
|
||||
const embeds = changelogs.map((log, index) => {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(new Date(log.timestamp).toLocaleDateString())
|
||||
.setDescription(log.text)
|
||||
.setColor('#0099ff');
|
||||
return embed;
|
||||
});
|
||||
|
||||
const backButton = new ButtonBuilder()
|
||||
.setCustomId('previousbtn')
|
||||
.setLabel('Précédent')
|
||||
.setStyle(ButtonStyle.Danger);
|
||||
|
||||
const nextButton = new ButtonBuilder()
|
||||
.setCustomId('nextbtn')
|
||||
.setLabel('Suivant')
|
||||
.setStyle(ButtonStyle.Success);
|
||||
|
||||
const buttonList = [backButton, nextButton];
|
||||
|
||||
const timeout = 15000;
|
||||
|
||||
paginationEmbed(message, embeds, buttonList, timeout);
|
||||
},
|
||||
};
|
||||
+114
-25
@@ -1,43 +1,132 @@
|
||||
const { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
const paginationEmbed = require('discordjs-button-pagination');
|
||||
module.exports = {
|
||||
name: 'prevname',
|
||||
description: 'Affiche tous les pseudos précédents et permet de les supprimer',
|
||||
category: 'utils',
|
||||
emote: '🔍',
|
||||
utilisation: 'prevname',
|
||||
async execute(message, args) {
|
||||
async execute(message, args, client) {
|
||||
const userId = message.author.id;
|
||||
|
||||
let nameChanges = await new Promise((resolve, reject) => {
|
||||
db.get('SELECT value FROM prevname WHERE id = ?', [userId], (err, row) => {
|
||||
if (args[0] === "clear") {
|
||||
let hasPrevname = await new Promise((resolve, reject) => {
|
||||
db.get('SELECT value FROM prevname WHERE id = ?', [userId], (err, row) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
reject(err);
|
||||
}
|
||||
resolve(row !== undefined);
|
||||
});
|
||||
});
|
||||
|
||||
if (!hasPrevname) {
|
||||
await message.reply({ content: "Vous n'avez aucun prevname à supprimer."});
|
||||
return;
|
||||
}
|
||||
|
||||
db.run('DELETE FROM prevname WHERE id = ?', [userId], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
reject(err);
|
||||
} else {
|
||||
message.reply({ content: "Vos prevname ont été correctement supprimés." });
|
||||
}
|
||||
resolve(row ? JSON.parse(row.value) : []);
|
||||
});
|
||||
});
|
||||
}else {
|
||||
let nameChanges = await new Promise((resolve, reject) => {
|
||||
db.get('SELECT value FROM prevname WHERE id = ?', [userId], (err, row) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
reject(err);
|
||||
}
|
||||
resolve(row ? JSON.parse(row.value) : []);
|
||||
});
|
||||
});
|
||||
|
||||
let description = 'Vous n\'avez pas de pseudos précédents enregistrés.';
|
||||
if (nameChanges.length > 0) {
|
||||
description = nameChanges.map((change, index) => `${index + 1}. ${change.newName} - <t:${change.changeDate}:F>`).join('\n');
|
||||
if (nameChanges.length === 0) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Pseudos précédents')
|
||||
.setDescription('Vous n\'avez pas de pseudos précédents enregistrés.')
|
||||
.setColor('#0099ff');
|
||||
await message.reply({ embeds: [embed] });
|
||||
return;
|
||||
}
|
||||
|
||||
const embeds = [];
|
||||
for (let i = 0; i < nameChanges.length; i += 10) {
|
||||
const page = nameChanges.slice(i, i + 10).map((change, index) => `${index + 1}. ${change.newName} - <t:${change.changeDate}:F>`).join('\n');
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Pseudos précédents')
|
||||
.setDescription(page)
|
||||
.setColor('#0099ff');
|
||||
embeds.push(embed);
|
||||
}
|
||||
|
||||
|
||||
const backButton = new ButtonBuilder()
|
||||
.setCustomId('previousbtn')
|
||||
.setEmoji('⬅️')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
|
||||
const nextButton = new ButtonBuilder()
|
||||
.setCustomId('nextbtn')
|
||||
.setEmoji('➡️')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
|
||||
const deleteButton = new ButtonBuilder()
|
||||
.setCustomId(`deleteprevnames_${message.author.id}`)
|
||||
.setEmoji('🗑️')
|
||||
.setStyle(ButtonStyle.Secondary);
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(backButton, nextButton, deleteButton);
|
||||
const sentMessage = await message.reply({ embeds: [embeds[0]], components: [row] });
|
||||
|
||||
|
||||
const filter = i => i.user.id === message.author.id;
|
||||
const collector = sentMessage.createMessageComponentCollector({ filter, time: 30000 });
|
||||
collector.on('collect', async i => {
|
||||
if (!i.message.paginationState) {
|
||||
i.message.paginationState = { currentPage: 0 };
|
||||
}
|
||||
|
||||
if (i.customId === 'previousbtn') {
|
||||
i.message.paginationState.currentPage--;
|
||||
} else if (i.customId === 'nextbtn') {
|
||||
i.message.paginationState.currentPage++;
|
||||
}
|
||||
|
||||
if (i.message.paginationState.currentPage < 0) {
|
||||
i.message.paginationState.currentPage = 0;
|
||||
} else if (i.message.paginationState.currentPage >= embeds.length) {
|
||||
i.message.paginationState.currentPage = embeds.length - 1;
|
||||
}
|
||||
|
||||
|
||||
const newEmbed = embeds[i.message.paginationState.currentPage];
|
||||
const backButton = new ButtonBuilder()
|
||||
.setCustomId('previousbtn')
|
||||
.setEmoji('⬅️')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
|
||||
const nextButton = new ButtonBuilder()
|
||||
.setCustomId('nextbtn')
|
||||
.setEmoji('➡️')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
const deleteButton = new ButtonBuilder()
|
||||
.setCustomId(`deleteprevnames_${message.author.id}`)
|
||||
.setEmoji('🗑️')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(backButton, nextButton, deleteButton);
|
||||
|
||||
await i.update({ embeds: [newEmbed], components: [row] });
|
||||
});
|
||||
collector.on('end', collected => {
|
||||
const disabledRow = new ActionRowBuilder()
|
||||
.addComponents(backButton.setDisabled(true), nextButton.setDisabled(true), deleteButton);
|
||||
sentMessage.edit({ components: [disabledRow] });
|
||||
});
|
||||
}
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Pseudos précédents')
|
||||
.setDescription(description)
|
||||
.setColor('#0099ff');
|
||||
|
||||
const deleteButton = new ButtonBuilder()
|
||||
.setCustomId(`deleteprevnames_${message.author.id}`)
|
||||
.setEmoji('🗑️')
|
||||
.setStyle(ButtonStyle.Secondary);
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(deleteButton);
|
||||
|
||||
await message.reply({ embeds: [embed], components: [row] });
|
||||
},
|
||||
};
|
||||
@@ -3,7 +3,7 @@ const Discord = require('discord.js');
|
||||
module.exports = {
|
||||
name: 'wiki',
|
||||
description: 'Recherche un mot clé sur Wikipedia et affiche le résumé dans un embed.',
|
||||
utilisation: '+wiki <mot clé>',
|
||||
utilisation: 'wiki <mot clé>',
|
||||
category: 'info',
|
||||
|
||||
async execute(message, args, client) {
|
||||
|
||||
Reference in New Issue
Block a user