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',
description: 'Active ou désactive la protection contre les liens dans le serveur.',
utilisation: '+antilink on/off all/invite',
category: 'moderation',
category: 'antiraid',
async execute(message, args, client) {
const botId = client.user.id;
+29 -19
View File
@@ -1,28 +1,38 @@
const axios = require('axios');
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: "utils" ,
emote:"🌍",
utilisation: "wiki <mot-clé>",
name: 'wiki',
description: 'Recherche un mot clé sur Wikipedia et affiche le résumé dans un embed.',
utilisation: '+wiki <mot clé>',
category: 'info',
async execute(message, args, client) {
let query = args.join(" ");
if(!query) return;
if (!args.length) {
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 {
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()
.setColor('#00FFFF')
.setTitle(`${searchResults.title}`)
.setDescription(`${searchResults.extract}`);
message.reply({ embeds: [embed] });
.setColor('#0099ff')
.setTitle(firstResult.title)
.setURL(`https://fr.wikipedia.org/wiki/${encodeURIComponent(firstResult.title)}`)
.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) {
console.error(error);
message.reply('Je n\'ai pas pu trouver cette page sur Wikipedia. Veuillez vérifier le mot-clé et réessayer.');
message.channel.send('Une erreur est survenue lors de la recherche.');
}
},
};
+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,
"prevname": 3,
"servericon": 3,
"weather": 3
"weather": 3,
"antieveryone": 3,
"antilink": 3,
"changeall": 3,
"setconfession": 3,
"presetlog": 3,
"blword": 3,
"wiki": 3
}