add wiki , and antieveryone sysem ( command + event)

This commit is contained in:
VALOU3336
2024-03-04 19:09:52 +01:00
parent 099a559169
commit 856090b4b3
5 changed files with 129 additions and 21 deletions
+45
View File
@@ -0,0 +1,45 @@
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('myDatabase.db');
module.exports = {
name: 'antieveryone',
description: 'Active ou désactive la protection contre les mentions de tout le monde dans le serveur.',
utilisation: '+antieveryone on/off',
category: 'antiraid',
async execute(message, args, client) {
const botId = client.user.id;
const guildId = message.guild.id;
const status = args[0];
if (!status || (status !== 'on' && status !== 'off'&& status !== 'max')) {
return message.reply('Veuillez utiliser la commande correctement: `+antieveryone on/off`.');
}
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].antieveryone = {
status: status
};
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 mentions de tout le monde a été ${status === 'on' ? 'activée' : status === 'max' ? 'maximisée' : 'désactivée'}.`);
});
},
};
+1 -1
View File
@@ -5,7 +5,7 @@ module.exports = {
name: 'antilink', name: 'antilink',
description: 'Active ou désactive la protection contre les liens dans le serveur.', description: 'Active ou désactive la protection contre les liens dans le serveur.',
utilisation: '+antilink on/off all/invite', utilisation: '+antilink on/off all/invite',
category: 'moderation', category: 'antiraid',
async execute(message, args, client) { async execute(message, args, client) {
const botId = client.user.id; const botId = client.user.id;
+28 -18
View File
@@ -1,28 +1,38 @@
const axios = require('axios');
const Discord = require('discord.js'); const Discord = require('discord.js');
const wiki = require('wikipedia');
module.exports = { module.exports = {
name: "wiki", name: 'wiki',
aliases: ["wikipedia"], description: 'Recherche un mot clé sur Wikipedia et affiche le résumé dans un embed.',
description: "Permet de faire une recherche wikipédia depuis votre serveur ", utilisation: '+wiki <mot clé>',
category: "utils" , category: 'info',
emote:"🌍",
utilisation: "wiki <mot-clé>",
async execute(message, args, client) { async execute(message, args, client) {
let query = args.join(" "); if (!args.length) {
if(!query) return; return message.channel.send(`Veuillez fournir un mot clé pour la recherche.`);
}
const query = encodeURIComponent(args.join(' '));
const url = `https://fr.wikipedia.org/w/api.php?action=query&format=json&origin=*&prop=extracts&exintro=&explaintext=&titles=${query}`;
try { try {
const searchResults = await wiki.summary(query.toLocaleLowerCase()); const response = await axios.get(url);
const data = response.data;
const pages = data.query.pages;
const pageId = Object.keys(pages)[0];
const extract = pages[pageId].extract;
// Utiliser le premier résultat sans filtrer par le nombre de mots
const firstResult = pages[pageId];
const embed = new Discord.EmbedBuilder() const embed = new Discord.EmbedBuilder()
.setColor('#00FFFF') .setColor('#0099ff')
.setTitle(`${searchResults.title}`) .setTitle(firstResult.title)
.setDescription(`${searchResults.extract}`); .setURL(`https://fr.wikipedia.org/wiki/${encodeURIComponent(firstResult.title)}`)
message.reply({ embeds: [embed] }); .setDescription(extract.substring(0, 200) + '...')
.addFields({ name: 'Lien', value: '[Lire plus](https://fr.wikipedia.org/wiki/${encodeURIComponent(firstResult.title)})', inline: true });
message.channel.send({ embeds: [embed] });
} catch (error) { } catch (error) {
console.error(error); message.channel.send('Une erreur est survenue lors de la recherche.');
message.reply('Je n\'ai pas pu trouver cette page sur Wikipedia. Veuillez vérifier le mot-clé et réessayer.');
} }
}, },
}; };
+46
View File
@@ -0,0 +1,46 @@
const sqlite3 = require('sqlite3').verbose();
const { Events, ChannelType } = require("discord.js");
const db = new sqlite3.Database('myDatabase.db');
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
module.exports = {
name: Events.MessageCreate,
async execute(message, client) {
const botId = message.client.user.id;
const guildId = message.guild.id;
if (message.channel.type === ChannelType.DM) return;
if (!message.content.includes('@everyone')) return;
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) : {});
});
});
const antieveryoneConfig = data[guildId]?.antieveryone;
let status = 'off';
if (antieveryoneConfig) {
({ status} = antieveryoneConfig);
}
if (status === "off") return;
data.whitelist = data.whitelist || {};
data.whitelist[guildId] = data.whitelist[guildId] || {};
const whitelist = data.whitelist[guildId];
const user = message.member;
if (status === "on") {
if (await getPermissionLevel(user, client) >= 10) return;
if (whitelist[message.author.id]) return;
message.delete().catch(err => {;
});
} else if (status === "max") {
const levelperm = await getPermissionLevel(user, client);
if (levelperm >= 10) return;
message.delete().catch(err => {;
});
}
},
};
+8 -1
View File
@@ -167,5 +167,12 @@
"statserveur": 3, "statserveur": 3,
"prevname": 3, "prevname": 3,
"servericon": 3, "servericon": 3,
"weather": 3 "weather": 3,
"antieveryone": 3,
"antilink": 3,
"changeall": 3,
"setconfession": 3,
"presetlog": 3,
"blword": 3,
"wiki": 3
} }