mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-10 19:04:21 +02:00
add : backup , antilick and event for antilink , wiki, and upgrade whitelist system with unique whitelist for guild
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
module.exports = {
|
||||
name: 'antilink',
|
||||
description: 'Active ou désactive la protection contre les liens dans le serveur.',
|
||||
utilisation: '+antilink on/off all/invite',
|
||||
category: 'moderation',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const botId = client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
const status = args[0];
|
||||
const type = args[1];
|
||||
|
||||
if (!status || !type || (status !== 'on' && status !== 'off'&& status !== 'max') || (type !== 'all' && type !== 'invite')) {
|
||||
return message.reply('Veuillez utiliser la commande correctement: `+antilink on/off all/invite`.');
|
||||
}
|
||||
|
||||
let data = 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 (!data[guildId]) {
|
||||
data[guildId] = {};
|
||||
}
|
||||
|
||||
data[guildId].antilink = {
|
||||
status: status,
|
||||
type: type
|
||||
};
|
||||
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], function(err) {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
return message.reply('Une erreur est survenue lors de la mise à jour de la configuration.');
|
||||
}
|
||||
message.reply(`La protection contre les liens a été ${status === 'on' ? 'activée' : status === 'max' ? 'maximisée' : 'désactivée'} pour les ${type === 'all' ? 'tous les liens' : type === 'invite' ? 'invitations' : 'aucun type spécifié'}.`);
|
||||
});
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,138 @@
|
||||
const Discord = require('discord.js');
|
||||
const backup = require('discord-backup');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const db = new sqlite3.Database('./backups.db');
|
||||
async function createBackup(botId, guild) {
|
||||
const backupData = await backup.create(guild, {
|
||||
maxMessagesPerChannel: 0,
|
||||
jsonBeautify: true
|
||||
});
|
||||
|
||||
const createdAt = new Date().toISOString();
|
||||
db.run(`INSERT INTO backups(botId, backupId, createdAt) VALUES(?, ?, ?)`, [botId, backupData.id, createdAt], function(err) {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
|
||||
return backupData.id;
|
||||
}
|
||||
function listBackups(botId, color) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const db = new sqlite3.Database('./backups.db');
|
||||
db.all(`SELECT * FROM backups WHERE botId = ?`, [botId], (err, rows) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
let backupList = 'Liste des sauvegardes:\n';
|
||||
rows.forEach((row) => {
|
||||
backupList += `ID: ${row.backupId}, Créé le: ${row.createdAt}\n`;
|
||||
});
|
||||
|
||||
const embed = new Discord.EmbedBuilder()
|
||||
.setAuthor({name:'📰 Liste des backups'})
|
||||
.setDescription(`\`\`\`${backupList}\`\`\``)
|
||||
.setColor(color);
|
||||
|
||||
resolve(embed);
|
||||
}
|
||||
});
|
||||
db.close();
|
||||
});
|
||||
}
|
||||
async function loadBackup(botId, backupId, guild) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const db = new sqlite3.Database('./backups.db');
|
||||
db.get(`SELECT * FROM backups WHERE botId = ? AND backupId = ?`, [botId, backupId], async (err, row) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
}
|
||||
if (!row) {
|
||||
console.log('Backup not found');
|
||||
reject(new Error('Backup not found'));
|
||||
}
|
||||
|
||||
try {
|
||||
await backup.load(backupId, guild);
|
||||
resolve();
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function deleteBackup(botId, backupId) {
|
||||
const db = new sqlite3.Database('./backups.db');
|
||||
db.run(`DELETE FROM backups WHERE botId = ? AND backupId = ?`, [botId, backupId], function(err) {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
|
||||
backup.remove(backupId);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
name: 'backup',
|
||||
description: 'Crée, liste, charge ou supprime des backups du bot.',
|
||||
emote: '💾',
|
||||
utilisation: 'backup <paramètres>',
|
||||
category: 'gestion',
|
||||
async execute(message, args, client) {
|
||||
const botId = client.user.id;
|
||||
const author = message.author;
|
||||
const create = args[0] === "create";
|
||||
const list = args[0] === 'list';
|
||||
const load = args[0] === 'load';
|
||||
const del = args[0] === 'delete';
|
||||
|
||||
if (!args[0]) {
|
||||
const helpEmbed = new Discord.EmbedBuilder()
|
||||
.setTimestamp()
|
||||
.setFooter({text: `Backup Gestion | ${client.user.username}`})
|
||||
.addFields(
|
||||
{ name: 'Backup:', value: '\`backup create\` ・ Permet de créer une backup du serveur actuel\n\`backup delete\` ・ Permet de supprimer une backup\n\`backup list\` ・ Permet d\'afficher la liste de toutes les backup\n\`backup load\` ・ Permet de charger une backup sur un serveur' }
|
||||
);
|
||||
message.channel.send({ embeds: [helpEmbed] });
|
||||
} else if (create) {
|
||||
const messageCreate = await message.channel.send("\`🔃\`La backup est entrain de ce crée ......");
|
||||
const backupId = await createBackup(botId, message.guild);
|
||||
messageCreate.edit(`\`✅\`Backup correctement créé, faites \`backup load ${backupId}\` pour charger la backup`);
|
||||
} else if (list) {
|
||||
const color = '#00FFFF';
|
||||
listBackups(botId, color)
|
||||
.then(backupListEmbed => {
|
||||
message.channel.send({ embeds: [backupListEmbed] });
|
||||
})
|
||||
.catch(err => {
|
||||
console.error(err);
|
||||
message.channel.send('Une erreur est survenue lors de la récupération de la liste des sauvegardes.');
|
||||
});
|
||||
} else if (load) {
|
||||
const backupId = args[1];
|
||||
if (!backupId) {
|
||||
return message.channel.send(`Vous devez spécifier une ID de backup valide !`);
|
||||
}
|
||||
await loadBackup(botId, backupId, message.guild).then(() => {
|
||||
const textChannel = message.guild.channels.cache.find(channel => channel.type === Discord.ChannelType.GuildText);
|
||||
if (textChannel) {
|
||||
textChannel.send(`@${message.author.username}, la backup a fini d'être chargée.`);
|
||||
} else {
|
||||
// Si aucun salon texte n'est trouvé, envoyer un message dans le salon actuel
|
||||
author.send(`@${message.author.username}, la backup a fini d'être chargée, mais aucun salon texte n'a été trouvé pour envoyer le message.`);
|
||||
}
|
||||
}).catch((error) => {
|
||||
console.error(`Failed to load backup: ${error}`);
|
||||
message.channel.send(`Une erreur est survenue lors du chargement de la backup: ${error.message}`);
|
||||
});
|
||||
} else if (del) {
|
||||
const backupId = args[1];
|
||||
if (!backupId) {
|
||||
return message.channel.send(`Veuillez spécifier l'ID de la backup que vous voulez supprimer`);
|
||||
}
|
||||
deleteBackup(botId, backupId);
|
||||
message.channel.send(`La backup ${backupId} a été supprimée avec succès`);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -1,36 +0,0 @@
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
async function getPermissionLevel(member, client) {
|
||||
const botId = client.user.id;
|
||||
const guildId = member.guild.id;
|
||||
const buyerId = ['1003985920162287696', '671763971803447298'];
|
||||
|
||||
let data = 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) : {});
|
||||
});
|
||||
});
|
||||
let owners = data.owners || {};
|
||||
if (buyerId.includes(member.id)) {
|
||||
return 11;
|
||||
}
|
||||
if (owners[member.id]) {
|
||||
return 10;
|
||||
}
|
||||
let highestPermission = 0;
|
||||
for (let i = 1; i <= 9; i++) {
|
||||
const roleIds = data.permissions && data.permissions[guildId] && data.permissions[guildId].p && data.permissions[guildId].p[i];
|
||||
if (roleIds) {
|
||||
if (roleIds.some(id => member.roles.cache.has(id))) {
|
||||
highestPermission = Math.max(highestPermission, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
return highestPermission;
|
||||
}
|
||||
module.exports = { getPermissionLevel };
|
||||
@@ -1,5 +1,5 @@
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
module.exports = {
|
||||
name: 'suggest',
|
||||
description: 'configure le salon de suggestion',
|
||||
@@ -8,7 +8,6 @@ module.exports = {
|
||||
category: 'gestion',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const { EmbedBuilder, User } = require("discord.js")
|
||||
const { getPermissionLevel } = require('../fonction');
|
||||
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
|
||||
|
||||
module.exports = {
|
||||
name: 'ban',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const { EmbedBuilder, User } = require("discord.js")
|
||||
const { getPermissionLevel } = require('../fonction');
|
||||
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
|
||||
|
||||
module.exports = {
|
||||
name: 'derank',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const { EmbedBuilder, User } = require("discord.js")
|
||||
const { getPermissionLevel } = require('../fonction');
|
||||
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
|
||||
|
||||
module.exports = {
|
||||
name: 'kick',
|
||||
|
||||
@@ -12,14 +12,45 @@ module.exports = {
|
||||
async execute(message, args, client) {
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify({ whitelist: {} })], (err) => {
|
||||
|
||||
let data = await getWhitelistData(db, botId, guildId);
|
||||
|
||||
if (data.whitelist[guildId]) {
|
||||
delete data.whitelist[guildId];
|
||||
await updateWhitelist(db, botId, data);
|
||||
message.reply("Toutes la whitelist a été supprimée pour cette guilde.");
|
||||
} else {
|
||||
message.reply("Il n'y avait pas de liste blanche à supprimer pour cette guilde.");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
async function getWhitelistData(db, botId, guildId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
reject(err);
|
||||
} else {
|
||||
resolve({ message: 'La liste blanche a été effacée.' });
|
||||
const data = row ? JSON.parse(row.value) : {};
|
||||
data.whitelist = data.whitelist || {};
|
||||
data.whitelist[guildId] = data.whitelist[guildId] || {};
|
||||
resolve(data);
|
||||
}
|
||||
});
|
||||
message.reply("Toutes la whitelist a etait supprimer")
|
||||
},
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
async function updateWhitelist(db, botId, data) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const updatedData = JSON.stringify(data);
|
||||
db.run('UPDATE gestion SET value = ? WHERE id = ?', [updatedData, botId], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -11,16 +11,17 @@ module.exports = {
|
||||
|
||||
async execute(message, args) {
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
const user = message.mentions.users.first() || (args[0] && message.client.users.cache.get(args[0]));
|
||||
|
||||
if (!user) {
|
||||
return message.channel.send('Veuillez mentionner un utilisateur à retirer de la liste blanche.');
|
||||
}
|
||||
|
||||
let data = await getWhitelistData(db, botId);
|
||||
let data = await getWhitelistData(db, botId, guildId);
|
||||
|
||||
if (data.whitelist[user.id]) {
|
||||
delete data.whitelist[user.id];
|
||||
if (data.whitelist[guildId] && data.whitelist[guildId][user.id]) {
|
||||
delete data.whitelist[guildId][user.id];
|
||||
await updateWhitelist(db, botId, data);
|
||||
message.channel.send('Utilisateur retiré de la liste blanche.');
|
||||
} else {
|
||||
@@ -29,7 +30,7 @@ module.exports = {
|
||||
},
|
||||
};
|
||||
|
||||
async function getWhitelistData(db, botId) {
|
||||
async function getWhitelistData(db, botId, guildId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
|
||||
if (err) {
|
||||
@@ -37,7 +38,8 @@ async function getWhitelistData(db, botId) {
|
||||
reject(err);
|
||||
} else {
|
||||
const data = row ? JSON.parse(row.value) : {};
|
||||
data.whitelist = data.whitelist || {};
|
||||
data.whitelist = data.whitelist || {};
|
||||
data.whitelist[guildId] = data.whitelist[guildId] || {};
|
||||
resolve(data);
|
||||
}
|
||||
});
|
||||
|
||||
+11
-7
@@ -12,31 +12,34 @@ module.exports = {
|
||||
async execute(message, args, client) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
const user = message.mentions.users.first() || (args[0] && message.client.users.cache.get(args[0]));
|
||||
|
||||
|
||||
if (user) {
|
||||
let data = await getWhitelistData(db, botId);
|
||||
if (!data.whitelist[user.id]) {
|
||||
data.whitelist[user.id] = true; // Ajoute l'utilisateur à la liste blanche
|
||||
let data = await getWhitelistData(db, botId, guildId);
|
||||
if (!data.whitelist[guildId][user.id]) {
|
||||
data.whitelist[guildId][user.id] = true;
|
||||
await updateWhitelist(db, botId, data);
|
||||
message.reply('Utilisateur ajouté à la liste blanche.');
|
||||
} else {
|
||||
message.reply('Cet utilisateur est déjà sur la liste blanche.');
|
||||
}
|
||||
} else {
|
||||
let data = await getWhitelistData(db, botId);
|
||||
const whitelist = data.whitelist || {};
|
||||
let data = await getWhitelistData(db, botId, guildId);
|
||||
const whitelist = data.whitelist[guildId] || {};
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Liste blanche')
|
||||
.setDescription(Object.keys(whitelist).map(id => `<@${id}>`).join('\n') || 'Aucun utilisateur sur la liste blanche')
|
||||
.setFooter({ text: 'design by valou336', iconURL: client.user.displayAvatarURL({dynamic: true})});
|
||||
|
||||
|
||||
message.channel.send({ embeds: [embed] });
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
async function getWhitelistData(db, botId) {
|
||||
async function getWhitelistData(db, botId, guildId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
|
||||
if (err) {
|
||||
@@ -44,7 +47,8 @@ async function getWhitelistData(db, botId) {
|
||||
reject(err);
|
||||
} else {
|
||||
const data = row ? JSON.parse(row.value) : {};
|
||||
data.whitelist = data.whitelist || {};
|
||||
data.whitelist = data.whitelist || {};
|
||||
data.whitelist[guildId] = data.whitelist[guildId] || {};
|
||||
resolve(data);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
const Discord = require('discord.js');
|
||||
const wiki = require('wikipedia');
|
||||
|
||||
|
||||
module.exports = {
|
||||
name: "wiki",
|
||||
aliases: ["wikipedia"],
|
||||
description: "Permet de faire une recherche wikipédia depuis votre serveur ",
|
||||
category: "utilitaire" ,
|
||||
emote:"🌍",
|
||||
utilisation: "wiki <mot-clé>",
|
||||
async execute(message, args, client) {
|
||||
let query = args.join(" ");
|
||||
if(!query) return;
|
||||
|
||||
try {
|
||||
const searchResults = await wiki.summary(query.toLocaleLowerCase());
|
||||
const embed = new Discord.EmbedBuilder()
|
||||
.setColor('#00FFFF')
|
||||
.setTitle(`${searchResults.title}`)
|
||||
.setDescription(`${searchResults.extract}`);
|
||||
message.reply({ embeds: [embed] });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
message.reply('Je n\'ai pas pu trouver cette page sur Wikipedia. Veuillez vérifier le mot-clé et réessayer.');
|
||||
}
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user