diff --git a/.gitignore b/.gitignore index 3c3629e..b80f403 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ node_modules +data/* +!data/.gitkeep diff --git a/README.md b/README.md index d665b9d..df66af6 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,16 @@ # Quadnite-Bot -Source code for @quadnite_bot + +Source code for [@quadnite\_bot](https://t.me/quadnite_bot) + +## Running your own instance + +Quadnite bot depends on [Ugoki](https://gitlab.com/ceda_ei/ugoki) for providing +roleplay gifs. Once you have an instance of Ugoki (and optionally +[Ugoki Frontend](https://gitlab.com/ceda_ei/ugoki-frontend)) running: + +- Clone this repo +- `npm install` +- `export BOT_API_KEY="your-token-for-bot"` +- `export FEEDBACK_ID="chat-id-where-feedback-is-forwarded-to"` +- `export UGOKI_ROOT="https://root.of.ugoki.api/server/"` +- `npm start` diff --git a/bot.js b/bot.js index 291b8ec..dfae4f9 100644 --- a/bot.js +++ b/bot.js @@ -1,9 +1,9 @@ const Telegraf = require("telegraf"); -const { BOT_API_KEY, FEEDBACK_ID } = process.env; +const { BOT_API_KEY, FEEDBACK_ID, UGOKI_ROOT } = process.env; const fs = require("fs").promises; const commands = require("./commands"); const axios = require("axios"); -const roleplay = require("./roleplay.json"); +const roleplay = require("./static/roleplay.json"); const bot = new Telegraf(BOT_API_KEY); bot.catch((err) => console.log(err)); @@ -15,12 +15,12 @@ const data = [ "commands_list", "words" ].map(file => - fs.readFile(file + ".txt", "utf-8") + fs.readFile("static/" + file + ".txt", "utf-8") .then(list => list.split("\n"))); Promise.all(data) .then(data => - commands(bot, [...data, roleplay], FEEDBACK_ID, axios)); + commands(bot, [...data, roleplay], FEEDBACK_ID, BOT_API_KEY, UGOKI_ROOT, axios)); bot.launch(); diff --git a/commands/index.js b/commands/index.js index a6864e7..0935d12 100644 --- a/commands/index.js +++ b/commands/index.js @@ -9,8 +9,9 @@ const media_wiki = require("./media_wiki"); const info = require("./info"); const expand = require("./expand"); const roleplay = require("./roleplay"); +const suggest = require("./suggest"); -module.exports = (bot, [ questions, kys, insults, commands_list, words, roleplay_data ], feedback_id, axios) => { +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)())); @@ -63,9 +64,40 @@ module.exports = (bot, [ questions, kys, insults, commands_list, words, roleplay 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'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("donate", (ctx) => ctx.reply("Thanks for considering to donate." + + " To support the development and hosting of Quadnite Bot, you can " + + "donate here: https://liberapay.com/ceda_ei/")); + + 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(roleplay_data[command].forms, roleplay_data[command].gifs)(ctx))); + bot.command(command, + (ctx) => roleplay(getForms(command), getGetGif(command))(ctx) + ) + ); + + bot.command("suggest", (ctx) => suggest(axios, apiToken, ugokiRoot)(ctx)); }; diff --git a/commands/roleplay.js b/commands/roleplay.js index 1c0701c..03a079e 100644 --- a/commands/roleplay.js +++ b/commands/roleplay.js @@ -8,9 +8,8 @@ function joinUsers(users) { } -module.exports = (forms, gifs) => (ctx) => { +module.exports = (forms, getGif) => (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); @@ -39,6 +38,7 @@ module.exports = (forms, gifs) => (ctx) => { reply = forms.none .replace("{}", user); - ctx.replyWithAnimation(gif, {caption: reply}); + getGif() + .then(gif => ctx.replyWithAnimation(gif.data.url, {caption: reply})); }; diff --git a/commands/suggest.js b/commands/suggest.js new file mode 100644 index 0000000..18ac6d9 --- /dev/null +++ b/commands/suggest.js @@ -0,0 +1,84 @@ +const ffmpeg = require("fluent-ffmpeg"); +const fs = require("fs"); +const FormData = require("form-data"); + +function ugokiUpload(axios, ugokiRoot, ctx, category, path) { + + const form = new FormData(); + form.append("file", fs.createReadStream(path)); + return axios.post(`new_suggestion/${category}`, form, + { headers: form.getHeaders(), baseURL: ugokiRoot }) + .then(() => { + + ctx.reply("Suggestion added."); + fs.unlink(path, () => {}); + + }) + .catch((err) => { + + console.error(err); + if (err.response && err.response.status == 404) + ctx.reply("Category doesn't exist"); + else if (err.response && err.response.status == 409) + ctx.reply("Already suggested / added."); + else + ctx.reply("No clue what the hell happened but adding suggestion failed."); + + }); + +} + +module.exports = (axios, apiToken, ugokiRoot) => (ctx) => { + + const category = ctx.message.text.split(" ")[1]; + const reply = ctx.message.reply_to_message; + + if (category && reply && reply.animation) { + + return ctx.telegram.getFile(reply.animation.file_id) + .then(resp => { + + return axios({ + method: "get", + url: `https://api.telegram.org/file/bot${apiToken}/${resp.file_path}`, + responseType: "stream" + }) + .then(async (response) => { + + let stream = response.data; + let path = `data/${resp.file_unique_id}`; + const writer = fs.createWriteStream(path); + if (!resp.file_path.match(/\.gif$/)) { + + await stream.pipe(writer); + stream = ffmpeg(path) + .on("error", function () { + + fs.unlink(path, () => {}); + ctx.reply("Something went wrong processing the gif"); + + + }) + .on("end", function () { + + fs.unlink(path, () => {}); + ugokiUpload(axios, ugokiRoot, ctx, category, path + ".gif"); + + }) + .output(path + ".gif") + .outputFormat("gif") + .run(); + + } else + ugokiUpload(axios, ugokiRoot, category, ctx, path); + + } + ); + + }); + + } else + ctx.reply("Reply to a gif with /suggest [category] " + + "to suggest it to be used for [category]"); + +}; diff --git a/data/.gitkeep b/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/package-lock.json b/package-lock.json index 473ed50..36c4b52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,51 +1,319 @@ { "name": "quadnite-bot", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "quadnite-bot", + "version": "1.0.0", + "license": "GPL-3.0", + "dependencies": { + "axios": "^0.21.0", + "fluent-ffmpeg": "^2.1.2", + "form-data": "^4.0.0", + "telegraf": "^3.27.1" + } + }, + "node_modules/@types/node": { + "version": "10.12.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.26.tgz", + "integrity": "sha512-nMRqS+mL1TOnIJrL6LKJcNZPB8V3eTfRo9FQA2b5gDvrHurC8XbSA86KNe0dShlEL7ReWJv/OU9NL7Z0dnqWTg==" + }, + "node_modules/async": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz", + "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/fluent-ffmpeg": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz", + "integrity": "sha1-yVLeIkD4EuvaCqgAbXd27irPfXQ=", + "dependencies": { + "async": ">=0.2.9", + "which": "^1.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "dependencies": { + "mime-db": "1.49.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/node-fetch": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/sandwich-stream": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sandwich-stream/-/sandwich-stream-2.0.2.tgz", + "integrity": "sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/telegraf": { + "version": "3.27.1", + "integrity": "sha512-RQUnuNAEEWcLhRap81qwGUUqAy1KcvqANnA0G3pzZqFkhMe6LrTk5lVi9tdOaF0Ud/yOx5fdx0rNPYfiB27Z+w==", + "dependencies": { + "@types/node": "^10.1.2", + "debug": "^4.0.1", + "node-fetch": "^2.2.0", + "sandwich-stream": "^2.0.1", + "telegram-typings": "^3.6.0" + }, + "engines": { + "node": ">=6.2.0" + } + }, + "node_modules/telegram-typings": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/telegram-typings/-/telegram-typings-3.6.1.tgz", + "integrity": "sha512-njVv1EAhIZnmQVLocZEADYUyqA1WIXuVcDYlsp+mXua/XB0pxx+PKtMSPeZ/EE4wPWTw9h/hA9ASTT6yQelkiw==" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + } + }, "dependencies": { "@types/node": { "version": "10.12.26", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.26.tgz", "integrity": "sha512-nMRqS+mL1TOnIJrL6LKJcNZPB8V3eTfRo9FQA2b5gDvrHurC8XbSA86KNe0dShlEL7ReWJv/OU9NL7Z0dnqWTg==" }, + "async": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz", + "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "axios": { - "version": "0.18.0", + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" + "follow-redirects": "^1.14.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" } }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "fluent-ffmpeg": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz", + "integrity": "sha1-yVLeIkD4EuvaCqgAbXd27irPfXQ=", + "requires": { + "async": ">=0.2.9", + "which": "^1.1.1" } }, "follow-redirects": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", - "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "requires": { - "debug": "^3.2.6" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" + }, + "mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "requires": { + "mime-db": "1.49.0" + } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node-fetch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", - "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==" + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "requires": { + "whatwg-url": "^5.0.0" + } }, "sandwich-stream": { "version": "2.0.2", @@ -54,28 +322,46 @@ }, "telegraf": { "version": "3.27.1", + "integrity": "sha512-RQUnuNAEEWcLhRap81qwGUUqAy1KcvqANnA0G3pzZqFkhMe6LrTk5lVi9tdOaF0Ud/yOx5fdx0rNPYfiB27Z+w==", "requires": { "@types/node": "^10.1.2", "debug": "^4.0.1", "node-fetch": "^2.2.0", "sandwich-stream": "^2.0.1", "telegram-typings": "^3.6.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - } } }, "telegram-typings": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/telegram-typings/-/telegram-typings-3.6.1.tgz", "integrity": "sha512-njVv1EAhIZnmQVLocZEADYUyqA1WIXuVcDYlsp+mXua/XB0pxx+PKtMSPeZ/EE4wPWTw9h/hA9ASTT6yQelkiw==" + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } } } } diff --git a/package.json b/package.json index ec1eb04..0f68dcf 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { "name": "quadnite-bot", - "version": "1.0.0", + "version": "2.0.0", "description": "A Telegram bot that makes chats in group more fun.", "main": "bot.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "start": "node bot.js" }, "repository": { "type": "git", @@ -22,7 +22,9 @@ }, "homepage": "https://gitlab.com/ceda_ei/Quadnite-Bot#readme", "dependencies": { - "axios": "^0.18.0", + "axios": "^0.21.0", + "fluent-ffmpeg": "^2.1.2", + "form-data": "^4.0.0", "telegraf": "^3.27.1" } } diff --git a/roleplay.json b/roleplay.json deleted file mode 100644 index e37126d..0000000 --- a/roleplay.json +++ /dev/null @@ -1,1150 +0,0 @@ -{ - "angry": { - "gifs": [ - "https://webionite.com/quadnite/angry/0.gif", - "https://webionite.com/quadnite/angry/1.gif", - "https://webionite.com/quadnite/angry/2.gif", - "https://webionite.com/quadnite/angry/3.gif", - "https://webionite.com/quadnite/angry/4.gif", - "https://webionite.com/quadnite/angry/5.gif", - "https://webionite.com/quadnite/angry/6.gif", - "https://webionite.com/quadnite/angry/7.gif", - "https://webionite.com/quadnite/angry/8.gif" - ], - "forms": { - "none": "{} is angry", - "others": "{} is angry at {}", - "reason": "{} is angry because {}", - "both": "{} is angry at {} for {}" - } - }, - "bite": { - "gifs": [ - "https://webionite.com/quadnite/bite/0.gif", - "https://webionite.com/quadnite/bite/1.gif", - "https://webionite.com/quadnite/bite/2.gif", - "https://webionite.com/quadnite/bite/3.gif", - "https://webionite.com/quadnite/bite/4.gif", - "https://webionite.com/quadnite/bite/5.gif", - "https://webionite.com/quadnite/bite/6.gif", - "https://webionite.com/quadnite/bite/7.gif", - "https://webionite.com/quadnite/bite/8.gif" - ], - "forms": { - "none": "{} is biting", - "others": "{} is biting {}", - "reason": "{} is biting because {}", - "both": "{} is biting {} for {}" - } - }, - "blush": { - "gifs": [ - "https://webionite.com/quadnite/blush/0.gif", - "https://webionite.com/quadnite/blush/1.gif", - "https://webionite.com/quadnite/blush/2.gif", - "https://webionite.com/quadnite/blush/3.gif", - "https://webionite.com/quadnite/blush/4.gif", - "https://webionite.com/quadnite/blush/5.gif", - "https://webionite.com/quadnite/blush/6.gif", - "https://webionite.com/quadnite/blush/7.gif", - "https://webionite.com/quadnite/blush/8.gif", - "https://webionite.com/quadnite/blush/9.gif", - "https://webionite.com/quadnite/blush/10.gif", - "https://webionite.com/quadnite/blush/11.gif", - "https://webionite.com/quadnite/blush/12.gif", - "https://webionite.com/quadnite/blush/13.gif" - ], - "forms": { - "none": "{} is blushing", - "others": "{} is blushing at {}", - "reason": "{} is blushing because {}", - "both": "{} is blushing at {} for {}" - } - }, - "bored": { - "gifs": [ - "https://webionite.com/quadnite/bored/0.gif", - "https://webionite.com/quadnite/bored/1.gif", - "https://webionite.com/quadnite/bored/2.gif", - "https://webionite.com/quadnite/bored/3.gif", - "https://webionite.com/quadnite/bored/4.gif" - ], - "forms": { - "none": "{} is bored", - "others": "{}, {} are bored", - "reason": "{} is bored because {}", - "both": "{}, {} are bored because {}" - } - }, - "bonk": { - "gifs": [ - "https://webionite.com/quadnite/bonk/0.gif", - "https://webionite.com/quadnite/bonk/1.gif", - "https://webionite.com/quadnite/bonk/2.gif", - "https://webionite.com/quadnite/bonk/3.gif", - "https://webionite.com/quadnite/bonk/4.gif", - "https://webionite.com/quadnite/bonk/5.gif", - "https://webionite.com/quadnite/bonk/6.gif", - "https://webionite.com/quadnite/bonk/7.gif", - "https://webionite.com/quadnite/bonk/8.gif", - "https://webionite.com/quadnite/bonk/9.gif", - "https://webionite.com/quadnite/bonk/10.gif", - "https://webionite.com/quadnite/bonk/11.gif", - "https://webionite.com/quadnite/bonk/12.gif", - "https://webionite.com/quadnite/bonk/13.gif", - "https://webionite.com/quadnite/bonk/14.gif" - ], - "forms": { - "none": "{} is bonking", - "others": "{} is bonking {}", - "reason": "{} is bonking because {}", - "both": "{} is bonking {} for {}" - } - }, - "boop": { - "gifs": [ - "https://webionite.com/quadnite/boop/0.gif", - "https://webionite.com/quadnite/boop/1.gif", - "https://webionite.com/quadnite/boop/2.gif", - "https://webionite.com/quadnite/boop/3.gif", - "https://webionite.com/quadnite/boop/4.gif", - "https://webionite.com/quadnite/boop/5.gif", - "https://webionite.com/quadnite/boop/6.gif" - ], - "forms": { - "none": "{} is booping", - "others": "{} is booping {}", - "reason": "{} is booping because {}", - "both": "{} is booping {} for {}" - } - }, - "chase": { - "gifs": [ - "https://webionite.com/quadnite/chase/0.gif", - "https://webionite.com/quadnite/chase/1.gif", - "https://webionite.com/quadnite/chase/2.gif", - "https://webionite.com/quadnite/chase/3.gif", - "https://webionite.com/quadnite/chase/4.gif" - ], - "forms": { - "none": "{} is chasing", - "others": "{} is chasing {}", - "reason": "{} is chasing because {}", - "both": "{} is chasing {} for {}" - } - }, - "cheer": { - "gifs": [ - "https://webionite.com/quadnite/cheer/0.gif", - "https://webionite.com/quadnite/cheer/1.gif", - "https://webionite.com/quadnite/cheer/2.gif", - "https://webionite.com/quadnite/cheer/3.gif", - "https://webionite.com/quadnite/cheer/4.gif", - "https://webionite.com/quadnite/cheer/5.gif", - "https://webionite.com/quadnite/cheer/6.gif", - "https://webionite.com/quadnite/cheer/7.gif", - "https://webionite.com/quadnite/cheer/8.gif", - "https://webionite.com/quadnite/cheer/9.gif", - "https://webionite.com/quadnite/cheer/10.gif" - ], - "forms": { - "none": "{} is cheering", - "others": "{} is cheering for {}", - "reason": "{} is cheering because {}", - "both": "{} is cheering for {} because {}" - } - }, - "cringe": { - "gifs": [ - "https://webionite.com/quadnite/cringe/0.gif", - "https://webionite.com/quadnite/cringe/1.gif", - "https://webionite.com/quadnite/cringe/2.gif", - "https://webionite.com/quadnite/cringe/3.gif", - "https://webionite.com/quadnite/cringe/4.gif", - "https://webionite.com/quadnite/cringe/5.gif", - "https://webionite.com/quadnite/cringe/6.gif", - "https://webionite.com/quadnite/cringe/7.gif", - "https://webionite.com/quadnite/cringe/8.gif", - "https://webionite.com/quadnite/cringe/9.gif", - "https://webionite.com/quadnite/cringe/10.gif" - ], - "forms": { - "none": "{} is cringing", - "others": "{} is cringing at {}", - "reason": "{} is cringing because {}", - "both": "{} is cringing at {} for {}" - } - }, - "cry": { - "gifs": [ - "https://webionite.com/quadnite/cry/0.gif", - "https://webionite.com/quadnite/cry/1.gif", - "https://webionite.com/quadnite/cry/2.gif", - "https://webionite.com/quadnite/cry/3.gif", - "https://webionite.com/quadnite/cry/4.gif", - "https://webionite.com/quadnite/cry/5.gif", - "https://webionite.com/quadnite/cry/6.gif", - "https://webionite.com/quadnite/cry/7.gif", - "https://webionite.com/quadnite/cry/8.gif", - "https://webionite.com/quadnite/cry/9.gif", - "https://webionite.com/quadnite/cry/10.gif", - "https://webionite.com/quadnite/cry/11.gif", - "https://webionite.com/quadnite/cry/12.gif", - "https://webionite.com/quadnite/cry/13.gif", - "https://webionite.com/quadnite/cry/14.gif" - ], - "forms": { - "none": "{} is crying", - "others": "{} is crying at {}", - "reason": "{} is crying because {}", - "both": "{} is crying at {} for {}" - } - }, - "cuddle": { - "gifs": [ - "https://webionite.com/quadnite/cuddle/0.gif", - "https://webionite.com/quadnite/cuddle/1.gif", - "https://webionite.com/quadnite/cuddle/2.gif", - "https://webionite.com/quadnite/cuddle/3.gif", - "https://webionite.com/quadnite/cuddle/4.gif", - "https://webionite.com/quadnite/cuddle/5.gif", - "https://webionite.com/quadnite/cuddle/6.gif", - "https://webionite.com/quadnite/cuddle/7.gif", - "https://webionite.com/quadnite/cuddle/8.gif", - "https://webionite.com/quadnite/cuddle/9.gif" - ], - "forms": { - "none": "{} is cuddling", - "others": "{} is cuddling with {}", - "reason": "{} is cuddling because {}", - "both": "{} is cuddling with {} for {}" - } - }, - "dab": { - "gifs": [ - "https://webionite.com/quadnite/dab/0.gif", - "https://webionite.com/quadnite/dab/1.gif", - "https://webionite.com/quadnite/dab/2.gif", - "https://webionite.com/quadnite/dab/3.gif", - "https://webionite.com/quadnite/dab/4.gif" - ], - "forms": { - "none": "{} is dabing", - "others": "{} is dabing at {}", - "reason": "{} is dabing because {}", - "both": "{} is dabing at {} for {}" - } - }, - "dance": { - "gifs": [ - "https://webionite.com/quadnite/dance/0.gif", - "https://webionite.com/quadnite/dance/1.gif", - "https://webionite.com/quadnite/dance/2.gif", - "https://webionite.com/quadnite/dance/3.gif", - "https://webionite.com/quadnite/dance/4.gif", - "https://webionite.com/quadnite/dance/5.gif", - "https://webionite.com/quadnite/dance/6.gif", - "https://webionite.com/quadnite/dance/7.gif", - "https://webionite.com/quadnite/dance/8.gif", - "https://webionite.com/quadnite/dance/9.gif", - "https://webionite.com/quadnite/dance/10.gif", - "https://webionite.com/quadnite/dance/11.gif", - "https://webionite.com/quadnite/dance/12.gif", - "https://webionite.com/quadnite/dance/13.gif", - "https://webionite.com/quadnite/dance/14.gif", - "https://webionite.com/quadnite/dance/15.gif" - ], - "forms": { - "none": "{} is dancing", - "others": "{} is dancing with {}", - "reason": "{} is dancing because {}", - "both": "{} is dancing with {} for {}" - } - }, - "die": { - "gifs": [ - "https://webionite.com/quadnite/die/0.gif", - "https://webionite.com/quadnite/die/1.gif", - "https://webionite.com/quadnite/die/2.gif", - "https://webionite.com/quadnite/die/3.gif", - "https://webionite.com/quadnite/die/4.gif" - ], - "forms": { - "none": "{} is dying", - "others": "{} is dying with {}", - "reason": "{} is dying because {}", - "both": "{} is dying with {} because {}" - } - }, - "eat": { - "gifs": [ - "https://webionite.com/quadnite/eat/0.gif", - "https://webionite.com/quadnite/eat/1.gif", - "https://webionite.com/quadnite/eat/2.gif", - "https://webionite.com/quadnite/eat/3.gif", - "https://webionite.com/quadnite/eat/4.gif", - "https://webionite.com/quadnite/eat/5.gif", - "https://webionite.com/quadnite/eat/6.gif", - "https://webionite.com/quadnite/eat/7.gif", - "https://webionite.com/quadnite/eat/8.gif", - "https://webionite.com/quadnite/eat/9.gif", - "https://webionite.com/quadnite/eat/10.gif" - ], - "forms": { - "none": "{} is eating", - "others": "{} is eating with {}", - "reason": "{} is eating because {}", - "both": "{} is eating with {} for {}" - } - }, - "facepalm": { - "gifs": [ - "https://webionite.com/quadnite/facepalm/0.gif", - "https://webionite.com/quadnite/facepalm/1.gif", - "https://webionite.com/quadnite/facepalm/2.gif", - "https://webionite.com/quadnite/facepalm/3.gif", - "https://webionite.com/quadnite/facepalm/4.gif", - "https://webionite.com/quadnite/facepalm/5.gif", - "https://webionite.com/quadnite/facepalm/6.gif", - "https://webionite.com/quadnite/facepalm/7.gif", - "https://webionite.com/quadnite/facepalm/8.gif" - ], - "forms": { - "none": "{} is facepalming", - "others": "{} is facepalming at {}", - "reason": "{} is facepalming because {}", - "both": "{} is facepalming at {} for {}" - } - }, - "feed": { - "gifs": [ - "https://webionite.com/quadnite/feed/0.gif", - "https://webionite.com/quadnite/feed/1.gif", - "https://webionite.com/quadnite/feed/2.gif", - "https://webionite.com/quadnite/feed/3.gif", - "https://webionite.com/quadnite/feed/4.gif", - "https://webionite.com/quadnite/feed/5.gif", - "https://webionite.com/quadnite/feed/6.gif", - "https://webionite.com/quadnite/feed/7.gif", - "https://webionite.com/quadnite/feed/8.gif", - "https://webionite.com/quadnite/feed/9.gif", - "https://webionite.com/quadnite/feed/10.gif" - ], - "forms": { - "none": "{} is eating", - "others": "{} is feeding {}", - "reason": "{} is eating because {}", - "both": "{} is feeding {} for {}" - } - }, - "glomp": { - "gifs": [ - "https://webionite.com/quadnite/glomp/0.gif", - "https://webionite.com/quadnite/glomp/1.gif", - "https://webionite.com/quadnite/glomp/2.gif", - "https://webionite.com/quadnite/glomp/3.gif", - "https://webionite.com/quadnite/glomp/4.gif", - "https://webionite.com/quadnite/glomp/5.gif", - "https://webionite.com/quadnite/glomp/6.gif", - "https://webionite.com/quadnite/glomp/7.gif", - "https://webionite.com/quadnite/glomp/8.gif", - "https://webionite.com/quadnite/glomp/9.gif", - "https://webionite.com/quadnite/glomp/10.gif", - "https://webionite.com/quadnite/glomp/11.gif", - "https://webionite.com/quadnite/glomp/12.gif", - "https://webionite.com/quadnite/glomp/13.gif" - ], - "forms": { - "none": "{} is glomping", - "others": "{} is glomping {}", - "reason": "{} is glomping because {}", - "both": "{} is glomping {} for {}" - } - }, - "happy": { - "gifs": [ - "https://webionite.com/quadnite/happy/0.gif", - "https://webionite.com/quadnite/happy/1.gif", - "https://webionite.com/quadnite/happy/2.gif", - "https://webionite.com/quadnite/happy/3.gif", - "https://webionite.com/quadnite/happy/4.gif" - ], - "forms": { - "none": "{} is happy", - "others": "{} is happy with {}", - "reason": "{} is happy because {}", - "both": "{} is happy with {} for {}" - } - }, - "hate": { - "gifs": [ - "https://webionite.com/quadnite/hate/0.gif", - "https://webionite.com/quadnite/hate/1.gif", - "https://webionite.com/quadnite/hate/2.gif", - "https://webionite.com/quadnite/hate/3.gif", - "https://webionite.com/quadnite/hate/4.gif" - ], - "forms": { - "none": "{} is hating", - "others": "{} is hating {}", - "reason": "{} is hating because {}", - "both": "{} is hating {} for {}" - } - }, - "holdhands": { - "gifs": [ - "https://webionite.com/quadnite/holdhands/0.gif", - "https://webionite.com/quadnite/holdhands/1.gif", - "https://webionite.com/quadnite/holdhands/2.gif", - "https://webionite.com/quadnite/holdhands/3.gif", - "https://webionite.com/quadnite/holdhands/4.gif", - "https://webionite.com/quadnite/holdhands/5.gif", - "https://webionite.com/quadnite/holdhands/6.gif", - "https://webionite.com/quadnite/holdhands/7.gif", - "https://webionite.com/quadnite/holdhands/8.gif", - "https://webionite.com/quadnite/holdhands/9.gif" - ], - "forms": { - "none": "{} is holding hands", - "others": "{} is holding hands with {}", - "reason": "{} is holding hands because {}", - "both": "{} is holding hands with {} for {}" - } - }, - "hide": { - "gifs": [ - "https://webionite.com/quadnite/hide/0.gif", - "https://webionite.com/quadnite/hide/1.gif", - "https://webionite.com/quadnite/hide/2.gif", - "https://webionite.com/quadnite/hide/3.gif", - "https://webionite.com/quadnite/hide/4.gif", - "https://webionite.com/quadnite/hide/5.gif", - "https://webionite.com/quadnite/hide/6.gif", - "https://webionite.com/quadnite/hide/7.gif", - "https://webionite.com/quadnite/hide/8.gif", - "https://webionite.com/quadnite/hide/9.gif", - "https://webionite.com/quadnite/hide/10.gif" - ], - "forms": { - "none": "{} is hiding", - "others": "{} is hiding from {}", - "reason": "{} is hiding because {}", - "both": "{} is hiding from {} for {}" - } - }, - "highfive": { - "gifs": [ - "https://webionite.com/quadnite/highfive/0.gif", - "https://webionite.com/quadnite/highfive/1.gif", - "https://webionite.com/quadnite/highfive/2.gif", - "https://webionite.com/quadnite/highfive/3.gif", - "https://webionite.com/quadnite/highfive/4.gif", - "https://webionite.com/quadnite/highfive/5.gif", - "https://webionite.com/quadnite/highfive/6.gif", - "https://webionite.com/quadnite/highfive/7.gif", - "https://webionite.com/quadnite/highfive/8.gif", - "https://webionite.com/quadnite/highfive/9.gif" - ], - "forms": { - "none": "{} is high fiving", - "others": "{} is high fiving with {}", - "reason": "{} is high fiving because {}", - "both": "{} is high fiving with {} for {}" - } - }, - "hug": { - "gifs": [ - "https://webionite.com/quadnite/hug/0.gif", - "https://webionite.com/quadnite/hug/1.gif", - "https://webionite.com/quadnite/hug/2.gif", - "https://webionite.com/quadnite/hug/3.gif", - "https://webionite.com/quadnite/hug/4.gif", - "https://webionite.com/quadnite/hug/5.gif", - "https://webionite.com/quadnite/hug/6.gif", - "https://webionite.com/quadnite/hug/7.gif", - "https://webionite.com/quadnite/hug/8.gif", - "https://webionite.com/quadnite/hug/9.gif", - "https://webionite.com/quadnite/hug/10.gif", - "https://webionite.com/quadnite/hug/11.gif", - "https://webionite.com/quadnite/hug/12.gif", - "https://webionite.com/quadnite/hug/13.gif", - "https://webionite.com/quadnite/hug/14.gif", - "https://webionite.com/quadnite/hug/15.gif", - "https://webionite.com/quadnite/hug/16.gif", - "https://webionite.com/quadnite/hug/17.gif", - "https://webionite.com/quadnite/hug/18.gif", - "https://webionite.com/quadnite/hug/19.gif", - "https://webionite.com/quadnite/hug/20.gif", - "https://webionite.com/quadnite/hug/21.gif", - "https://webionite.com/quadnite/hug/22.gif", - "https://webionite.com/quadnite/hug/23.gif", - "https://webionite.com/quadnite/hug/24.gif", - "https://webionite.com/quadnite/hug/25.gif", - "https://webionite.com/quadnite/hug/26.gif", - "https://webionite.com/quadnite/hug/27.gif", - "https://webionite.com/quadnite/hug/28.gif" - ], - "forms": { - "none": "{} is hugging", - "others": "{} is hugging {}", - "reason": "{} is hugging because {}", - "both": "{} is hugging at {} for {}" - } - }, - "kill": { - "gifs": [ - "https://webionite.com/quadnite/kill/0.gif", - "https://webionite.com/quadnite/kill/1.gif", - "https://webionite.com/quadnite/kill/2.gif", - "https://webionite.com/quadnite/kill/3.gif", - "https://webionite.com/quadnite/kill/4.gif", - "https://webionite.com/quadnite/kill/5.gif", - "https://webionite.com/quadnite/kill/6.gif", - "https://webionite.com/quadnite/kill/7.gif", - "https://webionite.com/quadnite/kill/8.gif" - ], - "forms": { - "none": "{} is killing", - "others": "{} is killing {}", - "reason": "{} is killing because {}", - "both": "{} is killing {} for {}" - } - }, - "kiss": { - "gifs": [ - "https://webionite.com/quadnite/kiss/0.gif", - "https://webionite.com/quadnite/kiss/1.gif", - "https://webionite.com/quadnite/kiss/2.gif", - "https://webionite.com/quadnite/kiss/3.gif", - "https://webionite.com/quadnite/kiss/4.gif", - "https://webionite.com/quadnite/kiss/5.gif", - "https://webionite.com/quadnite/kiss/6.gif", - "https://webionite.com/quadnite/kiss/7.gif", - "https://webionite.com/quadnite/kiss/8.gif", - "https://webionite.com/quadnite/kiss/9.gif", - "https://webionite.com/quadnite/kiss/10.gif", - "https://webionite.com/quadnite/kiss/11.gif", - "https://webionite.com/quadnite/kiss/12.gif", - "https://webionite.com/quadnite/kiss/13.gif", - "https://webionite.com/quadnite/kiss/14.gif", - "https://webionite.com/quadnite/kiss/15.gif" - ], - "forms": { - "none": "{} is kissing", - "others": "{} is kissing {}", - "reason": "{} is kissing because {}", - "both": "{} is kissing {} for {}" - } - }, - "laugh": { - "gifs": [ - "https://webionite.com/quadnite/laugh/0.gif", - "https://webionite.com/quadnite/laugh/1.gif", - "https://webionite.com/quadnite/laugh/2.gif", - "https://webionite.com/quadnite/laugh/3.gif", - "https://webionite.com/quadnite/laugh/4.gif", - "https://webionite.com/quadnite/laugh/5.gif", - "https://webionite.com/quadnite/laugh/6.gif", - "https://webionite.com/quadnite/laugh/7.gif", - "https://webionite.com/quadnite/laugh/8.gif" - ], - "forms": { - "none": "{} is laughing", - "others": "{} is laughing with {}", - "reason": "{} is laughing because {}", - "both": "{} is laughing with {} for {}" - } - }, - "lick": { - "gifs": [ - "https://webionite.com/quadnite/lick/0.gif", - "https://webionite.com/quadnite/lick/1.gif", - "https://webionite.com/quadnite/lick/2.gif", - "https://webionite.com/quadnite/lick/3.gif", - "https://webionite.com/quadnite/lick/4.gif", - "https://webionite.com/quadnite/lick/5.gif", - "https://webionite.com/quadnite/lick/6.gif", - "https://webionite.com/quadnite/lick/7.gif", - "https://webionite.com/quadnite/lick/8.gif", - "https://webionite.com/quadnite/lick/9.gif", - "https://webionite.com/quadnite/lick/10.gif" - ], - "forms": { - "none": "{} is licking", - "others": "{} is licking {}", - "reason": "{} is licking {}", - "both": "{} is licking {} for {}" - } - }, - "love": { - "gifs": [ - "https://webionite.com/quadnite/love/0.gif", - "https://webionite.com/quadnite/love/1.gif", - "https://webionite.com/quadnite/love/2.gif", - "https://webionite.com/quadnite/love/3.gif", - "https://webionite.com/quadnite/love/4.gif", - "https://webionite.com/quadnite/love/5.gif", - "https://webionite.com/quadnite/love/6.gif", - "https://webionite.com/quadnite/love/7.gif", - "https://webionite.com/quadnite/love/8.gif", - "https://webionite.com/quadnite/love/9.gif" - ], - "forms": { - "none": "{} is loving", - "others": "{} is loving {}", - "reason": "{} is loving because {}", - "both": "{} is loving {} for {}" - } - }, - "lurk": { - "gifs": [ - "https://webionite.com/quadnite/lurk/0.gif", - "https://webionite.com/quadnite/lurk/1.gif", - "https://webionite.com/quadnite/lurk/2.gif", - "https://webionite.com/quadnite/lurk/3.gif", - "https://webionite.com/quadnite/lurk/4.gif", - "https://webionite.com/quadnite/lurk/5.gif", - "https://webionite.com/quadnite/lurk/6.gif", - "https://webionite.com/quadnite/lurk/7.gif", - "https://webionite.com/quadnite/lurk/8.gif" - ], - "forms": { - "none": "{} is lurking", - "others": "{} is lurking from {}", - "reason": "{} is lurking because {}", - "both": "{} is lurking from {} for {}" - } - }, - "nervous": { - "gifs": [ - "https://webionite.com/quadnite/nervous/0.gif", - "https://webionite.com/quadnite/nervous/1.gif", - "https://webionite.com/quadnite/nervous/2.gif", - "https://webionite.com/quadnite/nervous/3.gif", - "https://webionite.com/quadnite/nervous/4.gif", - "https://webionite.com/quadnite/nervous/5.gif", - "https://webionite.com/quadnite/nervous/6.gif", - "https://webionite.com/quadnite/nervous/7.gif", - "https://webionite.com/quadnite/nervous/8.gif" - ], - "forms": { - "none": "{} is nervous", - "others": "{} is nervous with {}", - "reason": "{} is nervous because {}", - "both": "{} is nervous with {} for {}" - } - }, - "no": { - "gifs": [ - "https://webionite.com/quadnite/no/0.gif", - "https://webionite.com/quadnite/no/1.gif", - "https://webionite.com/quadnite/no/2.gif", - "https://webionite.com/quadnite/no/3.gif", - "https://webionite.com/quadnite/no/4.gif", - "https://webionite.com/quadnite/no/5.gif", - "https://webionite.com/quadnite/no/6.gif", - "https://webionite.com/quadnite/no/7.gif", - "https://webionite.com/quadnite/no/8.gif", - "https://webionite.com/quadnite/no/9.gif", - "https://webionite.com/quadnite/no/10.gif", - "https://webionite.com/quadnite/no/11.gif", - "https://webionite.com/quadnite/no/12.gif", - "https://webionite.com/quadnite/no/13.gif" - ], - "forms": { - "none": "{} is saying no", - "others": "{} is saying no to {}", - "reason": "{} is saying no because {}", - "both": "{} is saying no to {} for {}" - } - }, - "nom": { - "gifs": [ - "https://webionite.com/quadnite/nom/0.gif", - "https://webionite.com/quadnite/nom/1.gif", - "https://webionite.com/quadnite/nom/2.gif", - "https://webionite.com/quadnite/nom/3.gif", - "https://webionite.com/quadnite/nom/4.gif", - "https://webionite.com/quadnite/nom/5.gif" - ], - "forms": { - "none": "{} is noming", - "others": "{} is noming {}", - "reason": "{} is noming because {}", - "both": "{} is noming {} for {}" - } - }, - "nuzzle": { - "gifs": [ - "https://webionite.com/quadnite/nuzzle/0.gif", - "https://webionite.com/quadnite/nuzzle/1.gif", - "https://webionite.com/quadnite/nuzzle/2.gif", - "https://webionite.com/quadnite/nuzzle/3.gif", - "https://webionite.com/quadnite/nuzzle/4.gif", - "https://webionite.com/quadnite/nuzzle/5.gif", - "https://webionite.com/quadnite/nuzzle/6.gif", - "https://webionite.com/quadnite/nuzzle/7.gif", - "https://webionite.com/quadnite/nuzzle/8.gif", - "https://webionite.com/quadnite/nuzzle/9.gif" - ], - "forms": { - "none": "{} is nuzzling", - "others": "{} is nuzzling {}", - "reason": "{} is nuzzling because {}", - "both": "{} is nuzzling {} for {}" - } - }, - "panic": { - "gifs": [ - "https://webionite.com/quadnite/panic/0.gif", - "https://webionite.com/quadnite/panic/1.gif", - "https://webionite.com/quadnite/panic/2.gif", - "https://webionite.com/quadnite/panic/3.gif", - "https://webionite.com/quadnite/panic/4.gif", - "https://webionite.com/quadnite/panic/5.gif", - "https://webionite.com/quadnite/panic/6.gif", - "https://webionite.com/quadnite/panic/7.gif", - "https://webionite.com/quadnite/panic/8.gif" - ], - "forms": { - "none": "{} is panicking", - "others": "{} is panicking at {}", - "reason": "{} is panicking because {}", - "both": "{} is panicking at {} for {}" - } - }, - "pat": { - "gifs": [ - "https://webionite.com/quadnite/pat/0.gif", - "https://webionite.com/quadnite/pat/1.gif", - "https://webionite.com/quadnite/pat/2.gif", - "https://webionite.com/quadnite/pat/3.gif", - "https://webionite.com/quadnite/pat/4.gif", - "https://webionite.com/quadnite/pat/5.gif", - "https://webionite.com/quadnite/pat/6.gif" - ], - "forms": { - "none": "{} is patting", - "others": "{} is patting {}", - "reason": "{} is patting because {}", - "both": "{} is patting {} for {}" - } - }, - "peck": { - "gifs": [ - "https://webionite.com/quadnite/peck/0.gif", - "https://webionite.com/quadnite/peck/1.gif", - "https://webionite.com/quadnite/peck/2.gif", - "https://webionite.com/quadnite/peck/3.gif", - "https://webionite.com/quadnite/peck/4.gif", - "https://webionite.com/quadnite/peck/5.gif", - "https://webionite.com/quadnite/peck/6.gif", - "https://webionite.com/quadnite/peck/7.gif", - "https://webionite.com/quadnite/peck/8.gif", - "https://webionite.com/quadnite/peck/9.gif" - ], - "forms": { - "none": "{} is pecking", - "others": "{} is pecking {}", - "reason": "{} is pecking because {}", - "both": "{} is pecking {} for {}" - } - }, - "poke": { - "gifs": [ - "https://webionite.com/quadnite/poke/0.gif", - "https://webionite.com/quadnite/poke/1.gif", - "https://webionite.com/quadnite/poke/2.gif", - "https://webionite.com/quadnite/poke/3.gif", - "https://webionite.com/quadnite/poke/4.gif", - "https://webionite.com/quadnite/poke/5.gif", - "https://webionite.com/quadnite/poke/6.gif", - "https://webionite.com/quadnite/poke/7.gif", - "https://webionite.com/quadnite/poke/8.gif", - "https://webionite.com/quadnite/poke/9.gif", - "https://webionite.com/quadnite/poke/10.gif", - "https://webionite.com/quadnite/poke/11.gif" - ], - "forms": { - "none": "{} is poking", - "others": "{} is poking {}", - "reason": "{} is poking because {}", - "both": "{} is poking {} for {}" - } - }, - "pout": { - "gifs": [ - "https://webionite.com/quadnite/pout/0.gif", - "https://webionite.com/quadnite/pout/1.gif", - "https://webionite.com/quadnite/pout/2.gif", - "https://webionite.com/quadnite/pout/3.gif", - "https://webionite.com/quadnite/pout/4.gif", - "https://webionite.com/quadnite/pout/5.gif" - ], - "forms": { - "none": "{} is pouting", - "others": "{} is pouting at {}", - "reason": "{} is pouting because {}", - "both": "{} is pouting at {} for {}" - } - }, - "run": { - "gifs": [ - "https://webionite.com/quadnite/run/0.gif", - "https://webionite.com/quadnite/run/1.gif", - "https://webionite.com/quadnite/run/2.gif", - "https://webionite.com/quadnite/run/3.gif", - "https://webionite.com/quadnite/run/4.gif", - "https://webionite.com/quadnite/run/5.gif", - "https://webionite.com/quadnite/run/6.gif", - "https://webionite.com/quadnite/run/7.gif", - "https://webionite.com/quadnite/run/8.gif", - "https://webionite.com/quadnite/run/9.gif", - "https://webionite.com/quadnite/run/10.gif", - "https://webionite.com/quadnite/run/11.gif", - "https://webionite.com/quadnite/run/12.gif", - "https://webionite.com/quadnite/run/13.gif", - "https://webionite.com/quadnite/run/14.gif" - ], - "forms": { - "none": "{} is running", - "others": "{} is running from {}", - "reason": "{} is running because {}", - "both": "{} is running from {} for {}" - } - }, - "shoot": { - "gifs": [ - "https://webionite.com/quadnite/shoot/0.gif", - "https://webionite.com/quadnite/shoot/1.gif", - "https://webionite.com/quadnite/shoot/2.gif", - "https://webionite.com/quadnite/shoot/3.gif", - "https://webionite.com/quadnite/shoot/4.gif", - "https://webionite.com/quadnite/shoot/5.gif" - ], - "forms": { - "none": "{} is shooting", - "others": "{} is shooting {}", - "reason": "{} is shooting because {}", - "both": "{} is shooting {} for {}" - } - }, - "shrug": { - "gifs": [ - "https://webionite.com/quadnite/shrug/0.gif", - "https://webionite.com/quadnite/shrug/1.gif", - "https://webionite.com/quadnite/shrug/2.gif", - "https://webionite.com/quadnite/shrug/3.gif", - "https://webionite.com/quadnite/shrug/4.gif", - "https://webionite.com/quadnite/shrug/5.gif", - "https://webionite.com/quadnite/shrug/6.gif", - "https://webionite.com/quadnite/shrug/7.gif", - "https://webionite.com/quadnite/shrug/8.gif", - "https://webionite.com/quadnite/shrug/9.gif", - "https://webionite.com/quadnite/shrug/10.gif", - "https://webionite.com/quadnite/shrug/11.gif", - "https://webionite.com/quadnite/shrug/12.gif" - ], - "forms": { - "none": "{} is shrugging", - "others": "{} is shrugging at {}", - "reason": "{} is shrugging because {}", - "both": "{} is shrugging at {} for {}" - } - }, - "sip": { - "gifs": [ - "https://webionite.com/quadnite/sip/0.gif", - "https://webionite.com/quadnite/sip/1.gif", - "https://webionite.com/quadnite/sip/2.gif", - "https://webionite.com/quadnite/sip/3.gif", - "https://webionite.com/quadnite/sip/4.gif", - "https://webionite.com/quadnite/sip/5.gif", - "https://webionite.com/quadnite/sip/6.gif", - "https://webionite.com/quadnite/sip/7.gif", - "https://webionite.com/quadnite/sip/8.gif", - "https://webionite.com/quadnite/sip/9.gif" - ], - "forms": { - "none": "{} is sipping", - "others": "{} is sipping with {}", - "reason": "{} is sipping because {}", - "both": "{} is sipping with {} for {}" - } - }, - "slap": { - "gifs": [ - "https://webionite.com/quadnite/slap/0.gif", - "https://webionite.com/quadnite/slap/1.gif", - "https://webionite.com/quadnite/slap/2.gif", - "https://webionite.com/quadnite/slap/3.gif", - "https://webionite.com/quadnite/slap/4.gif", - "https://webionite.com/quadnite/slap/5.gif", - "https://webionite.com/quadnite/slap/6.gif", - "https://webionite.com/quadnite/slap/7.gif", - "https://webionite.com/quadnite/slap/8.gif", - "https://webionite.com/quadnite/slap/9.gif", - "https://webionite.com/quadnite/slap/10.gif", - "https://webionite.com/quadnite/slap/11.gif" - ], - "forms": { - "none": "{} is slapping", - "others": "{} is slapping {}", - "reason": "{} is slapping because {}", - "both": "{} is slapping {} for {}" - } - }, - "sleep": { - "gifs": [ - "https://webionite.com/quadnite/sleep/0.gif", - "https://webionite.com/quadnite/sleep/1.gif", - "https://webionite.com/quadnite/sleep/2.gif", - "https://webionite.com/quadnite/sleep/3.gif", - "https://webionite.com/quadnite/sleep/4.gif", - "https://webionite.com/quadnite/sleep/5.gif", - "https://webionite.com/quadnite/sleep/6.gif", - "https://webionite.com/quadnite/sleep/7.gif", - "https://webionite.com/quadnite/sleep/8.gif", - "https://webionite.com/quadnite/sleep/9.gif", - "https://webionite.com/quadnite/sleep/10.gif", - "https://webionite.com/quadnite/sleep/11.gif", - "https://webionite.com/quadnite/sleep/12.gif", - "https://webionite.com/quadnite/sleep/13.gif" - ], - "forms": { - "none": "{} is sleeping", - "others": "{} is sleeping with {}", - "reason": "{} is sleeping because {}", - "both": "{} is sleeping {} for {}" - } - }, - "snuggle": { - "gifs": [ - "https://webionite.com/quadnite/snuggle/0.gif", - "https://webionite.com/quadnite/snuggle/1.gif", - "https://webionite.com/quadnite/snuggle/2.gif", - "https://webionite.com/quadnite/snuggle/3.gif", - "https://webionite.com/quadnite/snuggle/4.gif", - "https://webionite.com/quadnite/snuggle/5.gif", - "https://webionite.com/quadnite/snuggle/6.gif", - "https://webionite.com/quadnite/snuggle/7.gif" - ], - "forms": { - "none": "{} is snuggling", - "others": "{} is snuggling {}", - "reason": "{} is snuggling because {}", - "both": "{} is snuggling {} for {}" - } - }, - "stab": { - "gifs": [ - "https://webionite.com/quadnite/stab/0.gif", - "https://webionite.com/quadnite/stab/1.gif", - "https://webionite.com/quadnite/stab/2.gif", - "https://webionite.com/quadnite/stab/3.gif", - "https://webionite.com/quadnite/stab/4.gif" - ], - "forms": { - "none": "{} is stabbing", - "others": "{} is stabbing {}", - "reason": "{} is stabbing because {}", - "both": "{} is stabbing {} for {}" - } - }, - "tease": { - "gifs": [ - "https://webionite.com/quadnite/tease/0.gif", - "https://webionite.com/quadnite/tease/1.gif", - "https://webionite.com/quadnite/tease/2.gif", - "https://webionite.com/quadnite/tease/3.gif", - "https://webionite.com/quadnite/tease/4.gif", - "https://webionite.com/quadnite/tease/5.gif", - "https://webionite.com/quadnite/tease/6.gif", - "https://webionite.com/quadnite/tease/7.gif", - "https://webionite.com/quadnite/tease/8.gif" - ], - "forms": { - "none": "{} is teasing", - "others": "{} is teasing {}", - "reason": "{} is teasing because {}", - "both": "{} is teasing {} for {}" - } - }, - "think": { - "gifs": [ - "https://webionite.com/quadnite/think/0.gif", - "https://webionite.com/quadnite/think/1.gif", - "https://webionite.com/quadnite/think/2.gif", - "https://webionite.com/quadnite/think/3.gif", - "https://webionite.com/quadnite/think/4.gif", - "https://webionite.com/quadnite/think/5.gif", - "https://webionite.com/quadnite/think/6.gif", - "https://webionite.com/quadnite/think/7.gif" - ], - "forms": { - "none": "{} is thinking", - "others": "{} is thinking with {}", - "reason": "{} is thinking because {}", - "both": "{} is thinking with {} for {}" - } - }, - "thumbsup": { - "gifs": [ - "https://webionite.com/quadnite/thumbsup/0.gif", - "https://webionite.com/quadnite/thumbsup/1.gif", - "https://webionite.com/quadnite/thumbsup/2.gif", - "https://webionite.com/quadnite/thumbsup/3.gif", - "https://webionite.com/quadnite/thumbsup/4.gif", - "https://webionite.com/quadnite/thumbsup/5.gif", - "https://webionite.com/quadnite/thumbsup/6.gif" - ], - "forms": { - "none": "{} is giving a thumbs up", - "others": "{} is giving a thumbs up to {}", - "reason": "{} is giving a thumbs up because {}", - "both": "{} is giving a thumbs up to {} for {}" - } - }, - "tickle": { - "gifs": [ - "https://webionite.com/quadnite/tickle/0.gif", - "https://webionite.com/quadnite/tickle/1.gif", - "https://webionite.com/quadnite/tickle/2.gif", - "https://webionite.com/quadnite/tickle/3.gif", - "https://webionite.com/quadnite/tickle/4.gif", - "https://webionite.com/quadnite/tickle/5.gif", - "https://webionite.com/quadnite/tickle/6.gif" - ], - "forms": { - "none": "{} is tickling", - "others": "{} is tickling {}", - "reason": "{} is tickling because {}", - "both": "{} is tickling {} for {}" - } - }, - "triggered": { - "gifs": [ - "https://webionite.com/quadnite/triggered/0.gif", - "https://webionite.com/quadnite/triggered/1.gif", - "https://webionite.com/quadnite/triggered/2.gif", - "https://webionite.com/quadnite/triggered/3.gif", - "https://webionite.com/quadnite/triggered/4.gif", - "https://webionite.com/quadnite/triggered/5.gif", - "https://webionite.com/quadnite/triggered/6.gif", - "https://webionite.com/quadnite/triggered/7.gif" - ], - "forms": { - "none": "{} is triggered", - "others": "{} is triggered by {}", - "reason": "{} is triggered because {}", - "both": "{} is triggered by {} because {}" - } - }, - "twerk": { - "gifs": [ - "https://webionite.com/quadnite/twerk/0.gif", - "https://webionite.com/quadnite/twerk/1.gif", - "https://webionite.com/quadnite/twerk/2.gif", - "https://webionite.com/quadnite/twerk/3.gif", - "https://webionite.com/quadnite/twerk/4.gif", - "https://webionite.com/quadnite/twerk/5.gif", - "https://webionite.com/quadnite/twerk/6.gif", - "https://webionite.com/quadnite/twerk/7.gif", - "https://webionite.com/quadnite/twerk/8.gif", - "https://webionite.com/quadnite/twerk/9.gif", - "https://webionite.com/quadnite/twerk/10.gif", - "https://webionite.com/quadnite/twerk/11.gif", - "https://webionite.com/quadnite/twerk/12.gif", - "https://webionite.com/quadnite/twerk/13.gif", - "https://webionite.com/quadnite/twerk/14.gif", - "https://webionite.com/quadnite/twerk/15.gif", - "https://webionite.com/quadnite/twerk/16.gif", - "https://webionite.com/quadnite/twerk/17.gif", - "https://webionite.com/quadnite/twerk/18.gif", - "https://webionite.com/quadnite/twerk/19.gif" - ], - "forms": { - "none": "{} is twerking", - "others": "{} is twerking with {}", - "reason": "{} is twerking because {}", - "both": "{} is twerking with {} because {}" - } - }, - "wag": { - "gifs": [ - "https://webionite.com/quadnite/wag/0.gif", - "https://webionite.com/quadnite/wag/1.gif", - "https://webionite.com/quadnite/wag/2.gif", - "https://webionite.com/quadnite/wag/3.gif", - "https://webionite.com/quadnite/wag/4.gif", - "https://webionite.com/quadnite/wag/5.gif", - "https://webionite.com/quadnite/wag/6.gif" - ], - "forms": { - "none": "{} is wagging", - "others": "{} is wagging at {}", - "reason": "{} is wagging because {}", - "both": "{} is wagging at {} for {}" - } - }, - "wave": { - "gifs": [ - "https://webionite.com/quadnite/wave/0.gif", - "https://webionite.com/quadnite/wave/1.gif", - "https://webionite.com/quadnite/wave/2.gif", - "https://webionite.com/quadnite/wave/3.gif", - "https://webionite.com/quadnite/wave/4.gif", - "https://webionite.com/quadnite/wave/5.gif", - "https://webionite.com/quadnite/wave/6.gif", - "https://webionite.com/quadnite/wave/7.gif" - ], - "forms": { - "none": "{} is waving", - "others": "{} is waving at {}", - "reason": "{} is waving because {}", - "both": "{} is waving at {} for {}" - } - }, - "wink": { - "gifs": [ - "https://webionite.com/quadnite/wink/0.gif", - "https://webionite.com/quadnite/wink/1.gif", - "https://webionite.com/quadnite/wink/2.gif", - "https://webionite.com/quadnite/wink/3.gif", - "https://webionite.com/quadnite/wink/4.gif", - "https://webionite.com/quadnite/wink/5.gif", - "https://webionite.com/quadnite/wink/6.gif", - "https://webionite.com/quadnite/wink/7.gif", - "https://webionite.com/quadnite/wink/8.gif", - "https://webionite.com/quadnite/wink/9.gif", - "https://webionite.com/quadnite/wink/10.gif" - ], - "forms": { - "none": "{} is winking", - "others": "{} is winking at {}", - "reason": "{} is winking because {}", - "both": "{} is winking at {} for {}" - } - }, - "yes": { - "gifs": [ - "https://webionite.com/quadnite/yes/0.gif", - "https://webionite.com/quadnite/yes/1.gif", - "https://webionite.com/quadnite/yes/2.gif", - "https://webionite.com/quadnite/yes/3.gif", - "https://webionite.com/quadnite/yes/4.gif", - "https://webionite.com/quadnite/yes/5.gif", - "https://webionite.com/quadnite/yes/6.gif", - "https://webionite.com/quadnite/yes/7.gif", - "https://webionite.com/quadnite/yes/8.gif", - "https://webionite.com/quadnite/yes/9.gif", - "https://webionite.com/quadnite/yes/10.gif" - ], - "forms": { - "none": "{} is saying yes", - "others": "{} is saying yes to {}", - "reason": "{} is saying yes because {}", - "both": "{} is saying yes to {} for {}" - } - } -} diff --git a/shrinkwrap.yaml b/shrinkwrap.yaml deleted file mode 100644 index e540d2b..0000000 --- a/shrinkwrap.yaml +++ /dev/null @@ -1,81 +0,0 @@ -dependencies: - axios: 0.18.0 - telegraf: 3.27.1 -packages: - /@types/node/10.12.24: - dev: false - resolution: - integrity: sha512-GWWbvt+z9G5otRBW8rssOFgRY87J9N/qbhqfjMZ+gUuL6zoL+Hm6gP/8qQBG4jjimqdaNLCehcVapZ/Fs2WjCQ== - /axios/0.18.0: - dependencies: - follow-redirects: 1.6.1 - is-buffer: 1.1.6 - dev: false - resolution: - integrity: sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI= - /debug/3.1.0: - dependencies: - ms: 2.0.0 - dev: false - resolution: - integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - /debug/4.1.1: - dependencies: - ms: 2.1.1 - dev: false - resolution: - integrity: sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - /follow-redirects/1.6.1: - dependencies: - debug: 3.1.0 - dev: false - engines: - node: '>=4.0' - resolution: - integrity: sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ== - /is-buffer/1.1.6: - dev: false - resolution: - integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - /ms/2.0.0: - dev: false - resolution: - integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - /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: - axios: ^0.18.0 - telegraf: ^3.27.1 diff --git a/commands_list.txt b/static/commands_list.txt similarity index 100% rename from commands_list.txt rename to static/commands_list.txt diff --git a/insults.txt b/static/insults.txt similarity index 100% rename from insults.txt rename to static/insults.txt diff --git a/kys.txt b/static/kys.txt similarity index 100% rename from kys.txt rename to static/kys.txt diff --git a/questions.txt b/static/questions.txt similarity index 100% rename from questions.txt rename to static/questions.txt diff --git a/static/roleplay.json b/static/roleplay.json new file mode 100644 index 0000000..bb6115f --- /dev/null +++ b/static/roleplay.json @@ -0,0 +1,476 @@ +{ + "angry": { + "forms": { + "none": "{} is angry", + "others": "{} is angry at {}", + "reason": "{} is angry because {}", + "both": "{} is angry at {} for {}" + } + }, + "bite": { + "forms": { + "none": "{} is biting", + "others": "{} is biting {}", + "reason": "{} is biting because {}", + "both": "{} is biting {} for {}" + } + }, + "blush": { + "forms": { + "none": "{} is blushing", + "others": "{} is blushing at {}", + "reason": "{} is blushing because {}", + "both": "{} is blushing at {} for {}" + } + }, + "bored": { + "forms": { + "none": "{} is bored", + "others": "{}, {} are bored", + "reason": "{} is bored because {}", + "both": "{}, {} are bored because {}" + } + }, + "bonk": { + "forms": { + "none": "{} is bonking", + "others": "{} is bonking {}", + "reason": "{} is bonking because {}", + "both": "{} is bonking {} for {}" + } + }, + "boop": { + "forms": { + "none": "{} is booping", + "others": "{} is booping {}", + "reason": "{} is booping because {}", + "both": "{} is booping {} for {}" + } + }, + "chase": { + "forms": { + "none": "{} is chasing", + "others": "{} is chasing {}", + "reason": "{} is chasing because {}", + "both": "{} is chasing {} for {}" + } + }, + "cheer": { + "forms": { + "none": "{} is cheering", + "others": "{} is cheering for {}", + "reason": "{} is cheering because {}", + "both": "{} is cheering for {} because {}" + } + }, + "cringe": { + "forms": { + "none": "{} is cringing", + "others": "{} is cringing at {}", + "reason": "{} is cringing because {}", + "both": "{} is cringing at {} for {}" + } + }, + "cry": { + "forms": { + "none": "{} is crying", + "others": "{} is crying at {}", + "reason": "{} is crying because {}", + "both": "{} is crying at {} for {}" + } + }, + "cuddle": { + "forms": { + "none": "{} is cuddling", + "others": "{} is cuddling with {}", + "reason": "{} is cuddling because {}", + "both": "{} is cuddling with {} for {}" + } + }, + "dab": { + "forms": { + "none": "{} is dabing", + "others": "{} is dabing at {}", + "reason": "{} is dabing because {}", + "both": "{} is dabing at {} for {}" + } + }, + "dance": { + "forms": { + "none": "{} is dancing", + "others": "{} is dancing with {}", + "reason": "{} is dancing because {}", + "both": "{} is dancing with {} for {}" + } + }, + "die": { + "forms": { + "none": "{} is dying", + "others": "{} is dying with {}", + "reason": "{} is dying because {}", + "both": "{} is dying with {} because {}" + } + }, + "eat": { + "forms": { + "none": "{} is eating", + "others": "{} is eating with {}", + "reason": "{} is eating because {}", + "both": "{} is eating with {} for {}" + } + }, + "facepalm": { + "forms": { + "none": "{} is facepalming", + "others": "{} is facepalming at {}", + "reason": "{} is facepalming because {}", + "both": "{} is facepalming at {} for {}" + } + }, + "feed": { + "forms": { + "none": "{} is eating", + "others": "{} is feeding {}", + "reason": "{} is eating because {}", + "both": "{} is feeding {} for {}" + } + }, + "glomp": { + "forms": { + "none": "{} is glomping", + "others": "{} is glomping {}", + "reason": "{} is glomping because {}", + "both": "{} is glomping {} for {}" + } + }, + "handhold": { + "alias": "holdhands" + }, + "happy": { + "forms": { + "none": "{} is happy", + "others": "{} is happy with {}", + "reason": "{} is happy because {}", + "both": "{} is happy with {} for {}" + } + }, + "hate": { + "forms": { + "none": "{} is hating", + "others": "{} is hating {}", + "reason": "{} is hating because {}", + "both": "{} is hating {} for {}" + } + }, + "holdhands": { + "forms": { + "none": "{} is holding hands", + "others": "{} is holding hands with {}", + "reason": "{} is holding hands because {}", + "both": "{} is holding hands with {} for {}" + } + }, + "hide": { + "forms": { + "none": "{} is hiding", + "others": "{} is hiding from {}", + "reason": "{} is hiding because {}", + "both": "{} is hiding from {} for {}" + } + }, + "highfive": { + "forms": { + "none": "{} is high fiving", + "others": "{} is high fiving with {}", + "reason": "{} is high fiving because {}", + "both": "{} is high fiving with {} for {}" + } + }, + "hug": { + "forms": { + "none": "{} is hugging", + "others": "{} is hugging {}", + "reason": "{} is hugging because {}", + "both": "{} is hugging at {} for {}" + } + }, + "kill": { + "forms": { + "none": "{} is killing", + "others": "{} is killing {}", + "reason": "{} is killing because {}", + "both": "{} is killing {} for {}" + } + }, + "kiss": { + "forms": { + "none": "{} is kissing", + "others": "{} is kissing {}", + "reason": "{} is kissing because {}", + "both": "{} is kissing {} for {}" + } + }, + "laugh": { + "forms": { + "none": "{} is laughing", + "others": "{} is laughing with {}", + "reason": "{} is laughing because {}", + "both": "{} is laughing with {} for {}" + } + }, + "lick": { + "forms": { + "none": "{} is licking", + "others": "{} is licking {}", + "reason": "{} is licking {}", + "both": "{} is licking {} for {}" + } + }, + "love": { + "forms": { + "none": "{} is loving", + "others": "{} is loving {}", + "reason": "{} is loving because {}", + "both": "{} is loving {} for {}" + } + }, + "lurk": { + "forms": { + "none": "{} is lurking", + "others": "{} is lurking from {}", + "reason": "{} is lurking because {}", + "both": "{} is lurking from {} for {}" + } + }, + "nervous": { + "forms": { + "none": "{} is nervous", + "others": "{} is nervous with {}", + "reason": "{} is nervous because {}", + "both": "{} is nervous with {} for {}" + } + }, + "no": { + "forms": { + "none": "{} is saying no", + "others": "{} is saying no to {}", + "reason": "{} is saying no because {}", + "both": "{} is saying no to {} for {}" + } + }, + "nom": { + "forms": { + "none": "{} is noming", + "others": "{} is noming {}", + "reason": "{} is noming because {}", + "both": "{} is noming {} for {}" + } + }, + "nuzzle": { + "forms": { + "none": "{} is nuzzling", + "others": "{} is nuzzling {}", + "reason": "{} is nuzzling because {}", + "both": "{} is nuzzling {} for {}" + } + }, + "panic": { + "forms": { + "none": "{} is panicking", + "others": "{} is panicking at {}", + "reason": "{} is panicking because {}", + "both": "{} is panicking at {} for {}" + } + }, + "pat": { + "forms": { + "none": "{} is patting", + "others": "{} is patting {}", + "reason": "{} is patting because {}", + "both": "{} is patting {} for {}" + } + }, + "peck": { + "forms": { + "none": "{} is pecking", + "others": "{} is pecking {}", + "reason": "{} is pecking because {}", + "both": "{} is pecking {} for {}" + } + }, + "poke": { + "forms": { + "none": "{} is poking", + "others": "{} is poking {}", + "reason": "{} is poking because {}", + "both": "{} is poking {} for {}" + } + }, + "pout": { + "forms": { + "none": "{} is pouting", + "others": "{} is pouting at {}", + "reason": "{} is pouting because {}", + "both": "{} is pouting at {} for {}" + } + }, + "run": { + "forms": { + "none": "{} is running", + "others": "{} is running from {}", + "reason": "{} is running because {}", + "both": "{} is running from {} for {}" + } + }, + "runs": { + "alias": "run" + }, + "shoot": { + "forms": { + "none": "{} is shooting", + "others": "{} is shooting {}", + "reason": "{} is shooting because {}", + "both": "{} is shooting {} for {}" + } + }, + "shrug": { + "forms": { + "none": "{} is shrugging", + "others": "{} is shrugging at {}", + "reason": "{} is shrugging because {}", + "both": "{} is shrugging at {} for {}" + } + }, + "sip": { + "forms": { + "none": "{} is sipping", + "others": "{} is sipping with {}", + "reason": "{} is sipping because {}", + "both": "{} is sipping with {} for {}" + } + }, + "slap": { + "forms": { + "none": "{} is slapping", + "others": "{} is slapping {}", + "reason": "{} is slapping because {}", + "both": "{} is slapping {} for {}" + } + }, + "sleep": { + "forms": { + "none": "{} is sleeping", + "others": "{} is sleeping with {}", + "reason": "{} is sleeping because {}", + "both": "{} is sleeping {} for {}" + } + }, + "sob": { + "alias": "sobs" + }, + "sobs": { + "alias": "cry", + "forms": { + "none": "{} is sobbing", + "others": "{} is sobbing due to {}", + "reason": "{} is sobbing because {}", + "both": "{} is sobbing due to {} because {}" + } + }, + "snuggle": { + "forms": { + "none": "{} is snuggling", + "others": "{} is snuggling {}", + "reason": "{} is snuggling because {}", + "both": "{} is snuggling {} for {}" + } + }, + "stab": { + "forms": { + "none": "{} is stabbing", + "others": "{} is stabbing {}", + "reason": "{} is stabbing because {}", + "both": "{} is stabbing {} for {}" + } + }, + "tease": { + "forms": { + "none": "{} is teasing", + "others": "{} is teasing {}", + "reason": "{} is teasing because {}", + "both": "{} is teasing {} for {}" + } + }, + "think": { + "forms": { + "none": "{} is thinking", + "others": "{} is thinking with {}", + "reason": "{} is thinking because {}", + "both": "{} is thinking with {} for {}" + } + }, + "thumbsup": { + "forms": { + "none": "{} is giving a thumbs up", + "others": "{} is giving a thumbs up to {}", + "reason": "{} is giving a thumbs up because {}", + "both": "{} is giving a thumbs up to {} for {}" + } + }, + "tickle": { + "forms": { + "none": "{} is tickling", + "others": "{} is tickling {}", + "reason": "{} is tickling because {}", + "both": "{} is tickling {} for {}" + } + }, + "triggered": { + "forms": { + "none": "{} is triggered", + "others": "{} is triggered by {}", + "reason": "{} is triggered because {}", + "both": "{} is triggered by {} because {}" + } + }, + "twerk": { + "forms": { + "none": "{} is twerking", + "others": "{} is twerking with {}", + "reason": "{} is twerking because {}", + "both": "{} is twerking with {} because {}" + } + }, + "wag": { + "forms": { + "none": "{} is wagging", + "others": "{} is wagging at {}", + "reason": "{} is wagging because {}", + "both": "{} is wagging at {} for {}" + } + }, + "wave": { + "forms": { + "none": "{} is waving", + "others": "{} is waving at {}", + "reason": "{} is waving because {}", + "both": "{} is waving at {} for {}" + } + }, + "wink": { + "forms": { + "none": "{} is winking", + "others": "{} is winking at {}", + "reason": "{} is winking because {}", + "both": "{} is winking at {} for {}" + } + }, + "yes": { + "forms": { + "none": "{} is saying yes", + "others": "{} is saying yes to {}", + "reason": "{} is saying yes because {}", + "both": "{} is saying yes to {} for {}" + } + } +} diff --git a/words.txt b/static/words.txt similarity index 100% rename from words.txt rename to static/words.txt