mirror of
				https://gitlab.com/ceda_ei/Quadnite-Bot
				synced 2025-10-31 17:20:05 +01:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			6da0e12171
			...
			fde5830309
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| fde5830309 | |||
| 71e6f6927d | 
							
								
								
									
										3
									
								
								bot.js
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								bot.js
									
									
									
									
									
								
							| @@ -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(); | ||||||
|   | |||||||
| @@ -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))); | ||||||
| @@ -65,4 +66,8 @@ module.exports = (bot, [ questions, kys, insults, commands_list, words ], feedba | |||||||
| 		+ "chatting with me in private, you are most likely doing it wrong. " | 		+ "chatting with me in private, you are most likely doing it wrong. " | ||||||
| 		+ "Add me to a group for fun. To give feedback, use /feedback")); | 		+ "Add me to a group for fun. To give feedback, use /feedback")); | ||||||
|  |  | ||||||
|  | 	// Add all roleplay commands | ||||||
|  | 	Object.keys(roleplay_data).map(command => | ||||||
|  | 		bot.command(command, ctx => roleplay(roleplay_data[command].forms, roleplay_data[command].gifs)(ctx))); | ||||||
|  |  | ||||||
| }; | }; | ||||||
|   | |||||||
							
								
								
									
										40
									
								
								commands/roleplay.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								commands/roleplay.js
									
									
									
									
									
										Normal 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}); | ||||||
|  |  | ||||||
|  | }; | ||||||
| @@ -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
									
								
							
							
						
						
									
										1150
									
								
								roleplay.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user