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
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))
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 = []
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]