upgrade clear , add : presetlog , changeall , best configuration of the ready.js and add anticrash module,

This commit is contained in:
VALOU3336
2024-03-02 14:49:21 +01:00
parent 7a6eae8682
commit 44f5e84484
8 changed files with 217 additions and 56 deletions
+58
View File
@@ -0,0 +1,58 @@
const fs = require('fs');
const path = require('path');
const sqlite3 = require('sqlite3').verbose();
module.exports = {
name: 'changeall',
aliases: ['permchangeall'],
description: 'Change le niveau de permission de toutes les commandes ayant un niveau de permission spécifié',
emote: '🔄',
utilisation: 'changeall <niveau actuel> <nouveau niveau>',
category: 'botcontrol',
async execute(message, args, client) {
const botId = client.user.id;
const unchangeableCommands = ['owner', 'unowner', 'buyer'];
if (args.length < 2) {
return message.reply('Veuillez spécifier un niveau de permission actuel et un nouveau niveau de permission.');
}
const currentPermissionLevel = parseInt(args[0]);
const newPermissionLevel = parseInt(args[1]);
if (isNaN(currentPermissionLevel) || isNaN(newPermissionLevel) || currentPermissionLevel < 0 || currentPermissionLevel > 9 || newPermissionLevel < 0 || newPermissionLevel > 9) {
return message.reply('Veuillez spécifier des niveaux de permission valides (entre 0 et 9).');
}
const db = new sqlite3.Database('myDatabase.db');
let permissions = await new Promise((resolve, reject) => {
db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
if (err) {
console.error(err.message);
reject(err);
}
resolve(row ? JSON.parse(row.value) : {});
});
});
if (!permissions.permissions) {
permissions.permissions = {};
}
// Parcourir toutes les commandes et mettre à jour le niveau de permission
for (const commandName in permissions.permissions) {
if (permissions.permissions[commandName] === currentPermissionLevel) {
permissions.permissions[commandName] = newPermissionLevel;
}
}
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(permissions)], (err) => {
if (err) {
console.error(err.message);
}
});
message.reply(`Le niveau de permission de toutes les commandes ayant le niveau ${currentPermissionLevel} a été changé à ${newPermissionLevel}.`);
},
};
+12 -3
View File
@@ -1,4 +1,5 @@
const { PermissionsBitField} = require("discord.js")
const { PermissionsBitField } = require("discord.js");
module.exports = {
name: 'clear',
aliases: ['purge', 'delete', 'suppr', 'efface', 'nettoie', 'vide', 'clean', 'effacer'],
@@ -7,14 +8,22 @@ module.exports = {
utilisation: 'clear <nombre de messages>',
category: 'gestion',
async execute(message, args, client) {
const amount = parseInt(args[0]) + 1;
let amount;
if (args[0]) {
amount = parseInt(args[0]);
if (isNaN(amount)) {
return message.reply('Veuillez entrer un nombre valide');
} else if (amount <= 1 || amount > 100) {
return message.reply('Vous devez entrer un nombre entre 1 et 99');
}
amount = amount + 2;
} else {
const messages = await message.channel.messages.fetch({ limit: 100 });
amount = messages.size;
}
console.log(amount)
await message.reply('🗑️ Clear en cours...');
await message.channel.bulkDelete(amount + 1, true).catch((err) => {
await message.channel.bulkDelete(amount).catch((err) => {
message.reply('Une erreur est survenue lors du clear');
});
},
+2 -2
View File
@@ -27,7 +27,7 @@ module.exports = {
{ name: '🎙️ Logs vocaux', value: data[message.guild.id]?.vocallog ? `<#${data[message.guild.id].vocallog}>` : 'Non configuré', inline: true },
{ name: '🛡️ Logs de raid', value: data[message.guild.id]?.raidlog ? `<#${data[message.guild.id].raidlog}>` : 'Non configuré', inline: true },
{ name: '🔧 Logs de modération', value: data[message.guild.id]?.modlog ? `<#${data[message.guild.id].modlog}>` : 'Non configuré', inline: true },
{ name: '🛡️ raidping', value: data[message.guild.id]?.modlog ? `<#${data[message.guild.id].modlog}>` : 'Non configuré', inline: true },
{ name: '🛡️ raidping', value: data[message.guild.id]?.modlog ? `${data[message.guild.id].raidping}` : 'Non configuré', inline: true },
);
const selectMenu = new StringSelectMenuBuilder()
@@ -120,7 +120,7 @@ module.exports = {
{ name: '🎙️ Logs vocaux', value: data2[message.guild.id]?.vocallog ? `<#${data2[message.guild.id].vocallog}>` : 'Non configuré', inline: true },
{ name: '🛡️ Logs de raid', value: data2[message.guild.id]?.raidlog ? `<#${data2[message.guild.id].raidlog}>` : 'Non configuré', inline: true },
{ name: '🔧 Logs de modération', value: data2[message.guild.id]?.modlog ? `<#${data2[message.guild.id].modlog}>` : 'Non configuré', inline: true },
{ name: '🛡️ raidping', value: data2[message.guild.id]?.modlog ? `<#${data2[message.guild.id].modlog}>` : 'Non configuré', inline: true },
{ name: '🛡️ raidping', value: data2[message.guild.id]?.modlog ? `${data2[message.guild.id].raidping}` : 'Non configuré', inline: true },
);
logmessage.edit({ embeds: [updatedEmbed], components: [row] });
+82
View File
@@ -0,0 +1,82 @@
const { ChannelType, PermissionsBitField } = require('discord.js');
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('myDatabase.db');
module.exports = {
name: 'presetlog',
description: 'Crée les salons de logs et les enregistre dans la base de données.',
category: 'gestion',
emote: '📝',
utilisation: 'presetlog',
async execute(message, args) {
const sendmessage = await message.reply("\`🔄\` Les salon de log sont entrain d'etre crée...")
const guild = message.guild;
const categoryName = 'log';
const channelNames = ['modlog', 'messagelog', 'vocallog', 'rolelog', 'raidlog'];
const channelTypes = [ChannelType.GuildText, ChannelType.GuildText, ChannelType.GuildText, ChannelType.GuildText, ChannelType.GuildText];
let data = await new Promise((resolve, reject) => {
db.get('SELECT value FROM gestion WHERE id = ?', [message.client.user.id], (err, row) => {
if (err) {
console.error(err.message);
reject(err);
}
resolve(row ? JSON.parse(row.value) : {});
});
});
if (!data[message.guild.id]) {
data[message.guild.id] = {};
}
let logCategory = guild.channels.cache.find(channel => channel.type === ChannelType.GuildCategory && channel.name === categoryName);
if (!logCategory) {
try {
logCategory = await guild.channels.create({
name: categoryName,
type: ChannelType.GuildCategory,
});
} catch (error) {
return message.channel.send('Une erreur est survenue lors de la création de la catégorie de logs.');
}
}
for (let i = 0; i < channelNames.length; i++) {
const channelName = channelNames[i];
const channelType = channelTypes[i];
const existingChannel = guild.channels.cache.find(channel => channel.parentID === logCategory.id && channel.name === channelName && channel.type === channelType);
if (!existingChannel) {
try {
const channel = await guild.channels.create({
name: channelName,
type: channelType,
parent: logCategory.id
});
await channel.permissionOverwrites.set([
{
id: guild.roles.everyone,
deny: [PermissionsBitField.Flags.ViewChannel],
},
]);
data[message.guild.id][channelName] = channel.id;
} catch (error) {
return message.channel.send(`Une erreur est survenue lors de la création du salon ${channelName}.`);
}
} else {
data[message.guild.id][channelName] = existingChannel.id;
}
}
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [message.client.user.id, JSON.stringify(data)], function(err) {
if (err) {
console.error(err.message);
return message.channel.send('Une erreur est survenue lors de la mise à jour de la base de données.');
}
});
sendmessage.edit('\`✅\`Les salons de logs ont été créés et enregistrés dans la base de données.');
},
};
+1 -1
View File
@@ -34,7 +34,7 @@ module.exports = {
const embed = new EmbedBuilder()
.setColor('#0099ff')
.setDescription(`le message de raid est ${messageContent}`);
.setDescription(`le message de raid est:** ${messageContent}**`);
message.channel.send({ embeds: [embed] });
},
};
+28 -18
View File
@@ -39,11 +39,7 @@ module.exports = {
reject(err);
} else {
let permissionsData = row ? JSON.parse(row.value) : {};
if (!permissionsData.permissions) {
permissionsData.permissions = {};
}
if (!permissionsData.permissions || Object.keys(permissionsData.permissions).length === 0) {
permissionsData.permissions = permissions;
const permissionsJson = JSON.stringify(permissionsData);
@@ -56,32 +52,46 @@ module.exports = {
resolve();
}
});
} else {
console.log(`Les permissions existent déjà pour le bot ${client.user.tag}`);
resolve();
}
}
});
});
});
client.snipes = new Map();
console.log(`Le bot ${client.user.tag} est en ligne
lien d'invite > https://discord.com/oauth2/authorize?client_id=${client.user.id}&scope=bot&permissions=8`);
//AntiCrash
process.on('unhandledRejection', (reason, p) => {
process.on('unhandledRejection', (error) => {
console.log(' [antiCrash] :: Unhandled Rejection/Catch');
console.log(reason, p);
});
console.log(error);
});
process.on('uncaughtException', (err, origin) => {
process.on("uncaughtException", (error, origin) => {
console.log(' [antiCrash] :: Uncaught Exception/Catch');
console.log(err, origin);
});
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);
});
},
};
+4 -1
View File
@@ -70,8 +70,10 @@ module.exports = (client) => {
client.on('messageCreate', async message => {
const botId = client.user.id;
if (message.channel.type === ChannelType.DM){
return
} else {
const guildId = message.guild.id;
if (message.channel.type === ChannelType.DM) return
let data = await new Promise((resolve, reject) => {
db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
if (err) {
@@ -131,5 +133,6 @@ module.exports = (client) => {
message.reply('Une erreur est survenue lors de l\'exécution de cette commande.');
}
}
}
});
}
-1
View File
@@ -4,7 +4,6 @@ const loadCommands = require("./loaders/loadCommands");
const loadEvents = require("./loaders/loadEvents");
const client = new Client({intents: new IntentsBitField(3276799)});
const { GiveawaysManager } = require('discord-giveaways');
client.events = new Collection();
client.commands = new Collection();
client.giveawaysManager = new GiveawaysManager(client, {