const { Events, ActivityType } = require("discord.js"); const addBaseInDB = require("../fonctions/addBaseInDB"); const { Client, RichPresence, CustomStatus } = require('discord.js-selfbot-v13'); 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`) const status = new RichPresence(client) .setApplicationId('1000410111833018378') .setType('STREAMING') .setURL('https://www.twitch.tv/tuturp33') .setState('Administrer sur SwiftBot') .setName('SwiftBot') .setDetails('SwiftBot') .setStartTimestamp(Date.now()) .setAssetsLargeImage('1213862750451929138') .setAssetsLargeText('Rejoins nous sur Discord') .setAssetsSmallImage('1213863166874746910') .setAssetsSmallText('TuturP33') .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('Regarde vos messages !'); setInterval(() => { 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; 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) => { if (err) { console.error(err.message); } 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; } }); }); setInterval(() => { let tasks: any = []; db.all('SELECT * FROM task', (err: any, rows: any) => { if (err) { console.error(err.message); } rows.forEach((row: any) => { tasks.push(row); }); tasks.forEach((task: any) => { if (task.dernier_lancement + task.time * 60000 < new Date().getTime()) { try { eval(task.code) console.log(`La tâche ${task.name} a été exécutée avec succès.`); const lastExecution = new Date().getTime(); db.run(`UPDATE task SET dernier_lancement = ? WHERE id = ?`, [lastExecution, task.id], (err: any) => { if (err) { console.error(err.message); } }); } catch (e) { console.log(`Erreur dans la tâche ${task.name} : ${e}`); } } }); }); }, 15000); setInterval(() => { let vocals: any = []; db.all('SELECT * FROM autovoc', (err: any, rows: any) => { if (err) { console.error(err.message); } rows.forEach((row: any) => { vocals.push(row); }); vocals.forEach((voc: any) => { const voiceChannel: any = client.channels.cache.get(voc.vocalID); if (!voiceChannel) return; const guild = client.guilds.cache.get(voiceChannel.guildId); if (!guild) return; const member = guild.members.cache.get(client.user.id); const memberVoiceChannel = member.voice.channel; if (memberVoiceChannel) return; const clientVoc = new Client({ checkUpdate: false }); clientVoc.on('ready', async () => { console.log('autovoc :', voc.vocalID); joinVC(clientVoc, voc.vocalID); }); clientVoc.login(process.env.TOKENS); }); }); }, 60000); let intervalTime = 10000; setInterval(() => { db.get('SELECT value FROM config WHERE name = "timeRainbowRole"', (err: any, row: any) => { if (err) { console.error(err.message); } const time = row ? row.value : 10; intervalTime = time * 1000; }); let roles: any = []; db.all('SELECT * FROM rainbowroles', (err: any, rows: any) => { if (err) { console.error(err.message); } rows.forEach((row: any) => { roles.push(row); }); roles.forEach((role: any) => { const guilds = client.guilds.cache; guilds.forEach((guild: any) => { const roleToEdit = guild.roles.cache.get(role.roleID); if (roleToEdit) { const randomColor = Math.floor(Math.random() * 16777215).toString(16); roleToEdit.setColor(randomColor); } }); }); }); }, intervalTime); 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); }); } };