Compare commits

...

10 commits
0.3.0 ... main

2 changed files with 65 additions and 76 deletions

125
bot.py
View file

@ -1,6 +1,7 @@
import simplematrixbotlib as botLibrary import simplematrixbotlib as botLibrary
import json import json
import fetch import fetch
import time
version = "0.3.0" version = "0.3.0"
@ -34,31 +35,27 @@ async def help_message(room, message):
and match.command("help")): and match.command("help")):
return return
if debugMode == False: if debugMode == False:
message = (f""" message = (f"""Help
Help ============================
============================ A work-in-progress Python rewrite of the original quotes bot, aiming for a mostly complete remake.
A work-in-progress Python rewrite of the original quotes bot, aiming for a mostly complete remake. {PREFIX} help - show this message
{PREFIX} help - show this message {PREFIX} get - fetch a image from the defined instance
{PREFIX} get - fetch a image from the defined instance {PREFIX} source - send a link to the source code
{PREFIX} source - send a link to the source code {PREFIX} version - show the bot version
{PREFIX} version - show the bot version {PREFIX} die - kills the bot (only admins can do this!)""")
{PREFIX} die - kills the bot (only admins can do this!)
""")
else: else:
message = (f""" message = (f"""Help
Help ============================
============================ A work-in-progress Python rewrite of the original quotes bot, aiming for a mostly complete remake.
A work-in-progress Python rewrite of the original quotes bot, aiming for a mostly complete remake. {PREFIX} help - show this message
{PREFIX} help - show this message {PREFIX} get - fetch a image from the defined instance
{PREFIX} get - fetch a image from the defined instance {PREFIX} source - send a link to the source code
{PREFIX} source - send a link to the source code {PREFIX} version - show the bot version
{PREFIX} version - show the bot version {PREFIX} die - kills the bot (only admins can do this!)
{PREFIX} die - kills the bot (only admins can do this!)
--- ---
NOTE: Debug mode is on. Output will be more verbose. NOTE: Debug mode is on. Output will be more verbose.""")
""")
await bot.api.send_text_message(room.room_id, message) await bot.api.send_text_message(room.room_id, message)
@ -74,41 +71,51 @@ async def make_choice(room, message):
temp = False temp = False
else: else:
id = match.args() id = match.args()
id = str(id[1]) 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) quoteImage = fetch.fetchQuote(id)
quoteData = fetch.fetchQuoteData(id) quoteData = fetch.fetchQuoteData(id)
def formatData(data): def formatData(data):
if data is not None:
timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(data['created']))
dataToFormat = data dataToFormat = data
created = str(data['created']) created = timestamp
description = str(data['desc']) description = str(data['desc'])
imageid = str(data['iid']) imageid = str(data['iid'])
ocr = str(data['ocr']) ocr = str(data['ocr'])
score = str(data['score']) score = str(data['score'])
return created, description, imageid, ocr, 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: if debugMode == False:
created, description, imageid, ocr, score = formatData(quoteData) created, description, imageid, ocr, score = formatData(quoteData)
message1 = (f""" message1 = (f"""Created: {created}
Created: {created} Description: {description}
Description: {description} Image ID: {imageid}
Image ID: {imageid} OCR (Tesseract): {ocr}
OCR (Tesseract): {ocr} Rating: {score}""")
Rating: {score}
""")
else: else:
created, description, imageid, ocr, score = formatData(quoteData) created, description, imageid, ocr, score = formatData(quoteData)
message1 = (f""" message1 = (f"""Created: {created}
Created: {created} Description: {description}
Description: {description} Image ID: {imageid}
Image ID: {imageid} OCR (Tesseract):
OCR (Tesseract): {ocr} > {ocr}
Rating: {score} Rating: {score}""")
""") message2 = (f"""Command recived (DEBUG).
message2 = (f""" (We're supposed to fetch quote number {id} now.)""")
Command recived (DEBUG).
(We're supposed to fetch quote number {id} now.)
""")
if debugMode == True: if debugMode == True:
await bot.api.send_text_message(room.room_id, message2) await bot.api.send_text_message(room.room_id, message2)
@ -125,10 +132,8 @@ async def help_message(room, message):
and match.command("source")): and match.command("source")):
return return
message = (f""" message = (f"""quotes-bot-python by Nyx Tutt (@n:everypizza.im)
quotes-bot-python by Nyx Tutt (@n:everypizza.im) https://git.everypizza.im/n/quotes-bot-python/""")
https://git.everypizza.im/n/quotes-bot-python/
""")
await bot.api.send_text_message(room.room_id, message) await bot.api.send_text_message(room.room_id, message)
@ -139,34 +144,18 @@ async def help_message(room, message):
and match.command("version")): and match.command("version")):
return return
message = (f""" message = (f"""quotes-bot-python version {version}""")
quotes-bot-python version {version}
""")
await bot.api.send_text_message(room.room_id, message) await bot.api.send_text_message(room.room_id, message)
@bot.listener.on_message_event @bot.listener.on_message_event
async def help_message(room, message): async def help_message(room, message):
match = botLibrary.MessageMatch(room, message, bot, PREFIX) match = botLibrary.MessageMatch(room, message, bot, PREFIX)
if not (match.is_not_from_this_bot() and match.prefix() and match.is_from_userid(admin) if match.is_not_from_this_bot() and match.prefix() and match.command("die"):
and match.command("die")): if match.is_from_userid(admin):
return await bot.api.send_text_message(room.room_id, "Ok")
message = ("Ok")
await bot.api.send_text_message(room.room_id, message)
exit(0) exit(0)
else:
# We should find a better way to do this. await bot.api.send_text_message(room.room_id, "You don't have permissions for that.")
@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 not match.is_from_userid(admin)
and match.command("die")):
return
message = ("You don't have permissions for that.")
await bot.api.send_text_message(room.room_id, message)
bot.run() bot.run()

View file

@ -30,7 +30,7 @@ def fetchQuoteData(quoteId):
print(quoteData.json()) print(quoteData.json())
else: else:
print(f"An error occured while saving the file: {quoteData.status_code}") print(f"An error occured while saving the file: {quoteData.status_code}")
return "This file probably doesn't exist." return None
def fetchTopQuotes(instance): def fetchTopQuotes(instance):
raise NotImplementedError raise NotImplementedError