1
1
mirror of https://gitlab.com/ceda_ei/Quadnite-Bot synced 2025-10-31 17:20:05 +01:00

Compare commits

..

15 Commits

10 changed files with 158 additions and 8 deletions

1
bot.js
View File

@@ -5,6 +5,7 @@ const commands = require("./commands");
const axios = require("axios"); const axios = require("axios");
const bot = new Telegraf(BOT_API_KEY); const bot = new Telegraf(BOT_API_KEY);
bot.catch((err) => console.log(err));
const data = [ const data = [
"questions", "questions",

48
commands/expand.js Normal file
View File

@@ -0,0 +1,48 @@
function expand(words, text) {
const letters = text.trim().toLowerCase().split("");
// Build a dictionary with lowercase letters as keys
const dict = {};
words.forEach(word => {
if (word == "")
return;
const initial = word.split("")[0].toLowerCase();
if (initial in dict)
dict[initial].push(word);
else
dict[initial] = [word];
});
return letters.map((letter) => {
if (!(letter.toLowerCase() in dict))
return letter;
const wordsWithLetter = dict[letter.toLowerCase()];
const word = wordsWithLetter[Math.floor(Math.random() * wordsWithLetter.length)];
return word;
}).reduce((acc, cur) => acc + " " + cur).replace(/\s{2,}/g, " ");
}
module.exports = (words = []) => (ctx) => {
words = words.filter(i => ! i.match(/'s$/));
const message = ctx.message.text.replace(/^[^ ]+/, "");
if (message) {
return expand(words, message);
} else {
if (ctx.message.reply_to_message)
return expand(words, ctx.message.reply_to_message.text);
else
return "Need text to expand. Send /expand text or reply to a "
+ "message with /expand";
}
};

View File

@@ -7,9 +7,9 @@ const absurdify = require("./absurdify");
const feedback = require("./feedback"); 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");
module.exports = (bot, [ questions, kys, insults, commands_list, words ], module.exports = (bot, [ questions, kys, insults, commands_list, words ], feedback_id, axios) => {
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)()));
@@ -60,5 +60,9 @@ module.exports = (bot, [ questions, kys, insults, commands_list, words ],
"https://wiki.archlinux.org/api.php")(ctx).then(x => ctx.reply(x, "https://wiki.archlinux.org/api.php")(ctx).then(x => ctx.reply(x,
{parse_mode: "HTML"}))); {parse_mode: "HTML"})));
bot.command("info", (ctx) => ctx.reply(info()(ctx), {parse_mode: "Markdown"})); 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"));
}; };

View File

@@ -24,7 +24,7 @@ module.exports = () => (ctx) => {
text += "Channel ID: "; text += "Channel ID: ";
text += `\`${forward.id}\`\n`; text += `\`${forward.id}\`\n`;
text += "Message Date: `"; text += "Message Date: `";
const date = new Date(reply.forward_date); const date = new Date(reply.forward_date*1000);
text += date.toUTCString(); text += date.toUTCString();
text += "`"; text += "`";

View File

@@ -3,7 +3,7 @@ module.exports = (random, kys, default_text, bot_text, excluded_names) => (ctx)
if (ctx.message.reply_to_message) { if (ctx.message.reply_to_message) {
const { from } = ctx.message.reply_to_message; const { from } = ctx.message.reply_to_message;
const name = from.username ? "@" + from.username : from.firstName; const name = from.username ? "@" + from.username : from.first_name;
if (name == excluded_names[0]) if (name == excluded_names[0])
return bot_text; return bot_text;
return random(kys)().replace(/##name##/g, name); return random(kys)().replace(/##name##/g, name);
@@ -13,7 +13,7 @@ module.exports = (random, kys, default_text, bot_text, excluded_names) => (ctx)
const text_array = ctx.message.text.split(" "); const text_array = ctx.message.text.split(" ");
if (text_array.length > 1) { if (text_array.length > 1) {
const name = text_array[1]; const name = text_array.slice(1).reduce((i, j) => i + " " + j).trim();
if (excluded_names.includes(name) if (excluded_names.includes(name)
|| excluded_names.includes("@" + name)) || excluded_names.includes("@" + name))
return bot_text; return bot_text;

View File

@@ -21,3 +21,4 @@ should - Should <your question>
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

View File

@@ -67,3 +67,20 @@ Everyone has the right to be stupid but ##name## is abusing the privilege.
##name## Id tell you how I really feel, but I wasnt born with enough middle fingers to express myself in this case. ##name## Id tell you how I really feel, but I wasnt born with enough middle fingers to express myself in this case.
##name## Stupiditys not a crime, so feel free to go. ##name## Stupiditys not a crime, so feel free to go.
##name## Id tell you to go fuck yourself, but that would be cruel and unusual punishment. ##name## Id tell you to go fuck yourself, but that would be cruel and unusual punishment.
I've finally found how ##name## is related to their pants, they're both full of shit.
There has been a rumor going around about ##name## acting like a dumbass. They're not acting.
##name## calling you an idiot would be an insult to stupid people.
##name## you know how laughter is supposed to be the best medicine? I'm surprised you haven't received an award for your face.
##name## you're the reason why shampoo bottles need directions.
They say trash takes 10-1000 years to go away, I sure hope you're going for a speedrun ##name##.
##name## makes me wish I had less eyes and ears.
##name## if you ran as much as your mouth maybe people would actually like you.
##name## mother nature takes pity on you.
If I had a face like ##name##'s I would file a lawsuit against my parents.
##name## I'm glad to see you finally graduated kindergarten.....oh no, I'm sorry I thought-
It makes me really sad to see how much time it takes ##name## to get ready in the morning, not that it makes much of a difference.
##name## I would try to insult you but it would take you the rest of the day to figure it out.
##name## I'm surprised your portraits don't hang themselves.
Many people think ##name## is a vampire because their reflection quit on the first day.
##name## you make satan consider going to church.
When god said 'Let there be light' he should have reconsidered after meeting ##name##.

View File

@@ -26,7 +26,7 @@
##name## You should try playing snake and ladders, with real snakes and no ladders. ##name## You should try playing snake and ladders, with real snakes and no ladders.
##name## Dance naked on a couple of HT wires. ##name## Dance naked on a couple of HT wires.
##name## An active volcano is the best swimming pool for you. ##name## An active volcano is the best swimming pool for you.
##name## You shoulf try hot bath in a volcano. ##name## You should try hot bath in a volcano.
##name## Try to spend one day in a coffin and it will be yours forever. ##name## Try to spend one day in a coffin and it will be yours forever.
##name## Hit Uranium with a slow moving neutron in your presence. It will be a worthwhile experience. ##name## Hit Uranium with a slow moving neutron in your presence. It will be a worthwhile experience.
##name## You can be the first person to step on the sun. Have a try. ##name## You can be the first person to step on the sun. Have a try.

81
package-lock.json generated Normal file
View File

@@ -0,0 +1,81 @@
{
"name": "quadnite-bot",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@types/node": {
"version": "10.12.26",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.26.tgz",
"integrity": "sha512-nMRqS+mL1TOnIJrL6LKJcNZPB8V3eTfRo9FQA2b5gDvrHurC8XbSA86KNe0dShlEL7ReWJv/OU9NL7Z0dnqWTg=="
},
"axios": {
"version": "0.18.0",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
}
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.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==",
"requires": {
"debug": "^3.2.6"
}
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"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=="
},
"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=="
},
"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=="
},
"telegraf": {
"version": "3.27.1",
"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=="
}
}
}

View File

@@ -1,4 +1,3 @@
name?
How old are you? How old are you?
Whats your Birthday? Whats your Birthday?
What starsign does that make it? What starsign does that make it?
@@ -1755,4 +1754,3 @@ How do you memorize your numbers?
Have you ever been stuck in a bad situation but had no phone? Have you ever been stuck in a bad situation but had no phone?
How many signal bars do you usually get in your room? How many signal bars do you usually get in your room?
What service provider do you think is the best and why so? What service provider do you think is the best and why so?