]> us-delaporte.pagekite.me Git - matrix-goal-bot.git/blob - bot.py
Add task
[matrix-goal-bot.git] / bot.py
1 from datetime import datetime as dt
2 import logging
3 import os
4
5 import simplematrixbotlib as botlib
6
7 from goals.db import Data
8
9
10 SERVER = os.environ.get('MATRIX_SERVER')
11 BOT_NAME = os.environ.get('GOAL_BOT')
12 BOT_PWD = os.environ.get('GOAL_BOT_PWD')
13
14 DATE_FORMAT = '%Y-%m-%d'
15
16 def today():
17 return dt.now().strftime(DATE_FORMAT)
18
19 creds = botlib.Creds(SERVER, BOT_NAME, BOT_PWD)
20 bot = botlib.Bot(creds)
21 PREFIX = '!goal'
22
23 logger = logging.getLogger(__name__)
24 logging.basicConfig(filename='goals.log', encoding='utf-8', level=logging.DEBUG)
25 logging.getLogger('nio').setLevel(logging.WARNING)
26
27 async def do_goal(match):
28 '''
29 Bot help here?
30
31 '''
32 # logger.debug(f'match {str(match)}')
33 if match.command('help'):
34 return ['help']
35
36 if match.command('setup'):
37 result = Data().setup()
38 return [result]
39
40 if match.command('add'):
41 new = ' '.join(match.args()[1:])
42 result = Data().add_goal(new)
43 return [f'Goal added with id {result}']
44
45 if match.command('list'):
46 goals = Data().list_goals()
47 results = ['Goals list...']
48 for goal in goals:
49 results.append(str(goal))
50 return results
51
52 if match.command('add-task'):
53 goal_id = int(match.args()[1])
54 new = ' '.join(match.args()[2:])
55 result = Data().add_task(goal_id=goal_id, name=new)
56 return [f'Added task with id {result}']
57
58 if match.command('print'):
59 goal_id = int(match.args()[1])
60 logger.debug(f'Searching for goal {goal_id}...')
61 goal,tasks = Data().get_goal(goal_id)
62
63 results = []
64 results.append(f' ## {goal}')
65 for task in tasks:
66 if(task.complete_date):
67 results.append(f' - [x] {task}')
68 else:
69 results.append(f' - [ ] {task}')
70 return results
71
72 return 'Ye flask must be load bearing or something.'
73
74
75 @bot.listener.on_message_event
76 async def goals(room, message):
77 match = botlib.MessageMatch(room, message, bot, PREFIX)
78
79 if not match.is_not_from_this_bot() and match.prefix():
80 return
81
82 if match.prefix():
83 result_lines = await do_goal(match)
84 for line in result_lines:
85 await bot.api.send_text_message(
86 room.room_id, str(line))
87
88
89 bot.run()
90