X-Git-Url: https://apps.delaporte.us/gitweb/matrix-chore-bot.git/blobdiff_plain/27e0c5c2964c51669e5ef7fd353904c7d4caa6a4..cb9ac2c73d0d36478cecec0f2f6a26ebabbb34af:/matrix_chore_bot/bot.py diff --git a/matrix_chore_bot/bot.py b/matrix_chore_bot/bot.py index 62ef475..067c2f9 100644 --- a/matrix_chore_bot/bot.py +++ b/matrix_chore_bot/bot.py @@ -6,22 +6,18 @@ import simplematrixbotlib as botlib from .db import Data as ChoreData -CHORES = 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) -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 @@ -33,9 +29,7 @@ async def chore_bot(room, message, bot): await bot.api.send_text_message( room.room_id, str(line)) except Exception as ex: - raise 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)) @@ -53,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 = [] @@ -81,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]