]> apps.delaporte.us Git - matrix-goal-bot.git/blobdiff - bot.py
Fixup
[matrix-goal-bot.git] / bot.py
diff --git a/bot.py b/bot.py
index 839bf0719b3136d914a168fbc69d2011554753a5..0a40532ed72c217d7e81a2aeceb20efb071c5387 100644 (file)
--- a/bot.py
+++ b/bot.py
@@ -1,13 +1,11 @@
-import os
 from datetime import datetime as dt
+import logging
+import os
 
 import simplematrixbotlib as botlib
 
-from school import (get_assignments, STUDENTS)
+from goals.db import Data
 
-from chore.db import Data as ChoreData
-
-CHORES = ChoreData()
 
 SERVER = os.environ.get('MATRIX_SERVER')
 BOT_NAME = os.environ.get('GOAL_BOT')
@@ -22,128 +20,60 @@ creds = botlib.Creds(SERVER, BOT_NAME, BOT_PWD)
 bot = botlib.Bot(creds)
 PREFIX = '!goal'
 
-@bot.listener.on_message_event
-async def goals(room, message):
-    match = botlib.MessageMatch(room, message, bot, PREFIX)
-
-    if not match.is_not_from_this_bot() and match.prefix():
-        return
+logger = logging.getLogger(__name__)
+logging.basicConfig(filename='goals.log', encoding='utf-8', level=logging.DEBUG)
+logging.getLogger('nio').setLevel(logging.WARNING)
 
-    if match.command("echo"):
-        await bot.api.send_text_message(
-            room.room_id, " ".join(arg for arg in match.args())
-            )
-
-    help_text = '''
-        # Print this help text
-        !school help
-        # List available students
-        !school list
-        # Get today's assignments
-        !school get [NAME]
-        # Get an assignment for a date
-        !school get [Name] 2026-03-09
+async def do_goal(match):
     '''
-    if match.command("help"):
-        await bot.api.send_text_message(
-            room.room_id, help_text)
-
-    if match.command("list"):
-        student_list = f"Known students are {STUDENTS}."
-        await bot.api.send_text_message(
-            room.room_id, student_list)
-
-    person = ''
-    if match.command("get"):
-        print(match.args())
-        if(len(match.args()) < 2):
-            result = ['Please specify person to get assignments for.']
-        else:
-            person = match.args()[1]
+    Bot help here?
 
-        if(len(match.args()) > 2):
-            day = match.args()[2]
-        else:
-            day = today() 
-
-        if(person and day):
-            await bot.api.send_text_message(room.room_id, f'Fetching assignments for {person} on {day}')
-            results = get_assignments(person, day)
-        else:
-            results = ['Oops.']
+    '''
+    # logger.debug(f'match {str(match)}')
+    if match.command('help'):
+        return 'help'
 
-        if len(results) < 3:
-            results = [f'No assignments found for {person} on {day}.']
+    if match.command('setup'):
+        result = Data().setup()
+        return result
 
-        for line in results:
+    if match.command('add'):
+        new = ' '.join(match.args()[1:])
+        result = Data().add_goal(new)
+        return result
 
-            await bot.api.send_text_message(
-                room.room_id, line)
+    if match.command('list'):
+        goals = Data().list_goals()
+        return goals
+
+    if match.command('add-task'):
+        result = Data().add_task(goal_id=goal_id, name=name)
+        return result
+
+    if match.command('print'):
+        goal_id = new = match.args()[1]
+        goal,tasks = Data().get_goal(id)
+
+        results = []
+        results.append(f' ## {goal}')
+        for task in tasks:
+            if(task.complete_date):
+                results.append(f' - [x] {task}')
+            else:
+                results.append(f' - [ ] {task}')
+    
+    return 'Ye flask must be load bearing or something.'
 
 
 @bot.listener.on_message_event
-async def chores(room, message):
-    match = botlib.MessageMatch(room, message, bot, '!chore')
+async def goals(room, message):
+    match = botlib.MessageMatch(room, message, bot, PREFIX)
 
     if not match.is_not_from_this_bot() and match.prefix():
         return
 
-    if match.command('list'):
-
-        await bot.api.send_text_message(
-                room.room_id, 'Listing chores...')
-
-        result = CHORES.list()
-        for item in result:
-            await bot.api.send_text_message(
-                room.room_id, item)
-
-        await bot.api.send_text_message(
-                room.room_id, '-- End of List --')
-    
-    if match.command('setup'):
-        await bot.api.send_text_message(
-                room.room_id, f'Doing chore setup...')
-        result = CHORES.setup()
-        result = await bot.api.send_text_message(
-                room.room_id, f'Result: {result}')
-
-
-    if match.command('add'):
-        new_chore = ' '.join(match.args()[1:])
-
-        await bot.api.send_text_message(
-                room.room_id, f'Adding chore...{new_chore}...')
-
-        result = CHORES.add(new_chore)
-        await bot.api.send_text_message(
-            room.room_id, result)
-
-
-
-    if match.command('check'):
-        chore_id = match.args()[1]
-
-        result = CHORES.check(chore_id)
-        await bot.api.send_text_message(
-            room.room_id, result)
-
-    if match.command('done'):
-        chore_id = match.args()[1]
-        result = CHORES.done(chore_id)
-        await bot.api.send_text_message(
-            room.room_id, result)
-
-    if match.command('undo'):
-        chore_id = match.args()[1]
-        result = CHORES.undo(chore_id)
-        await bot.api.send_text_message(
-            room.room_id, result)
-
-
-    if match.command('remove'):
-        chore_id = match.args()[1]
-        result = CHORES.remove(chore_id)
+    if match.prefix():
+        result = await do_goal(match)
         await bot.api.send_text_message(
             room.room_id, result)