105 lines
4.1 KiB
JavaScript
105 lines
4.1 KiB
JavaScript
const random = require("./random");
|
|
const insults_fun = require("./insult");
|
|
const words_fun = require("./words");
|
|
const is = require("./is");
|
|
const weebify = require("./weebify");
|
|
const absurdify = require("./absurdify");
|
|
const feedback = require("./feedback");
|
|
const media_wiki = require("./media_wiki");
|
|
const info = require("./info");
|
|
const expand = require("./expand");
|
|
const roleplay = require("./roleplay");
|
|
const suggest = require("./suggest");
|
|
const dice = require("./dice");
|
|
|
|
module.exports = (bot, [ questions, kys, insults, commands_list, words, roleplay_data ], feedback_id, apiToken, ugokiRoot, axios) => {
|
|
|
|
bot.command("question", (ctx) => ctx.reply(random(questions)()));
|
|
bot.command("word", (ctx) => ctx.reply(random(words)()));
|
|
bot.command("words", (ctx) => ctx.reply(words_fun(random, words)(ctx)));
|
|
bot.telegram.getMe()
|
|
.then(bot_user => {
|
|
|
|
const default_text = (command, text) => `Do you want to ${text} `
|
|
+ `yourself?\nIf no, reply to someone with /${command} to ${command}`
|
|
+ ` them or run /${command} username/name.\nYou can suggest `
|
|
+ `more /${command} replies using /feedback`;
|
|
|
|
bot.command("insult", (ctx) => ctx.reply(insults_fun(random,
|
|
insults, default_text("insult", "insult"), "Watch who you talk"
|
|
+ " to.", ["@" + bot_user.username, bot_user.firstName])(ctx)));
|
|
|
|
bot.command("kys", (ctx) => ctx.reply(insults_fun(random, kys,
|
|
default_text("kys", "kill"), "I can't be killed.",
|
|
["@" + bot_user.username, bot_user.firstName])(ctx)));
|
|
|
|
});
|
|
|
|
bot.command("commands", (ctx) => ctx.reply(commands_list.join("\n"), {parse_mode: "html"}));
|
|
bot.command("is", (ctx) => ctx.reply(is(random)(ctx)));
|
|
bot.command("are", (ctx) => ctx.reply(is(random)(ctx)));
|
|
bot.command("can", (ctx) => ctx.reply(is(random)(ctx)));
|
|
bot.command("will", (ctx) => ctx.reply(is(random)(ctx)));
|
|
bot.command("shall", (ctx) => ctx.reply(is(random)(ctx)));
|
|
bot.command("was", (ctx) => ctx.reply(is(random)(ctx)));
|
|
bot.command("do", (ctx) => ctx.reply(is(random)(ctx)));
|
|
bot.command("does", (ctx) => ctx.reply(is(random)(ctx)));
|
|
bot.command("did", (ctx) => ctx.reply(is(random)(ctx)));
|
|
bot.command("should", (ctx) => ctx.reply(is(random)(ctx)));
|
|
bot.command("coin", (ctx) => ctx.reply(random(["Heads", "Tails"])()));
|
|
bot.command("help", (ctx) => ctx.reply("You can either check /commands "
|
|
+ "for a short overview or check the [Help Page]"
|
|
+ "(https://t.me/quadnite/9).", {parse_mode: "Markdown"}));
|
|
bot.command("rate", (ctx) => ctx.reply("[Vote for me on Telegram "
|
|
+ "Directory!](https://t.me/tgdrbot?start=quadnite_bot)", {parse_mode:
|
|
"Markdown"}));
|
|
bot.command("weebify", (ctx) => ctx.reply(weebify()(ctx)));
|
|
bot.command("absurdify", (ctx) => ctx.reply(absurdify()(ctx)));
|
|
bot.command("feedback", (ctx) => ctx.reply(feedback(bot, feedback_id)(ctx)));
|
|
bot.command("wiki", (ctx) => media_wiki(axios,
|
|
"https://en.wikipedia.org/w/api.php")(ctx).then(x => ctx.reply(x,
|
|
{parse_mode: "HTML"})));
|
|
bot.command("arch_wiki", (ctx) => media_wiki(axios,
|
|
"https://wiki.archlinux.org/api.php")(ctx).then(x => ctx.reply(x,
|
|
{parse_mode: "HTML"})));
|
|
bot.command("info", (ctx) => ctx.reply(info()(ctx), {parse_mode: "Markdown"}));
|
|
bot.command("expand", (ctx) => ctx.reply(expand(words)(ctx)));
|
|
bot.command("start", (ctx) => ctx.reply("Hi, I am Quadnite. If you are "
|
|
+ "chatting with me in private, you are most likely doing it wrong. "
|
|
+ "Add me to a group for fun. To give feedback, use /feedback"));
|
|
bot.hears(/^\/?(\d*)d(\d+)(@\w+)?(\s*([-+])\s*(\d+))?$/i, dice());
|
|
|
|
function getGetGif(command) {
|
|
|
|
const alias = roleplay_data[command].alias;
|
|
if (alias)
|
|
return getGetGif(alias);
|
|
|
|
return () => axios.get(
|
|
`category/${command}/gif`,
|
|
{
|
|
baseURL: ugokiRoot
|
|
}
|
|
);
|
|
|
|
}
|
|
|
|
function getForms(name) {
|
|
|
|
if (roleplay_data[name].forms)
|
|
return roleplay_data[name].forms;
|
|
return getForms(roleplay_data[name].alias);
|
|
|
|
}
|
|
|
|
// Add all roleplay commands
|
|
Object.keys(roleplay_data).map(command =>
|
|
bot.command(command,
|
|
(ctx) => roleplay(getForms(command), getGetGif(command))(ctx)
|
|
)
|
|
);
|
|
|
|
bot.command("suggest", (ctx) => suggest(axios, apiToken, ugokiRoot)(ctx));
|
|
|
|
};
|