add anti crash + command

This commit is contained in:
Tutur33
2024-03-15 20:35:35 +01:00
parent deac21bd8e
commit 51e2d61358
14 changed files with 208 additions and 46 deletions
+2 -3
View File
@@ -1,12 +1,11 @@
import { PermissionsBitField, Message, Client } from 'discord.js'; import { PermissionsBitField, Message, Client } from 'discord.js';
module.exports = { module.exports = {
name: 'invite',
aliases: ['inv'], aliases: ['inv'],
description: 'Crée un lien d\'invitation pour un serveur spécifique', description: 'Crée un lien d\'invitation pour un serveur spécifique',
emote: '🔗', emote: '🔗',
utilisation: 'invite [guildId]', utilisation: '[guildId]',
category: 'botcontrol', permission: '10',
async execute(message: Message, args: string[], client: Client) { async execute(message: Message, args: string[], client: Client) {
if (!args[0]) return message.reply('Veuillez fournir l\'ID du serveur.'); if (!args[0]) return message.reply('Veuillez fournir l\'ID du serveur.');
+2
View File
@@ -5,6 +5,8 @@ module.exports = {
description: 'Liste les serveur du bot', description: 'Liste les serveur du bot',
emote: '🌐', emote: '🌐',
utilisation: '', utilisation: '',
permission: '10',
async execute(message: Message, args: string[], client: Client) { async execute(message: Message, args: string[], client: Client) {
if (!client.user) return; if (!client.user) return;
const guilds = Array.from(client.guilds.cache.values()).map((guild, index) => `${index + 1}. ${guild.name} : ${guild.id}`).join("\n\n"); const guilds = Array.from(client.guilds.cache.values()).map((guild, index) => `${index + 1}. ${guild.name} : ${guild.id}`).join("\n\n");
+39 -39
View File
@@ -5,46 +5,46 @@ module.exports = {
description: 'Modifier divers paramètres du bot.', description: 'Modifier divers paramètres du bot.',
emote: '⚙️', emote: '⚙️',
utilisation: 'set <name/pic> <nom/lien>', utilisation: 'set <name/pic> <nom/lien>',
permissions: 10,
async execute(message: Message, args: string[], client: Client) { async execute(message: Message, args: string[], client: Client) {
if (args.length < 2) { if (args.length < 2) {
return message.reply('Veuillez fournir un paramètre parmis `name` ou `pic` pour sa valeur.'); return message.reply('Veuillez fournir un paramètre parmis `name` ou `pic` pour sa valeur.');
} }
const setting = args[0]; const setting = args[0];
if (setting === 'name') { if (setting === 'name') {
const value = args.slice(1).join(' '); const value = args.slice(1).join(' ');
if (value) { if (value) {
try { try {
if (!message.guild || !client.user) return; if (!message.guild || !client.user) return;
const botMember = await message.guild.members.fetch(client.user.id); const botMember = await message.guild.members.fetch(client.user.id);
await botMember.setNickname(value); await botMember.setNickname(value);
return message.reply(`Mon nouveau pseudo est maintenant **${value}**.`); return message.reply(`Mon nouveau pseudo est maintenant **${value}**.`);
} catch (error) { } catch (error) {
console.error(error); console.error(error);
return message.reply('Une erreur est survenue lors de la tentative de changement de mon pseudo.'); return message.reply('Une erreur est survenue lors de la tentative de changement de mon pseudo.');
}
} else {
return message.reply('Veuillez fournir un nom valide.');
}
} else if (setting === 'pic') {
const value = args[1];
if (value && value.startsWith('http')) {
try {
if (!client.user) return;
await client.user.edit({avatar: value});
return message.reply('Mon avatar a été mis à jour avec succès.');
} catch (error) {
console.error(error);
return message.reply('Une erreur est survenue lors de la tentative de mise à jour de mon avatar.');
}
} else {
return message.reply('Veuillez fournir un URL d\'image valide.');
} }
} else { } else {
return message.reply('Paramètre invalide. Veuillez utiliser "name" ou "pic".'); return message.reply('Veuillez fournir un nom valide.');
} }
}, } else if (setting === 'pic') {
}; const value = args[1];
if (value && value.startsWith('http')) {
try {
if (!client.user) return;
await client.user.edit({avatar: value});
return message.reply('Mon avatar a été mis à jour avec succès.');
} catch (error) {
console.error(error);
return message.reply('Une erreur est survenue lors de la tentative de mise à jour de mon avatar.');
}
} else {
return message.reply('Veuillez fournir un URL d\'image valide.');
}
} else {
return message.reply('Paramètre invalide. Veuillez utiliser "name" ou "pic".');
}
},
};
+2
View File
@@ -1,10 +1,12 @@
import { Message, Client, EmbedBuilder, StringSelectMenuBuilder, ActionRowBuilder, ActivityType, Activity } from "discord.js"; import { Message, Client, EmbedBuilder, StringSelectMenuBuilder, ActionRowBuilder, ActivityType, Activity } from "discord.js";
module.exports = { module.exports = {
aliases: ['setact'],
description: 'Changer la présence du bot', description: 'Changer la présence du bot',
emote: '🎮', emote: '🎮',
utilisation: '', utilisation: '',
permission: '8', permission: '8',
async execute(message: Message, args:string[], client: Client) { async execute(message: Message, args:string[], client: Client) {
if (!client.user) return if (!client.user) return
@@ -1,6 +1,6 @@
import sqlite3 from 'sqlite3'; import sqlite3 from 'sqlite3';
import { Message } from 'discord.js'; import { Message } from 'discord.js';
const getServerPrefix = require("../fonctions/getServerPrefix"); const getServerPrefix = require("../../fonctions/getServerPrefix");
module.exports = { module.exports = {
aliases: ['prefixset'], aliases: ['prefixset'],
+2
View File
@@ -1,10 +1,12 @@
import { Message, Client, EmbedBuilder, StringSelectMenuBuilder, ActionRowBuilder } from "discord.js"; import { Message, Client, EmbedBuilder, StringSelectMenuBuilder, ActionRowBuilder } from "discord.js";
module.exports = { module.exports = {
aliases: ['setpres'],
description: 'Changer le status du bot', description: 'Changer le status du bot',
emote: '🟢', emote: '🟢',
utilisation: '', utilisation: '',
permission: '8', permission: '8',
async execute(message: Message, args:string[], client: Client) { async execute(message: Message, args:string[], client: Client) {
if (!client.user) return if (!client.user) return
+35
View File
@@ -0,0 +1,35 @@
import { Message, Client, ButtonStyle, ButtonBuilder, ActionRowBuilder } from "discord.js";
module.exports = {
aliases: ['addbuttonurl', 'addurlbtn', 'addurlbutton'],
description: 'Ajoute un bouton url',
emote: '🔗',
utilisation: '[url] [message ID] [label]',
permission: 10,
async execute(message: Message, args: string[], client: Client) {
if (!args[0]) return message.reply('Veuillez fournir une url');
if (!args[1]) return message.reply('Veuillez fournir un ID de message');
if (!args[2]) return message.reply('Veuillez fournir un label');
const url = args[0];
const messageId = args[1];
const label = args.slice(2).join(' ');
if (url && !/^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/.test(url)) {
return message.reply('Veuillez fournir une URL valide');
}
const button = new ButtonBuilder()
.setLabel(label)
.setURL(url)
.setStyle(ButtonStyle.Link);
const row: any = new ActionRowBuilder()
.addComponents(button);
const msg = await message.channel.messages.fetch(messageId);
if (!msg) return message.reply('Message introuvable');
if (msg.author.id !== client.user?.id) return message.reply('Ce message n\'a pas été envoyé par moi');
msg.edit({ components: [row] });
},
};
+28
View File
@@ -0,0 +1,28 @@
import { Message, EmbedBuilder } from "discord.js";
module.exports = {
aliases: ['allbots'],
description: 'Affiche tous les bots sur le serveur',
emote: '🤖',
utilisation: '',
permission: 0,
async execute(message: Message) {
if (!message.guild) return message.reply('Cette commande ne peut être utilisée que dans un serveur');
const bots = message.guild.members.cache.filter(member => member.user.bot);
const embed = new EmbedBuilder()
.setTitle('Liste des bots présents')
.setColor('#0099ff');
if (bots.size > 0) {
const botList = Array.from(bots.values()).map((bot, index) => `${index + 1} - <@${bot.id}>`).join('\n');
embed.setDescription(botList);
embed.setFooter({ text: `Total : ${bots.size}`});
} else {
embed.setDescription('Il n\'y a pas de bot sur le serveur');
}
message.channel.send({ embeds: [embed] });
},
};
+28
View File
@@ -0,0 +1,28 @@
import { Message, EmbedBuilder, PermissionsBitField } from "discord.js";
module.exports = {
aliases: ['alladmins'],
description: 'Affiche tous les membres avec la permission d\'administrateur sur le serveur',
emote: '🔧',
utilisation: '',
permission: 0,
async execute(message: Message) {
if (!message.guild) return message.reply('Cette commande ne peut être utilisée que dans un serveur');
const admins = message.guild.members.cache.filter(member => member.permissions.has(PermissionsBitField.Flags.Administrator));
const embed = new EmbedBuilder()
.setTitle('Administrateurs sur le serveur')
.setColor('#0099ff');
if (admins.size > 0) {
const adminList = Array.from(admins.values()).map((admin, index) => `${index + 1} - <@${admin.id}>`).join('\n');
embed.setDescription(adminList);
embed.setFooter({ text :`Total : ${admins.size}`});
} else {
embed.setDescription('Il n\'y a pas d\'administrateur sur le serveur');
}
message.channel.send({ embeds: [embed] });
},
};
+38
View File
@@ -0,0 +1,38 @@
const fetch = require('node-fetch');
import { Message, Client, EmbedBuilder } from "discord.js";
module.exports = {
aliases: ['bannière', 'banniere'],
description: 'Affiche la bannière d\'un utilisateur',
emote: '🔍',
utilisation: '<@user>',
permission: 0,
async execute(message: Message, args: string[], client: Client) {
const user = message.mentions.users.first() || message.author;
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.');
}
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)
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
.setTimestamp();
message.reply({ embeds: [embed] });
},
};
+1 -1
View File
@@ -1,5 +1,5 @@
import { Message, EmbedBuilder, StringSelectMenuBuilder, ActionRowBuilder } from "discord.js"; import { Message, EmbedBuilder, StringSelectMenuBuilder, ActionRowBuilder } from "discord.js";
const getServerPrefix = require("../fonctions/getServerPrefix"); const getServerPrefix = require("../../fonctions/getServerPrefix");
interface Command { interface Command {
name: string; name: string;
+28 -1
View File
@@ -1,4 +1,4 @@
const { Events, ActivityType } = require("discord.js"); import { Events } from "discord.js";
const addBaseInDB = require("../fonctions/addBaseInDB"); const addBaseInDB = require("../fonctions/addBaseInDB");
module.exports = { module.exports = {
@@ -6,5 +6,32 @@ module.exports = {
async execute(client: any) { async execute(client: any) {
addBaseInDB(client); addBaseInDB(client);
console.log(`le bot ${client.user.tag} est en ligne`) console.log(`le bot ${client.user.tag} est en ligne`)
process.on('unhandledRejection', (error) => {
console.log(' [antiCrash] :: Unhandled Rejection/Catch');
console.log(error);
});
process.on("uncaughtException", (error, origin) => {
console.log(' [antiCrash] :: Uncaught Exception/Catch');
console.log(error);
console.log('Information supplémentaire:', origin);
});
process.on('uncaughtExceptionMonitor', (error, origin) => {
console.log(' [antiCrash] :: Uncaught Exception Monitor/Catch');
console.log(error);
console.log('Information supplémentaire:', origin);
});
process.on('beforeExit', (code) => {
console.log(' [antiCrash] :: Before Exit');
console.log('Code de sortie:', code);
});
process.on('exit', (code) => {
console.log(' [antiCrash] :: Exit');
console.log('Code de sortie:', code);
});
} }
}; };
+2 -1
View File
@@ -12,11 +12,12 @@ module.exports = function loadCommands(client: any, dir: string) {
delete require.cache[require.resolve(filePath)]; delete require.cache[require.resolve(filePath)];
const command = require(filePath); const command = require(filePath);
const fileName = file.replace(/\.js|\.ts/g, ''); const fileName = file.replace(/\.js|\.ts/g, '');
command.name = fileName; if (!command.name) command.name = fileName;
if (!command.category) { if (!command.category) {
const parentDir = path.basename(path.dirname(filePath)); const parentDir = path.basename(path.dirname(filePath));
command.category = parentDir === 'commands' ? 'other' : parentDir; command.category = parentDir === 'commands' ? 'other' : parentDir;
} }
if (!command.permission) command.permission = 0;
client.commands.set(fileName, command); client.commands.set(fileName, command);
if (command.aliases) { if (command.aliases) {
command.aliases.forEach((alias: string) => { command.aliases.forEach((alias: string) => {