Compare commits

...

2 Commits

Author SHA1 Message Date
Ceda EI fde5830309 Update /commands to include new commands 2021-06-21 23:18:13 +05:30
Ceda EI 71e6f6927d Add roleplay commands 2021-06-21 23:17:45 +05:30
5 changed files with 1251 additions and 18 deletions

3
bot.js
View File

@ -3,6 +3,7 @@ const { BOT_API_KEY, FEEDBACK_ID } = process.env;
const fs = require("fs").promises;
const commands = require("./commands");
const axios = require("axios");
const roleplay = require("./roleplay.json");
const bot = new Telegraf(BOT_API_KEY);
bot.catch((err) => console.log(err));
@ -20,6 +21,6 @@ const data = [
Promise.all(data)
.then(data =>
commands(bot, data, FEEDBACK_ID, axios));
commands(bot, [...data, roleplay], FEEDBACK_ID, axios));
bot.launch();

View File

@ -8,8 +8,9 @@ const feedback = require("./feedback");
const media_wiki = require("./media_wiki");
const info = require("./info");
const expand = require("./expand");
const roleplay = require("./roleplay");
module.exports = (bot, [ questions, kys, insults, commands_list, words ], feedback_id, axios) => {
module.exports = (bot, [ questions, kys, insults, commands_list, words, roleplay_data ], feedback_id, axios) => {
bot.command("question", (ctx) => ctx.reply(random(questions)()));
bot.command("word", (ctx) => ctx.reply(random(words)()));
@ -32,7 +33,7 @@ module.exports = (bot, [ questions, kys, insults, commands_list, words ], feedba
});
bot.command("commands", (ctx) => ctx.reply(commands_list.join("\n")));
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)));
@ -65,4 +66,8 @@ module.exports = (bot, [ questions, kys, insults, commands_list, words ], feedba
+ "chatting with me in private, you are most likely doing it wrong. "
+ "Add me to a group for fun. To give feedback, use /feedback"));
// Add all roleplay commands
Object.keys(roleplay_data).map(command =>
bot.command(command, ctx => roleplay(roleplay_data[command].forms, roleplay_data[command].gifs)(ctx)));
};

40
commands/roleplay.js Normal file
View File

@ -0,0 +1,40 @@
function joinUsers(users) {
if (users.length == 1)
return users[0];
return users.slice(0, users.length - 1).join(", ")
+ ` and ${users[users.length - 1]}`;
}
module.exports = (forms, gifs) => (ctx) => {
const gif = gifs[Math.floor(Math.random() * gifs.length)];
const message = ctx.message.text.replace(/^[^ ]+\s*/, "")
.match(/^((@\w+(\s+|$))*)(.*)/);
const users = message[1].trim().split(" ").filter(i => i.length);
const reason = message[4];
let reply = "";
const from = ctx.message.from;
const user = from.username ? "@" + from.username : from.first_name;
if (users.length > 0 && reason.length > 0)
reply = forms.both
.replace("{}", user)
.replace("{}", joinUsers(users))
.replace("{}", reason);
else if (users.length > 0)
reply = forms.others
.replace("{}", user)
.replace("{}", joinUsers(users));
else if (reason.length > 0)
reply = forms.reason
.replace("{}", user)
.replace("{}", reason);
else
reply = forms.none
.replace("{}", user);
ctx.replyWithAnimation(gif, {caption: reply});
};

View File

@ -1,24 +1,61 @@
question - Get a random question
word - Get a random word
words - Get n random words
kys - Kill yourself
<b>Random</b>
coin - Tosses a coin
wiki - Search Wikipedia
arch_wiki - Search the Arch wiki
kys - Kill yourself
insult - As expected, insults
<b>Wordplay</b>
question - Get a random question
word - Get a random word
words - Get n random words
weebify - Weebifies the given text
absurdify - mAke tExT aBSUrd
is - Is <your question>
are - Are <your question>
can - Can <your question>
will - will <your question>
shall - shall <your question>
was - Was <your question>
do - Do <your question>
does - Does <your question>
did - Did <your question>
should - Should <your question>
expand - Expands a given abbreviation
<b>Ask a question</b>
<code>
is are can
will did shall
was do does
should
</code>
<b>Roleplay</b>
<code>
angry bite
blush bored
bonk boop
chase cheer
cringe cry
cuddle dab
dance die
eat facepalm
feed glomp
happy hate
holdhands hide
highfive hug
kill kiss
laugh lick
love lurk
nervous no
nom nuzzle
panic pat
peck poke
pout run
shoot shrug
sip slap
sleep snuggle
stab tease
think thumbsup
tickle triggered
twerk wag
wave wink
yes
</code>
<b>Miscallenous</b>
help - Need help? Go here
feedback - Send feedback, suggestion for kys, insult text
rate - Rate me on TGDR
expand - Expands a given abbreviation

1150
roleplay.json Normal file

File diff suppressed because it is too large Load Diff