Yet another rewrite of modules

This commit is contained in:
Histmy 2021-07-31 01:28:57 +02:00
parent 6901712910
commit 82f39d3edd
8 changed files with 262 additions and 385 deletions

25
app.js
View File

@ -6,8 +6,9 @@ require('dotenv').config();
const prefix = process.env.PREFIX || 'more';
const modulFolder = "./modules/";
const komand_handlery = [];
const eventy = { on_message: [] };
const komandy = {};
const aliasy = {};
let spink = false;
const runEvent = (name, args) => {
@ -27,7 +28,17 @@ fs.readdirSync(modulFolder).forEach(function (soubor) {
if (name !== 'on_message') client.on(name.substring(3), (...args) => runEvent(name, args));
}
eventy[name].push(modul[name]);
} else if (name === 'more_komand') komand_handlery.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] = value;
return;
}
komandy[cmdName] = value.run;
value.als?.forEach(al => aliasy[al] = cmdName);
});
}
});
}
});
@ -61,10 +72,12 @@ client.on("message", function (mes) {
if (!komand) return mes.channel.send("coe voe");
const celArgs = args.join(' ');
for (let i = 0; i < komand_handlery.length; i++) {
if (komand_handlery[i](mes, komand.toLowerCase(), celArgs)) return;
}
mes.channel.send('co to znamena ti gadzovko');
const cmd = aliasy[komand] ?? komand;
const akce = komandy[cmd];
if (!akce) return mes.channel.send("co to znamena ti gadzovko");
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);

View File

@ -1,49 +1,40 @@
// Komandy, který pošlou jenom celArgs a random hovno
module.exports = {
more_komand: (mes, komand, celArgs) => {
let corict;
switch (komand) {
more_komandy: {
case 'rekni':
if (mes.author.bot) break;
corict = celArgs ? celArgs : 'co mam jako ric';
mes.channel.send(corict);
rekni: (arg, mes) => {
if (mes.author.bot) return "ne";
const corict = arg ?? "co mam jako rict";
mes.delete();
break;
return corict;
},
case 'clap':
mes.channel.send(`${celArgs} <a:DENIM3K_Clap:629991700571619328>`);
clap: (arg, mes) => {
mes.delete();
break;
return `${arg} <a:DENIM3K_Clap:629991700571619328>`;
},
case 'clap2':
mes.channel.send(`<a:DENIM3K_Clap2:820793564043673650> ${celArgs}`);
clap2: (arg, mes) => {
mes.delete();
break;
return `<a:DENIM3K_Clap2:820793564043673650> ${arg}`;
},
case 'voliž':
case 'voliz':
mes.channel.send(`<a:DENIM3K_lickL:678025691207565313>${celArgs}<a:DENIM3K_lickR:678025693313105964>`);
voliz: {
als: ["voliž"],
run: (arg, mes) => {
mes.delete();
break;
case 'pozdrav':
mes.channel.send(`zdravim ${celArgs}`);
break;
case 'zhejti':
mes.channel.send(`${celArgs} je pycovina zasrana vimrdana`);
break;
case 'uraž':
case 'uraz':
mes.channel.send(`${celArgs} , u suck`);
break;
default:
return false;
return `<a:DENIM3K_lickL:678025691207565313>${arg}<a:DENIM3K_lickR:678025693313105964>`;
}
},
pozdrav: arg => `zdravim ${arg}`,
zhejti: arg => `${arg} je pycovina zasrana vimrdana`,
uraz: {
als: ["uraž"],
run: arg => `${arg} , u suck`
}
return true;
}
};

View File

@ -1,76 +1,64 @@
// Komandy, který buď nějakým způsobem mění funkci nebo "vzhled" bota
// nebo donutí bota něco udělat (odeslání zprávy s výsledkem nebo smazání originální zprávy se nepočítá)
const akce = { hraj: 'PLAYING', sleduj: 'WATCHING', poslouchej: 'LISTENING', soutez: 'COMPETING', soutěž: 'COMPETING', nedelej: '', nedělej: '' };
const zarizeni = { desktop: 'Počítač', mobile: 'Mobil', web: 'Web' };
const statusy = { online: '🟢', idle: '🟡', dnd: '🔴' };
const changeStatus = (mes, status) => {
mes.client.user.setStatus(status);
return "ano pane";
};
const changeActivity = (mes, activity, txt) => {
mes.client.user.setActivity(txt, activity);
mes.react("730175107313565717");
return "ano pane";
};
const ping = /^<@!?\d+>$/;
module.exports = {
more_komand: (mes, komand, celArgs) => {
switch (komand) {
more_komandy: {
case 'online':
case 'onlajn':
case 'zelenej':
mes.client.user.setStatus('online');
mes.channel.send('ano pane');
break;
online: {
als: ["onlajn", "zelenej"],
run: (_, mes) => changeStatus(mes, "online")
},
idle: {
als: ["žlutej", "zlutej", "afk", "idle", "nepřítomnej", "nepritomnej"],
run: (_, mes) => changeStatus(mes, "idle")
},
dnd: {
als: ["nerusit", "nerušit", "červenej", "cervenej"],
run: (_, mes) => changeStatus(mes, "dnd")
},
offline: {
als: ["oflajn", "neviditelnej"],
run: (_, mes) => changeStatus(mes, "invisible")
},
case 'neviditelnej':
case 'offline':
case 'oflajn':
mes.client.user.setStatus('invisible');
mes.channel.send('ano pane');
break;
hraj: (arg, mes) => changeActivity(mes, "PLAYING", arg),
sleduj: (arg, mes) => changeActivity(mes, "WATCHING", arg),
poslouchej: (arg, mes) => changeActivity(mes, "LISTENING", arg),
soutez: {
als: ["soutěž"],
run: (arg, mes) => changeActivity(mes, "COMPETING", arg)
},
nedelej: (_, mes) => changeActivity(mes, ""),
case 'dnd':
case 'nerusit':
case 'nerušit':
case 'červenej':
case 'cervenej':
mes.client.user.setStatus('dnd');
mes.channel.send('ano pane');
break;
fight: {
als: ["figh", "fajt"],
run: (arg, mes) => {
if (!ping.test(arg)) return 'tak si kokot ti kokote';
case 'žlutej':
case 'zlutej':
case 'afk':
case 'idle':
case 'nepřítomnej':
case 'nepritomnej':
mes.client.user.setStatus('idle');
mes.channel.send('ano pane');
break;
case 'hraj':
case 'sleduj':
case 'poslouchej':
case 'soutez':
case 'soutěž':
case 'nedelej':
case 'nedělej':
mes.client.user.setActivity(celArgs, { type: akce[komand] });
mes.channel.send('ano pane');
mes.react('730175107313565717');
break;
case 'fight':
case 'figh':
case 'fajt':
if (!ping.test(celArgs)) {
mes.channel.send('tak si kokot ti kokote');
break;
const vyherce = Math.random() < 0.5 ? mes.author : arg;
return `tento figh vyhrál: ${vyherce}!`;
}
const vyherce = Math.round(Math.random()) ? mes.author : celArgs;
mes.channel.send(`tento figh vyhrál: ${vyherce}!`);
break;
},
status: (arg, mes) => {
if (!ping.test(arg)) return 'tak si kokot ti kokote';
case 'status':
if (!ping.test(celArgs)) {
mes.channel.send('tak si kokot ti kokote');
break;
}
const uzivatel = mes.mentions.users.first();
const embed = {
title: `Informace o statusech pro ${uzivatel.username}:`,
@ -86,24 +74,18 @@ module.exports = {
});
embed.description = uStatusy.join('\n');
}
mes.channel.send({ embed });
break;
return { embed };
},
case 'zareaguj':
case 'reakce':
case 'reaguj':
if (!celArgs) {
mes.channel.send('retard');
break;
}
zareaguj: {
als: ["react"],
run: (arg, mes) => {
if (!arg) return 'retard';
const emouty = arg.match(/<a?:\w{1,32}:\d+>/g);
if (!emouty) return 'retard';
const emouty = celArgs.match(/<a?:\w{1,32}:\d+>/g);
if (!emouty) {
mes.channel.send('retard');
break;
}
let naCo;
(async () => {
if (mes.reference) {
naCo = await mes.channel.messages.fetch(mes.reference.messageID);
@ -112,14 +94,30 @@ module.exports = {
naCo = msgs[msgs.length - 2];
}
emouty.forEach(emout => naCo.react(emout));
mes.delete();
emouty.forEach(emout => naCo.react(emout));
})();
break;
default:
return false;
}
return true;
},
odpocitej: (_, mes) => {
const randomshit = (dalsi, argument) => {
dalsi.edit(argument[0]);
argument.splice(0, 1);
if (argument.length) setTimeout(() => randomshit(dalsi, argument), 1000);
};
mes.channel.send(":stop_button:").then(mes => randomshit(mes, [":five:", ":four:", ":three:", ":two:", ":one:", ":ok:"]));
},
pocasi: {
als: ["počasí"],
run: _ => {
const embed = {
title: "Počasí",
image: { url: "attachment://pocasi.png" }
};
return { embed, files: ["https://util.deadfish.cz/morepocasi/v/49.4348358/12.8147250/pocasi.png"] };
}
}
}
};

View File

@ -6,56 +6,45 @@ const mista = ['na šroťák', 'na vrakoviště', 'na smetiště', 'do kontejner
const rand = max => Math.floor(Math.random() * max);
module.exports = {
more_komand: (mes, komand, celArgs) => {
let corict;
switch (komand) {
more_komandy: {
case 'vtip':
case 'ftip':
mes.channel.send(ftipy[rand(ftipy.length)]);
break;
vtip: {
als: ["ftip"],
run: _ => ftipy[rand(ftipy.length)]
},
case 'kam':
mes.channel.send(mista[rand(mista.length)]);
break;
kam: _ => mista[rand(mista.length)],
case 'je':
mes.channel.send(rand(2) ? 'jo je' : 'ne neni');
break;
je: _ => rand(2) ? "jo je" : "ne neni",
case 'má':
case 'ma':
mes.channel.send(rand(2) ? 'jo ma' : 'ne nema');
break;
ma: {
als: ["má"],
run: _ => rand(2) ? "jo ma" : "ne nema"
},
case 'nazor':
case 'názor':
mes.channel.send(rand(2) ? `mam rad ${celArgs}` : `${celArgs} je picovina`);
break;
nazor: {
als: ["názor"],
run: arg => rand(2) ? `mam rad ${arg}` : `${arg} je picovina`
},
case 'si':
case 'jsi':
corict = celArgs.replace('?', '');
mes.channel.send(rand(2) ? `jo sem ${corict}` : `ne nejsem ${corict}`);
break;
case 'mas':
case 'máš':
corict = celArgs.replace('?', '');
mes.channel.send(rand(2) ? `jo mam ${corict}` : `ne nemam ${corict}`);
break;
case 'jakmoc':
mes.channel.send(`${celArgs} na ${rand(101)}%`);
break;
case "jakmoc0":
mes.channel.send(`${celArgs} na ${rand(1001)}`);
break;
default:
return false;
si: {
als: ["jsi"],
run: arg => {
const corict = arg.replace(/\?/g, "");
return rand(2) ? `jo sem ${corict}` : `ne nejsem ${corict}`;
}
return true;
},
mas: {
als: ["máš"],
run: arg => {
const corict = arg.replace(/\?/g, "");
return rand(2) ? `jo mam ${corict}` : `ne nemam ${corict}`;
}
},
jakmoc: arg => `${arg} na ${rand(101)}%`,
jakmoc0: arg => `${arg} na ${rand(1001)}%`
}
};

View File

@ -3,81 +3,34 @@
const pomoc = JSON.parse(require('fs').readFileSync('addons/pomoc.json'));
module.exports = {
more_komand: (mes, komand) => {
switch (komand) {
more_komandy: {
case 'vole':
mes.channel.send('coe voe more gadzo');
break;
vole: _ => "coe voe more gadzo",
case 'kobel':
mes.channel.send('kde?');
break;
kobel: _ => "kde?",
case 'ano':
case 'jo':
case 'ne':
mes.channel.send('ok');
break;
ano: {
als: ["jo", "ne"],
run: "ok"
},
case 'rekt':
mes.channel.send('**ouuuuuuuuuuuuuuuuuuuuu**');
break;
rekt: "**ouuuuuuuuuuuuuuuuuuuuu**",
case 'omegasmart':
mes.channel.send('<:DENIM3K_OMEGASMART1:638103812892131328><:DENIM3K_OMEGASMART2:638104266195861514><:DENIM3K_OMEGASMART3:638104266178822155>\n<:DENIM3K_OMEGASMART4:638104266246062180><:DENIM3K_OMEGASMART5:638104266241867787><:DENIM3K_OMEGASMART6:638104265889546241>\n<:DENIM3K_OMEGASMART7:638104266267033610><:DENIM3K_OMEGASMART8:638104266271096882><:DENIM3K_OMEGASMART9:638104266258513960>');
break;
omegasmart: "<:DENIM3K_OMEGASMART1:638103812892131328><:DENIM3K_OMEGASMART2:638104266195861514><:DENIM3K_OMEGASMART3:638104266178822155>\n<:DENIM3K_OMEGASMART4:638104266246062180><:DENIM3K_OMEGASMART5:638104266241867787><:DENIM3K_OMEGASMART6:638104265889546241>\n<:DENIM3K_OMEGASMART7:638104266267033610><:DENIM3K_OMEGASMART8:638104266271096882><:DENIM3K_OMEGASMART9:638104266258513960>",
case 'lag':
mes.channel.send('protoze to spousti na tich stravberi');
break;
lag: "protoze to spousti na tich stravberi",
case 'triggered':
mes.channel.send('toto me trickeruje');
break;
triggered: "toto me trickeruje",
case 'slak':
case 'šlak':
mes.channel.send('te natahne\nhttps://tenor.com/view/tired-done-imdone-afterschool-school-gif-5682065');
break;
slak: {
als: ["šlak"],
run: "te natahne\nhttps://tenor.com/view/tired-done-imdone-afterschool-school-gif-5682065"
},
case 'pomoc':
mes.channel.send(pomoc[0].join('\n'));
break;
pomoc: pomoc[0].join("\n"),
case 'pomoc2':
mes.channel.send({ embed: pomoc[1] });
break;
pomoc2: _ => { return { embed: pomoc[1] }; },
case "odpocitej":
case "odpočítej": {
const randomshit = (dalsi, argument) => {
dalsi.edit(argument[0]);
argument.splice(0, 1);
if (argument.length) setTimeout(() => randomshit(dalsi, argument), 1000);
};
mes.channel.send(":stop_button:").then(mes => randomshit(mes, [":five:", ":four:", ":three:", ":two:", ":one:", ":ok:"]));
break;
}
case "počasí":
case "pocasi": {
const embed = {
title: "Počasí",
image: { url: "attachment://pocasi.png" }
};
mes.channel.send({ embed, files: ["https://util.deadfish.cz/morepocasi/v/49.4348358/12.8147250/pocasi.png"] });
break;
}
case "verze":
mes.channel.send(`${require("../package.json").version}\nčenžlog mas tady https://denim3001.deadfish.cz/morehovna`);
break;
default:
return false;
}
return true;
verze: _ => `${require("../package.json").version}\nčenžlog mas tady https://denim3001.deadfish.cz/morehovna`
}
};

View File

@ -1,6 +1,7 @@
// Modul dedikovaný funkci spinkáček
const fetch = require('node-fetch');
const { formatCas } = require("../addons/utils.js");
const spinkacky = [];
const contactSpinkServer = async (akce, id, nick, avatar) => {
@ -28,37 +29,25 @@ const syncSpink = async () => {
syncSpink();
const formatCas = c => {
const h = Math.floor(c / 3600);
const m = Math.floor(c % 3600 / 60);
const s = Math.floor(c % 3600 % 60);
return `${h} hodin ${m} mynut a ${s} se kund`;
};
module.exports = {
more_komand: (mes, komand) => {
switch (komand) {
more_komandy: {
case 'spinkáček':
case 'spinkacek':
if (mes.author.bot) {
mes.channel.send("až někdy<:kapp:677916836418813953>");
break;
}
spinkacek: {
als: ["spinkáček"],
run: (_, mes) => {
if (mes.author.bot) return "až někdy<:kapp:677916836418813953>";
(async () => {
if (await contactSpinkServer('spinkacek', mes.author.id, mes.author.username, mes.author.avatarURL()) === "OK")
mes.react("761652251966046208");
else mes.channel.send('nespis uz?????');
})();
break;
case 'vstáváček':
case 'vstavacek':
if (mes.author.bot) {
mes.channel.send("<:sjeta:623216247953424426>");
break;
}
},
vstavacek: {
als: ["vstáváček"],
run: (_, mes) => {
if (mes.author.bot) return "<:sjeta:623216247953424426>";
(async () => {
const odpoved = await contactSpinkServer('vstavacek', mes.author.id);
const [ok, cas] = odpoved.split(" ");
@ -75,12 +64,8 @@ module.exports = {
mes.channel.send(`dobry rano hajzle\nspal sy ${formatedCas}\n${zpr}`);
})();
break;
default:
return false;
}
return true;
}
},
on_voiceStateUpdate: (bef, aft) => {

View File

@ -1,6 +1,5 @@
// Cokoliv co má něco společnýho s vojsem
const fs = require('fs');
const { formatCas } = require("../addons/utils.js");
let vojsKuldan = 0;
@ -66,32 +65,21 @@ const vytahnout = (clen, patro) => {
const timeouty = {};
module.exports = {
more_komand: (mes, komand, celArgs) => {
switch (komand) {
more_komandy: {
case 'wojs':
mes.channel.send(`vojs se pise s normalnim v ti kriple ${mes.author}`);
break;
wojs: (_, mes) => `vojs se pise s normalnim v ti kriple ${mes.author}`,
case 'vojs':
vojs: (arg, mes) => {
const channel = mes.member.voice.channel;
if (!channel) {
mes.channel.send(`di si tam sam ne ty gadzo ${mes.author}`);
break;
}
if (!channel) return `di si tam sam ne ty gadzo ${mes.author}`;
const rozdil = (Date.now() - vojsKuldan) / 1000;
if (rozdil < 14_400) {
mes.channel.send(`\`${process.env.PREFIX} vojs\` muzes pouzit jyz zua ${formatCas(14_400 - rozdil)}`);
break;
}
if (rozdil < 14_400) return `\`${process.env.PREFIX} vojs\` muzes pouzit jyz zua ${formatCas(14_400 - rozdil)}`;
vojsKuldan = Date.now();
if (celArgs !== 'potichu') mes.channel.send('<@&591306633196339261> vojs');
if (arg !== 'potichu') mes.channel.send('<@&591306633196339261> vojs');
if (mes.guild.voice) {
if (mes.guild.voice.channel === channel && mes.guild.voice.connection) break;
}
if (mes.guild.voice?.channel === channel && mes.guild.connection) return;
channel.join()
.then(con => {
@ -106,59 +94,33 @@ module.exports = {
}
setTimeout(() => con.play('./zvuky/nazdar.ogg'), 500);
});
break;
},
case "odejdi":
case "disconnect":
case "leave":
case "odpoj":
case "votpoj":
case "vodpoj":
case "vodprejskni":
case "tahni":
case "táhni":
case "vypadni":
vypadni: {
als: ["odejdi", "disconnect", "leave", "odpoj", "votpoj", "vodpoj", "vodprejskni", "tahni", "táhni"],
run: _ => {
let vojs = mes.guild.voice;
if (!vojs) vojs = {};
if (!vojs.channel) {
mes.channel.send('nejsem ve vojsu');
break;
}
if (!vojs.channel) return mes.channel.send('nejsem ve vojsu');
vojs.channel.leave();
mes.react('855120055632134155');
break;
}
},
case 'vitah':
case 'vytah':
if (!mes.member) {
mes.channel.send('kokot');
break;
}
if (!mes.member.voice.channel) {
mes.channel.send(`nejsi ve vojsu ty gadzo ${mes.author}`);
break;
}
if (!celArgs) {
mes.channel.send(`napis do jakiho patra ${mes.author}`);
break;
}
vytah: {
als: ["vitah"],
run: (arg, mes) => {
if (!mes.member) return 'kokot';
if (!mes.member.voice.channel) return `nejsi ve vojsu ty gadzo ${mes.author}`;
if (!arg) return `napis do jakiho patra ${mes.author}`;
vytahnout(mes.member, Number(celArgs) || 0);
break;
}
},
case "krkacek":
case "krkáček":
case "krkácek":
case "krkaček":
case "krk":
case "grg":
case "grgnisi":
case "krknisi":
case "grgacek":
case "grgáček":
case "grgácek":
case "grgaček":
(async _ => {
krkacek: {
als: ["krkáček", "krkácek", "krkaček", "krk", "grg", "grgnisi", "krknisi", "grgacek", "grgáček", "grgácek", "grgaček"],
run: async (_, mes) => {
let vojs = mes.guild.voice?.connection;
let odpojit = false;
if (!vojs) {
@ -168,14 +130,8 @@ module.exports = {
odpojit = true;
}
vojs.play(`./zvuky/grg.mp3`, { volume: 0.5 }).on("finish", _ => { if (odpojit) vojs.channel.leave(); });
})();
break;
default:
return false;
}
return true;
}
},
// Neodposlouchávej

View File

@ -1,27 +1,19 @@
// Komandy nebo handelery který se nikam jinam nehodí
module.exports = {
more_komand: (mes, komand, celArgs) => {
switch (komand) {
more_komandy: {
case 'debug_log':
console.log('log: ', celArgs);
mes.channel.send('je to v konzoli');
break;
debug_log: arg => {
console.log('log: ', arg);
return 'je to v konzoli';
},
update: (_, mes) => {
if (mes.channel.id != process.env.ADMIN_CHANNEL && mes.author.id != process.env.ADMIN_ID) return "nato nemas prava kokote";
case "update":
if (mes.channel.id != process.env.ADMIN_CHANNEL && mes.author.id != process.env.ADMIN_ID) {
mes.channel.send("nato nemas prava kokote");
break;
}
[...mes.client.voice?.connections.values()].forEach(con => con.disconnect());
mes.react("👋")
.then(() => process.exit());
break;
default:
return false;
}
return true;
}
};