Mettre à jour les commandes ping et setprefix, ajouter la vérification des permissions, et initialiser la base de données.

This commit is contained in:
Tutur33
2024-02-23 16:18:40 +01:00
parent c732820e4d
commit 66b669a0e1
7 changed files with 165 additions and 26 deletions
+2 -2
View File
@@ -5,8 +5,8 @@ module.exports = {
aliases: ['latence'],
description: 'Avoir la latence du bot.',
emote: '⏱️',
utilisation: 'ping',
category: 'utils',
utilisation: '',
permission: 0,
async execute(message, args, client) {
message.reply('Pong !');
+2 -2
View File
@@ -7,8 +7,8 @@ module.exports = {
aliases: ['prefixset'],
description: 'Changer le préfixe du bot.',
emote: '⏱️',
utilisation: 'setprefix',
category: 'utils',
utilisation: '',
permission: 10,
async execute(message, args, client) {
if (args.length < 1) return message.reply('Veuillez entrer un préfixe.');
+16 -10
View File
@@ -1,5 +1,6 @@
const { Events } = require("discord.js");
const getServerPrefix = require("../fonctions/getServerPrefix");
const getPermissionLevel = require("../fonctions/getPermissionLevel");
module.exports = {
name: Events.MessageCreate,
@@ -7,19 +8,24 @@ module.exports = {
if (message.author.bot) return;
const prefix = await getServerPrefix(message.guild.id);
if (!message.content.startsWith(prefix)) return;
if (message.content.startsWith(prefix)) {
const args = message.content.slice(prefix.length).trim().split(/ +/);
const commandName = args.shift().toLowerCase();
const args = message.content.slice(prefix.length).trim().split(/ +/);
const commandName = args.shift().toLowerCase();
const command = client.commands.get(commandName);
if (!command) return;
const command = client.commands.get(commandName);
if (!command) return;
const permissionLevel = await getPermissionLevel(message.member, message.guild);
if (permissionLevel < command.permission) return message.reply("Vous n'avez pas la permission d'utiliser cette commande");
try {
command.execute(message, args);
} catch (error) {
console.error(error);
message.reply("Erreur lors de l'exécution de la commande");
try {
command.execute(message, args);
} catch (error) {
console.error(error);
message.reply("Erreur lors de l'exécution de la commande");
}
} else if (message.content === `<@!${client.user.id}>` || message.content === `<@${client.user.id}>`) {
message.reply(`Mon préfixe sur ce serveur est \`${prefix}\``);
}
}
};
+2
View File
@@ -1,8 +1,10 @@
const { Events, ActivityType } = require("discord.js");
const addBaseInDB = require("../fonctions/addBaseInDB");
module.exports = {
name: Events.ClientReady,
async execute(client) {
addBaseInDB(client);
console.log(`le bot ${client.user.tag} est en ligne`)
}
};
+53
View File
@@ -0,0 +1,53 @@
const sqlite3 = require('sqlite3').verbose();
let buyer = 0;
module.exports = function addBaseInDB(client) {
let db = new sqlite3.Database('db.db', sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err) => {
if (err) {
console.error(err.message);
}
});
client.guilds.cache.forEach(guild => {
db.run('INSERT OR IGNORE INTO prefix (serverID) VALUES (?)', [guild.id], (err) => {
if (err) {
console.error(err.message);
}
});
});
client.guilds.cache.forEach(guild => {
guild.members.cache.forEach(member => {
if (member.user.bot) return;
if (member.id === '671763971803447298') {
buyer = 1;
} else {
buyer = 0;
};
db.run('INSERT OR IGNORE INTO users (serverID, userID, buyer) SELECT ?, ?, ? WHERE NOT EXISTS (SELECT 1 FROM users WHERE serverID = ? AND userID = ?)', [guild.id, member.id, buyer, guild.id, member.id], (err) => {
if (err) {
console.error(err.message);
}
});
});
});
client.commands.forEach(command => {
client.guilds.cache.forEach(guild => {
db.run('INSERT OR IGNORE INTO commands (command, permission, serverID) SELECT ?, ?, ? WHERE NOT EXISTS (SELECT 1 FROM commands WHERE command = ? AND serverID = ?)', [command.name, command.permission, guild.id, command.name, guild.id], (err) => {
if (err) {
console.error(err.message);
}
});
});
});
db.close((err) => {
if (err) {
console.error(err.message);
}
});
}
+62
View File
@@ -0,0 +1,62 @@
const sqlite3 = require('sqlite3').verbose();
module.exports = async function getPermissionLevel(member, guild) {
return new Promise((resolve, reject) => {
let db = new sqlite3.Database('db.db', sqlite3.OPEN_READWRITE, (err) => {
if (err) {
console.error(err.message);
reject(err);
}
});
let buyerId = [];
let ownerId = [];
let highestPermission = 0;
db.each('SELECT userID FROM users WHERE serverID = ? AND buyer = 1', [guild.id],
(err, row) => {
if (err) {
console.error(err.message);
reject(err);
}
buyerId.push(row.userID);
});
db.each('SELECT userID FROM users WHERE serverID = ? AND owner = 1', [guild.id],
(err, row) => {
if (err) {
console.error(err.message);
reject(err);
}
ownerId.push(row.userID);
});
for (let i = 1; i <= 9; i++) {
db.each('SELECT roleID FROM permissions WHERE serverID = ? AND permission = ?', [guild.id, i],
(err, row) => {
if (err) {
console.error(err.message);
reject(err);
}
if (member.roles.cache.has(row.roleID)) {
highestPermission = Math.max(highestPermission, i);
}
});
}
db.close((err) => {
if (err) {
console.error(err.message);
reject(err);
}
if (buyerId.includes(member.id)) {
resolve(11);
} else if (ownerId.includes(member.id)) {
resolve(10);
} else {
resolve(highestPermission);
}
});
});
}
+28 -12
View File
@@ -6,14 +6,6 @@ module.exports = function initDB() {
if (err) {
console.error(err.message);
}
console.log('Connected to the db.db database.');
});
db.run(`PRAGMA foreign_keys = ON;`, (err) => {
if (err) {
console.error(err.message);
}
console.log('Foreign key constraint enabled');
});
@@ -24,9 +16,9 @@ module.exports = function initDB() {
if (err) {
console.error(err.message);
}
console.log('Created prefix table');
});
db.run(`CREATE TABLE IF NOT EXISTS users(
serverID TEXT NOT NULL,
userID TEXT NOT NULL,
@@ -34,12 +26,37 @@ module.exports = function initDB() {
bank INTEGER NOT NULL DEFAULT 0,
xp INTEGER NOT NULL DEFAULT 0,
levels INTEGER NOT NULL DEFAULT 0,
messages INTEGER NOT NULL DEFAULT 0
messages INTEGER NOT NULL DEFAULT 0,
buyer BOOLEAN NOT NULL DEFAULT 0,
owner BOOLEAN NOT NULL DEFAULT 0,
whitelist BOOLEAN NOT NULL DEFAULT 0,
blacklist BOOLEAN NOT NULL DEFAULT 0
)`, (err) => {
if (err) {
console.error(err.message);
}
});
db.run(`CREATE TABLE IF NOT EXISTS commands(
command TEXT NOT NULL,
permission INTEGER NOT NULL DEFAULT 11,
serverID TEXT NOT NULL
)`, (err) => {
if (err) {
console.error(err.message);
}
});
db.run(`CREATE TABLE IF NOT EXISTS permissions(
permission INTEGER NOT NULL UNIQUE,
roleID TEXT NOT NULL,
serverID TEXT NOT NULL
)`, (err) => {
if (err) {
console.error(err.message);
}
console.log('Created users table');
});
@@ -47,6 +64,5 @@ module.exports = function initDB() {
if (err) {
console.error(err.message);
}
console.log('Close the database connection.');
});
};