diff --git a/bot.js b/bot.js index 998b15b..52c0fc7 100644 --- a/bot.js +++ b/bot.js @@ -19,3 +19,4 @@ Promise.all(data) .then(data => commands(bot, data)); +bot.launch(); diff --git a/commands/index.js b/commands/index.js new file mode 100644 index 0000000..6054f12 --- /dev/null +++ b/commands/index.js @@ -0,0 +1,27 @@ +const random = require("./random"); +const insults_fun = require("./insult"); +const is = require("./is"); +module.exports = (bot, [ questions, kys, insults, commands_list ]) => { + + bot.command("question", (ctx) => ctx.reply(random(questions)())); + + const default_text = (command, text) => `Do you want to ${text} yourself?\n` + + `If no, reply to someone with /${command} to kill them or run /${command} username/name.\n` + + `You can suggest more /${command} replies using /feedback`; + bot.command("insult", (ctx) => ctx.reply(insults_fun(random, insults, default_text("insult", "insult"))(ctx))); + bot.command("kys", (ctx) => ctx.reply(insults_fun(random, kys, default_text("kys", "kill"))(ctx))); + + bot.command("commands", (ctx) => ctx.reply(commands_list.join("\n"))); + bot.command("is", (ctx) => ctx.reply(is(random))); + bot.command("are", (ctx) => ctx.reply(is(random))); + bot.command("can", (ctx) => ctx.reply(is(random))); + bot.command("will", (ctx) => ctx.reply(is(random))); + bot.command("shall", (ctx) => ctx.reply(is(random))); + bot.command("was", (ctx) => ctx.reply(is(random))); + bot.command("do", (ctx) => ctx.reply(is(random))); + bot.command("does", (ctx) => ctx.reply(is(random))); + bot.command("did", (ctx) => ctx.reply(is(random))); + bot.command("should", (ctx) => ctx.reply(is(random))); + bot.command("coin", (ctx) => ctx.reply(random(["Heads", "Tails"])())); + +}; diff --git a/commands/insult.js b/commands/insult.js new file mode 100644 index 0000000..bc081f1 --- /dev/null +++ b/commands/insult.js @@ -0,0 +1,22 @@ +module.exports = (random, kys, default_text) => (ctx) => { + + if (ctx.message.reply_to_message) { + + const { from } = ctx.message.reply_to_message; + const name = from.username ? "@" + from.username : from.firstName; + return random(kys)().replace(/##name##/g, name); + + } else { + + const text_array = ctx.message.text.split(" "); + if (text_array.length > 1) { + + const name = text_array[1]; + return random(kys)().replace(/##name##/g, name); + + } else + return default_text; + + } + +}; diff --git a/commands/is.js b/commands/is.js new file mode 100644 index 0000000..849e587 --- /dev/null +++ b/commands/is.js @@ -0,0 +1,7 @@ +module.exports = (random) => + random([["Yes", "Yep", "Yeah", "Yus", "Ja", "Ya", "Aye", "Ay", "Oui"], + ["No", "Nopes", "Nu", "Nah", "Nein", "Naw", "Nay", "Yesn't"]][Math.round( + Math.random())])(); + + + diff --git a/commands/random.js b/commands/random.js index d9fc80e..b82deba 100644 --- a/commands/random.js +++ b/commands/random.js @@ -1,2 +1,5 @@ module.exports = (list = []) => (n = 1) => - Array(n).fill(0).map(list[Math.floor(Math.random() * list.length)]); + Array(n) + .fill(0) + .map(() => list[Math.floor(Math.random() * list.length)]) + .join("\n"); diff --git a/command_list.txt b/commands_list.txt similarity index 100% rename from command_list.txt rename to commands_list.txt diff --git a/shrinkwrap.yaml b/shrinkwrap.yaml new file mode 100644 index 0000000..b13e240 --- /dev/null +++ b/shrinkwrap.yaml @@ -0,0 +1,50 @@ +dependencies: + telegraf: 3.27.1 +packages: + /@types/node/10.12.24: + dev: false + resolution: + integrity: sha512-GWWbvt+z9G5otRBW8rssOFgRY87J9N/qbhqfjMZ+gUuL6zoL+Hm6gP/8qQBG4jjimqdaNLCehcVapZ/Fs2WjCQ== + /debug/4.1.1: + dependencies: + ms: 2.1.1 + dev: false + resolution: + integrity: sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + /ms/2.1.1: + dev: false + resolution: + integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + /node-fetch/2.3.0: + dev: false + engines: + node: 4.x || >=6.0.0 + resolution: + integrity: sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA== + /sandwich-stream/2.0.2: + dev: false + engines: + node: '>= 0.10' + resolution: + integrity: sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ== + /telegraf/3.27.1: + dependencies: + '@types/node': 10.12.24 + debug: 4.1.1 + node-fetch: 2.3.0 + sandwich-stream: 2.0.2 + telegram-typings: 3.6.1 + dev: false + engines: + node: '>=6.2.0' + resolution: + integrity: sha512-RQUnuNAEEWcLhRap81qwGUUqAy1KcvqANnA0G3pzZqFkhMe6LrTk5lVi9tdOaF0Ud/yOx5fdx0rNPYfiB27Z+w== + /telegram-typings/3.6.1: + dev: false + resolution: + integrity: sha512-njVv1EAhIZnmQVLocZEADYUyqA1WIXuVcDYlsp+mXua/XB0pxx+PKtMSPeZ/EE4wPWTw9h/hA9ASTT6yQelkiw== +registry: 'https://registry.npmjs.org/' +shrinkwrapMinorVersion: 9 +shrinkwrapVersion: 3 +specifiers: + telegraf: ^3.27.1