X-Git-Url: https://us-delaporte.pagekite.me/gitweb/matrix-chore-bot.git/blobdiff_plain/821744728a97987fab0836669d588b53236ebc03..cb9ac2c73d0d36478cecec0f2f6a26ebabbb34af:/matrix_chore_bot/bot.py diff --git a/matrix_chore_bot/bot.py b/matrix_chore_bot/bot.py index a0a3256..067c2f9 100644 --- a/matrix_chore_bot/bot.py +++ b/matrix_chore_bot/bot.py @@ -4,23 +4,20 @@ import os import simplematrixbotlib as botlib -from .db import Data +from .db import Data as ChoreData SERVER = os.environ.get('MATRIX_SERVER') BOT_NAME = os.environ.get('MATRIX_BOT') BOT_PWD = os.environ.get('MATRIX_BOT_PWD') -def get_bot(): - creds = botlib.Creds(SERVER, BOT_NAME, BOT_PWD) - return botlib.Bot(creds) +CHORES = ChoreData() logger = logging.getLogger(__name__) logging.basicConfig(filename='matrix-chore-bot.log', encoding='utf-8', level=logging.DEBUG) logging.getLogger('nio').setLevel(logging.WARNING) -@bot.listener.on_message_event -async def chore_bot(room, message, bot): - match = botlib.MessageMatch(room, message, bot, '!chore') +async def chore_bot(room, message, bot, prefix='!chore'): + match = botlib.MessageMatch(room, message, bot, prefix) if not match.is_not_from_this_bot() and match.prefix(): return @@ -32,7 +29,7 @@ async def chore_bot(room, message, bot): await bot.api.send_text_message( room.room_id, str(line)) except Exception as ex: - line = 'Ye cannot get ye flask.' + line = f'Ye flask must be load bearing, or something... {str(ex)}' await bot.api.send_text_message( room.room_id, str(line)) @@ -50,15 +47,24 @@ async def handle_chore(match): check - check status of a chore done - mark a chore as done list - print the chore list + filter TERM - list all chores that include TERM undo - mark a chore as undone ''' if match.command('list'): - results = ['## Listing chores...'] + results = ['## Listing all...'] for item in CHORES.list(): results.append(item) results.append('-- End of List --') return results + + if match.command('filter'): + term = ' '.join(match.args()[1:]) + results = [f'## List matching {term}'] + for item in CHORES.filter(term): + results.append(item) + results.append('-- End of List --') + return results if match.command('setup'): results = [] @@ -78,9 +84,12 @@ async def handle_chore(match): return [result] if match.command('done'): - chore_id = match.args()[1] - result = CHORES.done(chore_id) - return [result] + ids = match.args()[1:] + results = [] + for chore_id in ids: + result = CHORES.done(chore_id) + results.append(result) + return results if match.command('undo'): chore_id = match.args()[1]