const { Client } = require('discord.js'); const fs = require("fs"); const { formatCas } = require("./addons/utils"); const client = new Client(); require('dotenv').config(); const prefix = process.env.PREFIX || 'more'; const modulFolder = "./modules/"; const eventy = { on_message: [] }; const komandy = {}; const aliasy = {}; let spink = false; const kuldan_log = {}; const runEvent = (name, args) => { eventy[name].forEach(listener => { listener(...args); }); }; fs.readdirSync(modulFolder).forEach(function (soubor) { if (soubor.endsWith(".js")) { const modul = require(`${modulFolder}${soubor}`); modul.client = client; Object.keys(modul).forEach(name => { if (name.startsWith('on_')) { if (!eventy[name]) { eventy[name] = []; if (name !== 'on_message') client.on(name.substring(3), (...args) => runEvent(name, args)); } eventy[name].push(modul[name]); } else if (name === 'more_komandy') { Object.keys(modul[name]).forEach(cmdName => { const value = modul[name][cmdName]; if (typeof value !== "object") { komandy[cmdName] = { run: value }; return; } komandy[cmdName] = { run: value.run, cd: value.cd }; value.als?.forEach(al => aliasy[al] = cmdName); }); } }); } }); const spim = mes => { if (mes.content.toLowerCase() === `${prefix} zapni se`) { if (spink) { spink = false; mes.client.user.setStatus("online"); mes.channel.send("dobré ráno magoří"); } else mes.channel.send("tak jsi kokot?"); } else if (!spink) { if (mes.content.toLowerCase() === `${prefix} vypni se`) { mes.react("855120055632134155"); [...mes.client.voice?.connections.values()].forEach(con => con.disconnect()); mes.client.user.setStatus("invisible"); spink = true; } else return false; } return true; }; function maKuldan(id, komand, kuldan_komandu) { if (!kuldan_log[komand]) kuldan_log[komand] = {}; const cas_ted = Date.now() / 1000; const rozdil = cas_ted - kuldan_log[komand][id]; if (rozdil < kuldan_komandu) return kuldan_komandu - rozdil; kuldan_log[komand][id] = cas_ted; return false; } client.on("message", function (mes) { if (process.env.IGNORE_MESS || spim(mes)) return; runEvent('on_message', [mes]); const [mes_prefix, komand, ...args] = mes.content.split(' '); if (mes_prefix.toLowerCase() !== prefix) return; if (!komand) return mes.channel.send("coe voe"); const celArgs = args.join(' '); const cmdName = aliasy[komand] ?? komand; const cmd = komandy[cmdName]; const akce = cmd?.run; if (!akce) return mes.channel.send("co to znamena ti gadzovko"); if (cmd.cd) { const zbyva = Math.round(maKuldan(mes.author.id, cmdName, cmd.cd)); if (zbyva) return mes.channel.send(`si kkt vole maz kuldan jeste ${formatCas(zbyva)}`); } if (typeof akce === "string") return mes.channel.send(akce); const result = akce(celArgs, mes); if (result && !result.then) mes.channel.send(result); }); client.on("debug", console.log); client.on("error", console.error); client.on("warn", console.warn); client.login(process.env.TOKEN);