Compare commits

..

4 Commits

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

View File

@ -8,8 +8,9 @@ const feedback = require("./feedback");
const media_wiki = require("./media_wiki"); const media_wiki = require("./media_wiki");
const info = require("./info"); const info = require("./info");
const expand = require("./expand"); 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("question", (ctx) => ctx.reply(random(questions)()));
bot.command("word", (ctx) => ctx.reply(random(words)())); 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("is", (ctx) => ctx.reply(is(random)(ctx)));
bot.command("are", (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("can", (ctx) => ctx.reply(is(random)(ctx)));
@ -63,4 +64,8 @@ module.exports = (bot, [ questions, kys, insults, commands_list, words ], feedba
bot.command("expand", (ctx) => ctx.reply(expand(words)(ctx))); bot.command("expand", (ctx) => ctx.reply(expand(words)(ctx)));
bot.command("start", (ctx) => ctx.reply("Hi! I'm Octanite. Sibling of @quadnite_bot. My creator @ceda_ei created me as 'another option' to users who want the bot in their groups to have privacy mode enabled. \n\nPrivacy mode? Wut is that?\n- Well basically disabling privacy mode enables a bot to read all the messages. @quadnite_bot has that disabled. Enabling privacy mode causes the bot to not recieve messages at some times. To circumvet that, you need to append @octanite_bot to your commands or simply use @quadnite_bot. \n\n[P.S. - My creator doesn't store any messages or personal data. It's safe to use any of the two bots.]\nTo give feedback, use /feedback")); bot.command("start", (ctx) => ctx.reply("Hi! I'm Octanite. Sibling of @quadnite_bot. My creator @ceda_ei created me as 'another option' to users who want the bot in their groups to have privacy mode enabled. \n\nPrivacy mode? Wut is that?\n- Well basically disabling privacy mode enables a bot to read all the messages. @quadnite_bot has that disabled. Enabling privacy mode causes the bot to not recieve messages at some times. To circumvet that, you need to append @octanite_bot to your commands or simply use @quadnite_bot. \n\n[P.S. - My creator doesn't store any messages or personal data. It's safe to use any of the two bots.]\nTo 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 <b>Random</b>
word - Get a random word
words - Get n random words
kys - Kill yourself
coin - Tosses a coin coin - Tosses a coin
wiki - Search Wikipedia wiki - Search Wikipedia
arch_wiki - Search the Arch wiki arch_wiki - Search the Arch wiki
kys - Kill yourself
insult - As expected, insults 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 weebify - Weebifies the given text
absurdify - mAke tExT aBSUrd absurdify - mAke tExT aBSUrd
is - Is <your question> expand - Expands a given abbreviation
are - Are <your question>
can - Can <your question> <b>Ask a question</b>
will - will <your question> <code>
shall - shall <your question> is are can
was - Was <your question> will did shall
do - Do <your question> was do does
does - Does <your question> should
did - Did <your question> </code>
should - Should <your question> <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 help - Need help? Go here
feedback - Send feedback, suggestion for kys, insult text feedback - Send feedback, suggestion for kys, insult text
rate - Rate me on TGDR 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