diff --git a/commands/automatisation/addtask.ts b/commands/automatisation/addtask.ts index 9c88c55..47e88c1 100644 --- a/commands/automatisation/addtask.ts +++ b/commands/automatisation/addtask.ts @@ -1,7 +1,6 @@ import { Message, Client } from 'discord.js'; -import sqlite3 from 'sqlite3'; +import db from '../../fonctions/instanceDB'; require('dotenv').config(); -const joinVC = require('../../fonctions/joinVC'); module.exports = { aliases: ['newtask'], @@ -30,32 +29,19 @@ module.exports = { const code = collected.content; if (collected.deletable) collected.delete(); - const dbName = process.env.DB_NAME || 'db.db'; - let db = new sqlite3.Database(dbName, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err: any) => { - if (err) { - console.error(err.message); - } - }); - db.run(`INSERT INTO task(name, time, code) VALUES(?, ?, ?)`, [name, time, code], (err: any) => { if (err) { console.error(err.message); } }); - db.close((err) => { - if (err) { - console.error(err.message); - } - }); - - message.edit(`La tache ${name} a été ajoutée.\nElle se lancera toutes les ${time} minutes.\nLe code est : \n\`\`\`ts\n${code}\`\`\``); + message.edit(`La tache ${name} a été ajoutée.\nElle se lancera toutes les ${time} minutes.\nLe code est : \n\`\`\`js\n${code}\`\`\``); setInterval(() => { try { - eval(code) + eval(code)(client); } catch (e) { - console.log(e); + console.log(`Erreur dans la tâche ${name} : ${e}`); } }, time * 60000); }); diff --git a/commands/automatisation/setautovoc.ts b/commands/automatisation/setautovoc.ts index 6a35ec7..f2ff5ab 100644 --- a/commands/automatisation/setautovoc.ts +++ b/commands/automatisation/setautovoc.ts @@ -1,5 +1,5 @@ import { Message, Client } from 'discord.js'; -import sqlite3 from 'sqlite3'; +import db from '../../fonctions/instanceDB'; require('dotenv').config(); const joinVC = require('../../fonctions/joinVC'); @@ -10,13 +10,6 @@ module.exports = { utilisation: '', async execute(message: Message, args: string[], client: Client) { - const dbName = process.env.DB_NAME || 'db.db'; - let db = new sqlite3.Database(dbName, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err: any) => { - if (err) { - console.error(err.message); - } - }); - const voc = args[0] || 'None'; db.run('UPDATE config SET value = ? WHERE name = "autovoc"', [voc], (err: any) => { if (err) { @@ -24,12 +17,6 @@ module.exports = { } }); - db.close((err) => { - if (err) { - console.error(err.message); - } - }); - joinVC(client, voc); message.edit(`Le salon vocal par défaut est maintenant ${voc}`); diff --git a/commands/bot/setprefix.ts b/commands/bot/setprefix.ts index 08d034b..9fdbd53 100644 --- a/commands/bot/setprefix.ts +++ b/commands/bot/setprefix.ts @@ -1,5 +1,5 @@ import { Message, Client } from 'discord.js'; -import sqlite3 from 'sqlite3'; +import db from '../../fonctions/instanceDB'; require('dotenv').config(); module.exports = { @@ -9,13 +9,6 @@ module.exports = { utilisation: '', async execute(message: Message, args: string[], client: Client) { - const dbName = process.env.DB_NAME || 'db.db'; - let db = new sqlite3.Database(dbName, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err: any) => { - if (err) { - console.error(err.message); - } - }); - const prefix = args[0] || '!!'; db.run('UPDATE config SET value = ? WHERE name = "prefix"', [prefix], (err: any) => { if (err) { @@ -23,12 +16,6 @@ module.exports = { } }); - db.close((err) => { - if (err) { - console.error(err.message); - } - }); - message.edit(`Le préfixe a été changé pour \`${prefix}\``); } }; \ No newline at end of file diff --git a/commands/utils/roles.ts b/commands/utils/roles.ts index de35292..19a941e 100644 --- a/commands/utils/roles.ts +++ b/commands/utils/roles.ts @@ -11,7 +11,7 @@ module.exports = { if (!guild) return; const roles = guild.roles.cache.filter(role => role.name !== '@everyone').sort((a, b) => b.position - a.position); const rolesList = roles.map(role => `${role.position} - ${role.name} - ${role.id} - ${role.members.size}\n`); - const maxCharacters = 4000; + const maxCharacters = 2000; let currentMessage = 'Voici la liste des rôles du serveur :\n\n'; if ((currentMessage + rolesList.join('')).length < maxCharacters) { message.edit('Voici la liste des rôles du serveur :\n\n' + rolesList.join('')); diff --git a/events/messageCreate.ts b/events/messageCreate.ts index 4b374b6..b50bf7b 100644 --- a/events/messageCreate.ts +++ b/events/messageCreate.ts @@ -1,11 +1,38 @@ import { Message, Events } from "discord.js"; const getPrefix = require("../fonctions/getPrefix"); -import { Permissions } from "discord.js-selfbot-v13" +import db from '../fonctions/instanceDB'; module.exports = { name: Events.MessageCreate, async execute(message: Message, client: any) { - if (!message.author.id === client.user.id) return; + db.get('SELECT value FROM stats WHERE name = ?', ['receiveMessageCounter'], (err: any, row: any) => { + if (err) { + console.error(err.message); + } + const receiveMessageCounter = row ? row.value + 1 : 1; + + db.run('INSERT OR REPLACE INTO stats (name, value) VALUES (?, ?)', ['receiveMessageCounter', receiveMessageCounter], (err: any) => { + if (err) { + console.error(err.message); + } + }); + }); + + + if (message.author.id !== client.user.id) return; + + db.get('SELECT value FROM stats WHERE name = ?', ['sendMessageCounter'], (err: any, row: any) => { + if (err) { + console.error(err.message); + } + const sendMessageCounter = row ? row.value + 1 : 1; + + db.run('INSERT OR REPLACE INTO stats (name, value) VALUES (?, ?)', ['sendMessageCounter', sendMessageCounter], (err: any) => { + if (err) { + console.error(err.message); + } + }); + }); const prefix = await getPrefix() if (message.content.startsWith(prefix)) { @@ -16,6 +43,7 @@ module.exports = { if (!command) return; try { + console.log(`Commande : ${commandName} par ${message.author.tag}`); command.execute(message, args, client); setTimeout(() => { if (message.deletable) message.delete(); diff --git a/events/ready.ts b/events/ready.ts index e3945e8..ec409e7 100644 --- a/events/ready.ts +++ b/events/ready.ts @@ -1,13 +1,29 @@ const { Events, ActivityType } = require("discord.js"); const addBaseInDB = require("../fonctions/addBaseInDB"); const { Client, RichPresence, CustomStatus } = require('discord.js-selfbot-v13'); -import sqlite3 from 'sqlite3'; +import db from '../fonctions/instanceDB'; require('dotenv').config(); const joinVC = require('../fonctions/joinVC'); module.exports = { name: Events.ClientReady, async execute(client: any) { + if (process.env.DISCORD_LOG) { + const channelId = process.env.DISCORD_LOG.toString(); + const channel = client.channels.cache.get(channelId); + if (channel) { + const originalConsoleLog = console.log; + console.log = function (...args) { + const message = args.join(' '); + const currentDate = new Date(); + channel.send(`\`\`\`[${currentDate.toLocaleString()}] ${message}\`\`\``); + + originalConsoleLog.apply(console, [`[${currentDate.toLocaleString()}]`, ...args]); + } + } + } + + await addBaseInDB(client); console.log(`le bot ${client.user.tag} est en ligne`) @@ -26,26 +42,29 @@ module.exports = { .addButton('Serveur Discord', 'https://discord.gg/zP7sHFpTZX') .addButton('Bot Discord', 'https://discord.com/api/oauth2/authorize?client_id=1204577464903409674&permissions=8&scope=applications.commands%20bot'); - const customs = [ - new CustomStatus(client).setEmoji('🎟️').setState('Vend Bot, me mp !'), - new CustomStatus(client).setEmoji('🎟️').setState('Vend SelfBot, me mp !'), - new CustomStatus(client).setEmoji('🎟️').setState('Vend TOKEN, me mp !'), - new CustomStatus(client).setEmoji('🎟️').setState('Vend Herbergement me mp !'), - ]; - - let index = 0; + + const customs = new CustomStatus(client).setEmoji('👀').setState('Regarde vos messages !'); + setInterval(() => { - client.user.setPresence({ activities: [status, customs[index]] }); - index = (index + 1) % customs.length; - }, 3000); + db.get('SELECT value FROM stats WHERE name = "sendMessageCounter"', (err: any, row: any) => { + if (err) { + console.error(err.message); + } + const sendMessageCounter = row ? row.value : 0; - - const dbName = process.env.DB_NAME || 'db.db'; - let db = new sqlite3.Database(dbName, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err: any) => { - if (err) { + db.get('SELECT value FROM stats WHERE name = "receiveMessageCounter"', (err: any, row: any) => { + if (err) { console.error(err.message); - } - }); + } + const receiveMessageCounter = row ? row.value : 0; + + customs.setEmoji('📈').setState(`${sendMessageCounter} messages envoyés, ${receiveMessageCounter} messages reçus !`); + }); + }); + + client.user.setPresence({ activities: [status, customs] }); + }, 10000) as NodeJS.Timeout; + let voc = 'None'; db.all('SELECT * FROM config', (err: any, rows: any) => { @@ -55,6 +74,9 @@ module.exports = { rows.forEach((row: any) => { if (row.name === 'autovoc') { voc = row.value || 'None'; + } if (row.name === 'messageCounter') { + let messageCounter = row.value || 0; + module.exports.messageCounter = messageCounter; } }); }); @@ -74,19 +96,13 @@ module.exports = { try { eval(task.code) } catch (e) { - console.log(e); + console.log(`Erreur dans la tâche ${name} : ${e}`); } }, task.time * 60000); }); }); - db.close((err) => { - if (err) { - console.error(err.message); - } - }); - setInterval(() => { if (voc !== 'None') { const voiceChannel: any = client.channels.cache.get(voc); @@ -99,5 +115,16 @@ module.exports = { } } }, 5000); + + + process.on('unhandledRejection', (reason, p) => { + console.log(' [antiCrash] :: Unhandled Rejection/Catch'); + console.log(reason, p); + }); + + process.on('uncaughtException', (err, origin) => { + console.log(' [antiCrash] :: Uncaught Exception/Catch'); + console.log(err, origin); + }); } }; \ No newline at end of file diff --git a/fonctions/addBaseInDB.ts b/fonctions/addBaseInDB.ts index 1b758f7..8648d91 100644 --- a/fonctions/addBaseInDB.ts +++ b/fonctions/addBaseInDB.ts @@ -1,35 +1,31 @@ -import sqlite3 from 'sqlite3'; +import db from './instanceDB'; require('dotenv').config(); module.exports = function addBaseInDB(client: any) { - const dbName = process.env.DB_NAME || 'db.db'; - let db = new sqlite3.Database(dbName, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err) => { + const prefix = process.env.DEFAULT_PREFIX || '!!'; + db.run('INSERT OR IGNORE INTO config(name, value) VALUES(?, ?)', ['prefix', prefix], (err) => { if (err) { console.error(err.message); } }); - db.serialize(() => { - db.run('BEGIN TRANSACTION'); - const prefix = process.env.DEFAULT_PREFIX || '!!'; - db.run('INSERT OR IGNORE INTO config(name, value) VALUES(?, ?)', ['prefix', prefix], (err) => { - if (err) { - console.error(err.message); - } - }); - - const voc = 'None'; - db.run('INSERT OR IGNORE INTO config(name, value) VALUES(?, ?)', ['autovoc', voc], (err) => { - if (err) { - console.error(err.message); - } - }); - - db.run('COMMIT'); + const voc = 'None'; + db.run('INSERT OR IGNORE INTO config(name, value) VALUES(?, ?)', ['autovoc', voc], (err) => { + if (err) { + console.error(err.message); + } }); - db.close((err) => { + + db.run('INSERT OR IGNORE INTO stats(name, value) VALUES(?, ?)', ['sendMessageCounter', 0], (err) => { + if (err) { + console.error(err.message); + } + }); + + + db.run('INSERT OR IGNORE INTO stats(name, value) VALUES(?, ?)', ['receiveMessageCounter', 0], (err) => { if (err) { console.error(err.message); } diff --git a/fonctions/getPrefix.ts b/fonctions/getPrefix.ts index 48802a4..7b09090 100644 --- a/fonctions/getPrefix.ts +++ b/fonctions/getPrefix.ts @@ -1,16 +1,8 @@ -import sqlite3 from 'sqlite3'; +import db from './instanceDB'; require('dotenv').config(); function getPrefix() { return new Promise((resolve, reject) => { - const dbName = process.env.DB_NAME || 'db.db'; - - let db = new sqlite3.Database(dbName, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err: Error | null) => { - if (err) { - console.error(err.message); - } - }); - db.get('SELECT value FROM config WHERE name = ?', ['prefix'], (err, row: any) => { if (err) { console.error(err.message); @@ -22,12 +14,6 @@ function getPrefix() { resolve('!!'); } }); - - db.close((err) => { - if (err) { - console.error(err.message); - } - }); }); } diff --git a/fonctions/initDB.ts b/fonctions/initDB.ts index 418b88d..3cc6a8a 100644 --- a/fonctions/initDB.ts +++ b/fonctions/initDB.ts @@ -1,45 +1,33 @@ -const sqlite3 = require('sqlite3').verbose(); -require('dotenv').config(); +import db from './instanceDB'; module.exports = function initDB() { - let db = new sqlite3.Database(process.env.DB_NAME, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err: Error) => { + db.run(`CREATE TABLE IF NOT EXISTS config( + name TEXT NOT NULL UNIQUE, + value TEXT NOT NULL + )`, (err: Error) => { + if (err) { + console.error(err.message); + } + }); + + + db.run(`CREATE TABLE IF NOT EXISTS task( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL DEFAULT 'Task', + code TEXT NOT NULL, + time NUMBER NOT NULL, + dernier_lancement TEXT NOT NULL DEFAULT '0' + )`, (err: Error) => { if (err) { console.error(err.message); } }); - db.serialize(() => { - db.run('BEGIN TRANSACTION'); - - db.run(`CREATE TABLE IF NOT EXISTS config( - name TEXT NOT NULL UNIQUE, - value TEXT NOT NULL - )`, (err: Error) => { - if (err) { - console.error(err.message); - } - }); - - - db.run(`CREATE TABLE IF NOT EXISTS task( - id INTEGER PRIMARY KEY AUTOINCREMENT, - name TEXT NOT NULL DEFAULT 'Task', - code TEXT NOT NULL, - time NUMBER NOT NULL, - dernier_lancement TEXT NOT NULL DEFAULT '0' - )`, (err: Error) => { - if (err) { - console.error(err.message); - } - }); - - - db.run('COMMIT'); - }); - - - db.close((err: Error) => { + db.run(`CREATE TABLE IF NOT EXISTS stats( + name TEXT NOT NULL UNIQUE, + value NUMBER NOT NULL DEFAULT 0 + )`, (err: Error) => { if (err) { console.error(err.message); } diff --git a/fonctions/instanceDB.ts b/fonctions/instanceDB.ts new file mode 100644 index 0000000..adfff81 --- /dev/null +++ b/fonctions/instanceDB.ts @@ -0,0 +1,10 @@ +import sqlite3 from 'sqlite3'; + +const dbName = process.env.DB_NAME || 'db.db'; +let db = new sqlite3.Database(dbName, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err: any) => { + if (err) { + console.error(err.message); + } +}); + +export default db; \ No newline at end of file