import simplematrixbotlib as botLibrary import json import fetch import time version = "0.3.0" print("Imag/quotes bot version " + version) print("Loading config…") try: with open('config.json', 'r') as f: config = json.load(f) print("Loaded config.") except FileNotFoundError: print("Config file not found. Did you read the README?") except: print("Something bad and unforseen happened, please report the bug to @n:everypizza.im") if config['bot']['debugMode'] == True: debugMode = True else: debugMode = False print("Logging in…") credentials = botLibrary.Creds(config['matrix']['server'], config['matrix']['userid'], config['matrix']['password']) admin = config['bot']['admin'] bot = botLibrary.Bot(credentials) PREFIX = "!q" print("Logged in.") print("Ready!") @bot.listener.on_message_event async def help_message(room, message): match = botLibrary.MessageMatch(room, message, bot, PREFIX) if not (match.is_not_from_this_bot() and match.prefix() and match.command("help")): return if debugMode == False: message = (f"""Help ============================ A work-in-progress Python rewrite of the original quotes bot, aiming for a mostly complete remake. {PREFIX} help - show this message {PREFIX} get - fetch a image from the defined instance {PREFIX} source - send a link to the source code {PREFIX} version - show the bot version {PREFIX} die - kills the bot (only admins can do this!)""") else: message = (f"""Help ============================ A work-in-progress Python rewrite of the original quotes bot, aiming for a mostly complete remake. {PREFIX} help - show this message {PREFIX} get - fetch a image from the defined instance {PREFIX} source - send a link to the source code {PREFIX} version - show the bot version {PREFIX} die - kills the bot (only admins can do this!) --- NOTE: Debug mode is on. Output will be more verbose.""") await bot.api.send_text_message(room.room_id, message) @bot.listener.on_message_event async def make_choice(room, message): match = botLibrary.MessageMatch(room, message, bot, PREFIX) if not (match.is_not_from_this_bot() and match.prefix() and match.command("get")): return temp = True if not match.args(): temp = False else: id = match.args() try: id = int(id[1]) except ValueError: youTriedMessage = ("Blunt tried :skull:") await bot.api.send_text_message(room.room_id, youTriedMessage) quoteImage = fetch.fetchQuote(id) quoteData = fetch.fetchQuoteData(id) def formatData(data): if data is not None: timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(data['created'])) dataToFormat = data created = timestamp description = str(data['desc']) imageid = str(data['iid']) ocr = str(data['ocr']) score = str(data['score']) return created, description, imageid, ocr, score else: dataToFormat = data created = "Error" description = "Error" imageid = "Error" ocr = "Error" score = "Error" return created, description, imageid, ocr, score if debugMode == False: created, description, imageid, ocr, score = formatData(quoteData) message1 = (f"""Created: {created} Description: {description} Image ID: {imageid} OCR (Tesseract): {ocr} Rating: {score}""") else: created, description, imageid, ocr, score = formatData(quoteData) message1 = (f"""Created: {created} Description: {description} Image ID: {imageid} OCR (Tesseract): > {ocr} Rating: {score}""") message2 = (f"""Command recived (DEBUG). (We're supposed to fetch quote number {id} now.)""") if debugMode == True: await bot.api.send_text_message(room.room_id, message2) await bot.api.send_text_message(room.room_id, message1) else: await bot.api.send_text_message(room.room_id, message1) imageMessage = (quoteImage) await bot.api.send_image_message(room.room_id, imageMessage) # https://quotes.everypizza.im/image/178 @bot.listener.on_message_event async def help_message(room, message): match = botLibrary.MessageMatch(room, message, bot, PREFIX) if not (match.is_not_from_this_bot() and match.prefix() and match.command("source")): return message = (f"""quotes-bot-python by Nyx Tutt (@n:everypizza.im) https://git.everypizza.im/n/quotes-bot-python/""") await bot.api.send_text_message(room.room_id, message) @bot.listener.on_message_event async def help_message(room, message): match = botLibrary.MessageMatch(room, message, bot, PREFIX) if not (match.is_not_from_this_bot() and match.prefix() and match.command("version")): return message = (f"""quotes-bot-python version {version}""") await bot.api.send_text_message(room.room_id, message) @bot.listener.on_message_event async def help_message(room, message): match = botLibrary.MessageMatch(room, message, bot, PREFIX) if match.is_not_from_this_bot() and match.prefix() and match.command("die"): if match.is_from_userid(admin): await bot.api.send_text_message(room.room_id, "Ok") exit(0) else: await bot.api.send_text_message(room.room_id, "You don't have permissions for that.") bot.run()