add : backup , antilick and event for antilink , wiki, and upgrade whitelist system with unique whitelist for guild

This commit is contained in:
VALOU3336
2024-03-02 19:14:45 +01:00
parent bad16d792b
commit 5662934adb
17 changed files with 382 additions and 279 deletions
BIN
View File
Binary file not shown.
+47
View File
@@ -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é'}.`);
});
},
};
+138
View File
@@ -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 -2
View File
@@ -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 -1
View File
@@ -1,5 +1,5 @@
const { EmbedBuilder, User } = require("discord.js")
const { getPermissionLevel } = require('../fonction');
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
module.exports = {
name: 'ban',
+1 -1
View File
@@ -1,5 +1,5 @@
const { EmbedBuilder, User } = require("discord.js")
const { getPermissionLevel } = require('../fonction');
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
module.exports = {
name: 'derank',
+1 -1
View File
@@ -1,5 +1,5 @@
const { EmbedBuilder, User } = require("discord.js")
const { getPermissionLevel } = require('../fonction');
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
module.exports = {
name: 'kick',
+36 -5
View File
@@ -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();
}
});
});
}
+7 -5
View File
@@ -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
View File
@@ -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);
}
});
+28
View File
@@ -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.');
}
},
};
+21
View File
@@ -11,6 +11,13 @@ module.exports = {
}
console.log('Connected to the SQLite database.');
});
const backupdb = new sqlite3.Database('backups.db', (err) => {
if (err) {
console.error(err.message);
}
console.log('Connected to the backups database.');
});
await new Promise((resolve, reject) => {
@@ -32,6 +39,20 @@ module.exports = {
console.log('Table prevname created or already exists.');
}
});
backupdb.run(`CREATE TABLE IF NOT EXISTS backups (
id INTEGER PRIMARY KEY AUTOINCREMENT,
botId TEXT NOT NULL,
backupId TEXT NOT NULL,
createdAt TEXT NOT NULL
)`, (err) => {
if (err) {
console.error(err.message);
reject(err);
} else {
console.log('Table backups created or already exists.');
}
});
db.get('SELECT value FROM gestion WHERE id = ?', [client.user.id], (err, row) => {
if (err) {
+44 -8
View File
@@ -1,14 +1,14 @@
const { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder } = require('discord.js');
const { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, ChannelType } = require('discord.js');
const sqlite3 = require('sqlite3').verbose();
const { Events } = require("discord.js");
const db = new sqlite3.Database('myDatabase.db');
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
module.exports = {
name: Events.MessageCreate,
async execute(message) {
async execute(message, client) {
const botId = message.client.user.id;
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) {
@@ -21,8 +21,14 @@ module.exports = {
const suggestChannelId = data.suggestChannel && data.suggestChannel[guildId];
data.piconly = data.piconly || {};
data.piconly[guildId] = data.piconly[guildId] || {};
const channelID = data.piconly[guildId];
const channelIDpiconly = data.piconly[guildId];
const antilinkConfig = data[guildId]?.antilink;
let status = 'off';
let type = 'invite';
if (antilinkConfig) {
({ status, type } = antilinkConfig);
}
if (message.channel.id === suggestChannelId && !message.author.bot) {
await message.delete();
@@ -43,11 +49,41 @@ module.exports = {
const suggestionMessage = await message.channel.send({ embeds: [embed], components: [row] });
suggestionMessage.react('👎')
suggestionMessage.react('👍')
} else if (message.channel.id === channelID) {
} else if (message.channel.id === channelIDpiconly) {
if (message.attachments.size === 0) {
message.delete()
}
}
} else if (status === 'on') {
data.whitelist = data.whitelist || {};
data.whitelist[guildId] = data.whitelist[guildId] || {};
const whitelist = data.whitelist[guildId];
const user = message.member;
if (await getPermissionLevel(user, client) >= 10) return;
if (whitelist[message.author.id]) return;
const messageContent = message.content;
if (type === 'all' && messageContent.includes('https://')) {
message.delete().catch(err => {;
});
}
if (type === 'invite' && (messageContent.includes('discord.com') || messageContent.includes('discord.gg'))) {
message.delete().catch(err => {
});
}
} else if (status === 'max') {
if (message.channel.type === ChannelType.DM) return;
const user = message.member;
if (await getPermissionLevel(user, client) >= 10) return;
const messageContent = message.content;
if (type === 'all' && messageContent.includes('https://')) {
message.delete().catch(err => {;
});
}
if (type === 'invite' && (messageContent.includes('discord.com') || messageContent.includes('discord.gg'))) {
message.delete().catch(err => {
});
}
}
},
};
@@ -1,6 +1,5 @@
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;
+43 -246
View File
@@ -9,10 +9,10 @@
"version": "1.0.0",
"license": "Apache-2.0",
"dependencies": {
"@m3rcena/weky": "^4.3.1",
"axios": "^1.6.7",
"better-sqlite3": "^9.4.3",
"color-name-list": "^10.19.0",
"discord-backup": "^3.3.2",
"discord-gamecord": "^4.4.1",
"discord-giveaway": "^1.1.5",
"discord-giveaways": "^6.0.1",
@@ -27,7 +27,8 @@
"quick.db": "^9.1.7",
"sqlite3": "^5.1.7",
"to-zalgo": "^1.0.1",
"weather": "^1.0.4"
"weather": "^1.0.4",
"wikipedia": "^2.1.2"
}
},
"node_modules/@babel/runtime": {
@@ -167,82 +168,6 @@
"integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
"optional": true
},
"node_modules/@m3rcena/weky": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/@m3rcena/weky/-/weky-4.3.1.tgz",
"integrity": "sha512-rSQMH0YROX+i2k3SajXzcjts005Hi4FUNKkmg+DCiL3HsbEI1PvxZnruTaFwCPuR7dAgRk2+eb8MgSRJYlUotg==",
"dependencies": {
"chalk": "^5.3.0",
"html-entities": "^2.4.0",
"mathjs": "^12.2.1",
"node-fetch": "^3.3.2",
"quick.db": "^9.1.7",
"string-width": "^7.0.0"
}
},
"node_modules/@m3rcena/weky/node_modules/ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/@m3rcena/weky/node_modules/emoji-regex": {
"version": "10.3.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz",
"integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw=="
},
"node_modules/@m3rcena/weky/node_modules/node-fetch": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
"integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
"dependencies": {
"data-uri-to-buffer": "^4.0.0",
"fetch-blob": "^3.1.4",
"formdata-polyfill": "^4.0.10"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/node-fetch"
}
},
"node_modules/@m3rcena/weky/node_modules/string-width": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz",
"integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==",
"dependencies": {
"emoji-regex": "^10.3.0",
"get-east-asian-width": "^1.0.0",
"strip-ansi": "^7.1.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@m3rcena/weky/node_modules/strip-ansi": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"dependencies": {
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/@npmcli/fs": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
@@ -614,23 +539,20 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/camelcase": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
"integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==",
"engines": {
"node": ">=4"
}
},
"node_modules/centra": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/centra/-/centra-2.6.0.tgz",
"integrity": "sha512-dgh+YleemrT8u85QL11Z6tYhegAs3MMxsaWAq/oXeAmYJ7VxL3SI9TZtnfaEvNDMAPolj25FXIb3S+HCI4wQaQ==",
"deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."
},
"node_modules/chalk": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
"integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/charenc": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
@@ -718,18 +640,6 @@
"node": ">= 0.8"
}
},
"node_modules/complex.js": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz",
"integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==",
"engines": {
"node": "*"
},
"funding": {
"type": "patreon",
"url": "https://www.patreon.com/infusion"
}
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -793,14 +703,6 @@
"url": "https://github.com/sponsors/fb55"
}
},
"node_modules/data-uri-to-buffer": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
"integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
"engines": {
"node": ">= 12"
}
},
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -824,11 +726,6 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"optional": true
},
"node_modules/decimal.js": {
"version": "10.4.3",
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
"integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
},
"node_modules/decompress-response": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
@@ -926,6 +823,14 @@
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.61.tgz",
"integrity": "sha512-o/dXNFfhBpYHpQFdT6FWzeO7pKc838QeeZ9d91CfVAtpr5XLK4B/zYxQbYgPdoMiTDvJfzcsLW5naXgmHGDNXw=="
},
"node_modules/discord-backup": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/discord-backup/-/discord-backup-3.3.2.tgz",
"integrity": "sha512-C2CBplvnVG3XUG2byf2dBF4PX9J9aaEcMpJzjI+c53+9Lr9WNW0lQe6Fxzf/LMxApFe1oCbwtaqE5ioMuoN6Eg==",
"dependencies": {
"discord.js": "^14.2.0"
}
},
"node_modules/discord-gamecord": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/discord-gamecord/-/discord-gamecord-4.4.1.tgz",
@@ -1225,11 +1130,6 @@
"node": ">= 0.4"
}
},
"node_modules/escape-latex": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz",
"integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw=="
},
"node_modules/event-target-shim": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
@@ -1259,28 +1159,6 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"node_modules/fetch-blob": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/jimmywarting"
},
{
"type": "paypal",
"url": "https://paypal.me/jimmywarting"
}
],
"dependencies": {
"node-domexception": "^1.0.0",
"web-streams-polyfill": "^3.0.3"
},
"engines": {
"node": "^12.20 || >= 14.13"
}
},
"node_modules/figlet": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/figlet/-/figlet-1.7.0.tgz",
@@ -1329,29 +1207,6 @@
"node": ">= 6"
}
},
"node_modules/formdata-polyfill": {
"version": "4.0.10",
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
"dependencies": {
"fetch-blob": "^3.1.2"
},
"engines": {
"node": ">=12.20.0"
}
},
"node_modules/fraction.js": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.4.tgz",
"integrity": "sha512-pwiTgt0Q7t+GHZA4yaLjObx4vXmmdcS0iSJ19o8d/goUGgItX9UZWKWNnLHehxviD8wU2IWRsnR8cD5+yOJP2Q==",
"engines": {
"node": "*"
},
"funding": {
"type": "patreon",
"url": "https://github.com/sponsors/rawify"
}
},
"node_modules/fs-constants": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
@@ -1401,17 +1256,6 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/get-east-asian-width": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz",
"integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/get-intrinsic": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
@@ -1667,6 +1511,18 @@
"wrappy": "1"
}
},
"node_modules/infobox-parser": {
"version": "3.6.4",
"resolved": "https://registry.npmjs.org/infobox-parser/-/infobox-parser-3.6.4.tgz",
"integrity": "sha512-d2lTlxKZX7WsYxk9/UPt51nkmZv5tbC75SSw4hfHqZ3LpRAn6ug0oru9xI2X+S78va3aUAze3xl/UqMuwLmJUw==",
"dependencies": {
"camelcase": "^4.1.0"
},
"funding": {
"type": "individual",
"url": "https://www.buymeacoffee.com/2tmRKi9"
}
},
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
@@ -1736,11 +1592,6 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"optional": true
},
"node_modules/javascript-natural-sort": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz",
"integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw=="
},
"node_modules/jsbn": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
@@ -1832,28 +1683,6 @@
"remove-accents": "0.5.0"
}
},
"node_modules/mathjs": {
"version": "12.4.0",
"resolved": "https://registry.npmjs.org/mathjs/-/mathjs-12.4.0.tgz",
"integrity": "sha512-4Moy0RNjwMSajEkGGxNUyMMC/CZAcl87WBopvNsJWB4E4EFebpTedr+0/rhqmnOSTH3Wu/3WfiWiw6mqiaHxVw==",
"dependencies": {
"@babel/runtime": "^7.23.9",
"complex.js": "^2.1.1",
"decimal.js": "^10.4.3",
"escape-latex": "^1.2.0",
"fraction.js": "4.3.4",
"javascript-natural-sort": "^0.7.1",
"seedrandom": "^3.0.5",
"tiny-emitter": "^2.1.0",
"typed-function": "^4.1.1"
},
"bin": {
"mathjs": "bin/cli.js"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/md5": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
@@ -2253,24 +2082,6 @@
"node": "^16 || ^18 || >= 20"
}
},
"node_modules/node-domexception": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/jimmywarting"
},
{
"type": "github",
"url": "https://paypal.me/jimmywarting"
}
],
"engines": {
"node": ">=10.5.0"
}
},
"node_modules/node-fetch": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
@@ -2685,11 +2496,6 @@
"node": ">=6"
}
},
"node_modules/seedrandom": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
"integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg=="
},
"node_modules/semver": {
"version": "7.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
@@ -2991,11 +2797,6 @@
"node": ">=8"
}
},
"node_modules/tiny-emitter": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
},
"node_modules/to-zalgo": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/to-zalgo/-/to-zalgo-1.0.1.tgz",
@@ -3035,14 +2836,6 @@
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
"integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw=="
},
"node_modules/typed-function": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.1.1.tgz",
"integrity": "sha512-Pq1DVubcvibmm8bYcMowjVnnMwPVMeh0DIdA8ad8NZY2sJgapANJmiigSUwlt+EgXxpfIv8MWrQXTIzkfYZLYQ==",
"engines": {
"node": ">= 14"
}
},
"node_modules/undici": {
"version": "5.27.2",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.27.2.tgz",
@@ -3098,14 +2891,6 @@
"phin": "^3.4.0"
}
},
"node_modules/web-streams-polyfill": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
"integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
"engines": {
"node": ">= 8"
}
},
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
@@ -3144,6 +2929,18 @@
"string-width": "^1.0.2 || 2 || 3 || 4"
}
},
"node_modules/wikipedia": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/wikipedia/-/wikipedia-2.1.2.tgz",
"integrity": "sha512-RAYaMpXC9/E873RaSEtlEa8dXK4e0p5k98GKOd210MtkE5emm6fcnwD+N6ZA4cuffjDWagvhaQKtp/mGp2BOVQ==",
"dependencies": {
"axios": "^1.4.0",
"infobox-parser": "^3.6.2"
},
"engines": {
"node": ">=10"
}
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+3 -2
View File
@@ -17,10 +17,10 @@
},
"homepage": "https://github.com/Tutur33/gestion#readme",
"dependencies": {
"@m3rcena/weky": "^4.3.1",
"axios": "^1.6.7",
"better-sqlite3": "^9.4.3",
"color-name-list": "^10.19.0",
"discord-backup": "^3.3.2",
"discord-gamecord": "^4.4.1",
"discord-giveaway": "^1.1.5",
"discord-giveaways": "^6.0.1",
@@ -35,6 +35,7 @@
"quick.db": "^9.1.7",
"sqlite3": "^5.1.7",
"to-zalgo": "^1.0.1",
"weather": "^1.0.4"
"weather": "^1.0.4",
"wikipedia": "^2.1.2"
}
}
View File