X-Git-Url: https://us-delaporte.pagekite.me/gitweb/matrix-chore-bot.git/blobdiff_plain/68b00c8ecbd23b7eed4d0942aa8b45f89f2810e0..cb9ac2c73d0d36478cecec0f2f6a26ebabbb34af:/matrix_chore_bot/bot.py?ds=sidebyside diff --git a/matrix_chore_bot/bot.py b/matrix_chore_bot/bot.py index 8a9e755..067c2f9 100644 --- a/matrix_chore_bot/bot.py +++ b/matrix_chore_bot/bot.py @@ -12,16 +12,12 @@ BOT_PWD = os.environ.get('MATRIX_BOT_PWD') CHORES = ChoreData() -def get_bot(): - creds = botlib.Creds(SERVER, BOT_NAME, BOT_PWD) - return botlib.Bot(creds) - 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,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 flask must be load bearing, or something...' + line = f'Ye flask must be load bearing, or something... {str(ex)}' await bot.api.send_text_message( room.room_id, str(line)) @@ -51,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 = [] @@ -79,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]