From 56594e6e134343b134dc85a8f0f44a0b7567516f Mon Sep 17 00:00:00 2001 From: Sebastian Schmittner Date: Wed, 23 Nov 2022 10:34:30 +0100 Subject: [PATCH 1/2] Adding a simple module to query randomly generated pictures from inspirobot api Signed-off-by: Sebastian Schmittner --- README.md | 11 ++++++++++ modules/inspire.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 modules/inspire.py diff --git a/README.md b/README.md index c109097..6ef89f6 100644 --- a/README.md +++ b/README.md @@ -371,6 +371,17 @@ The module uses a demo API Key which can be replaced by your own api key by sett You can create one at https://api.nasa.gov/#signUp + +### Inspirobot + +Query a randomly generated inspirational poster from https://inspirobot.me/ upload and send to the room. + +Command: + +* !inspire - Generate inspiration and post to the room +* !inspire help - Show this help + + ### Wolfram Alpha Make queries to Wolfram Alpha diff --git a/modules/inspire.py b/modules/inspire.py new file mode 100644 index 0000000..6089cc5 --- /dev/null +++ b/modules/inspire.py @@ -0,0 +1,55 @@ +import html +import requests + +from modules.common.module import BotModule + + +class MatrixModule(BotModule): + + def __init__(self, name): + super().__init__(name) + self.url_generator_url = "https://inspirobot.me/api?generate=true" + self.matrix_uri_cache = dict() + + async def matrix_message(self, bot, room, event): + self.logger.debug(f"room: {room.name} sender: {event.sender} wants to be inspired!") + + args = event.body.split() + + if len(args) == 1: + await self.send_inspiration(bot, room, self.url_generator_url) + return + elif len(args) == 2: + if args[1] == "help": + await self.command_help(bot, room) + return + await bot.send_text(room, f"unknown command: {args}") + await self.command_help(bot, room) + + async def send_inspiration(self, bot, room, url_generator_url): + self.logger.debug(f"Asking inspirobot for pic url at {url_generator_url}") + response = requests.get(url_generator_url) + + if response.status_code != 200: + self.logger.error("unable to request inspirobot api. response: [status: %d text: %s]", response.status_code, response.text) + return await bot.send_text(room, f"sorry. something went wrong accessing inspirobot: {response.status_code}: {response.text}") + + pic_url = response.text + self.logger.debug("Sending image with src='%s'", pic_url) + await bot.upload_and_send_image(room, pic_url) + # await bot.send_image(room, matrix_uri, apod.hdurl, None, mimetype, w, h, size) + + def help(self): + return """I'm InspiroBot. + I am an artificial intelligence dedicated to generating unlimited amounts of unique inspirational quotes + for endless enrichment of pointless human existence. + https://inspirobot.me/ + """ + + async def command_help(self, bot, room): + msg = """usage: !inspire [command] + No command to generate an inspirational poster just for you! + - help - show this. Useful, isn't it? + """ + await bot.send_html(room, f"{html.escape(self.help())}", self.help()) + await bot.send_text(room, msg) From d72ea71d712fbe2997e362311fc7fe540af6ed68 Mon Sep 17 00:00:00 2001 From: Sebastian Schmittner Date: Wed, 23 Nov 2022 10:42:18 +0100 Subject: [PATCH 2/2] removed old code snipped Signed-off-by: Sebastian Schmittner --- modules/inspire.py | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/inspire.py b/modules/inspire.py index 6089cc5..c5eeab2 100644 --- a/modules/inspire.py +++ b/modules/inspire.py @@ -37,7 +37,6 @@ class MatrixModule(BotModule): pic_url = response.text self.logger.debug("Sending image with src='%s'", pic_url) await bot.upload_and_send_image(room, pic_url) - # await bot.send_image(room, matrix_uri, apod.hdurl, None, mimetype, w, h, size) def help(self): return """I'm InspiroBot.