@@ -26,11 +26,20 @@ def get_events(when=""):
2626
2727 if when == "future" :
2828 events = [
29- event for event in all_events if (event .begin .date () > datetime .date .today ()) or (event .begin .date () == datetime .date .today () and event .begin .time () >= datetime .datetime .now ().time ())
29+ event
30+ for event in all_events
31+ if (event .begin .date () > datetime .date .today ())
32+ or (
33+ event .begin .date () == datetime .date .today ()
34+ and event .begin .time () >= datetime .datetime .now ().time ()
35+ )
3036 ]
3137 elif when == "today" :
3238 events = [
33- event for event in all_events if event .begin .date () == datetime .date .today () and event .begin .time () >= datetime .datetime .now ().time ()
39+ event
40+ for event in all_events
41+ if event .begin .date () == datetime .date .today ()
42+ and event .begin .time () >= datetime .datetime .now ().time ()
3443 ]
3544 else :
3645 events = all_events
@@ -57,6 +66,47 @@ async def quando(update, context):
5766 )
5867
5968
69+ async def semana (update , context ):
70+ today = datetime .date .today ()
71+ future_events = get_events ("future" )
72+ end_of_week = today + datetime .timedelta (days = 7 )
73+
74+ week_events = []
75+ for event in future_events :
76+ if event .begin .date () > end_of_week :
77+ continue
78+ week_events .append (
79+ {
80+ "title" : event .name ,
81+ "date" : event .begin .strftime ("%d/%m/%Y" ),
82+ "url" : event .url ,
83+ }
84+ )
85+
86+ if not week_events :
87+ message = "Não existe nenhum evento agendado nos próximos 7 dias 😞"
88+ else :
89+ week_events = sorted (week_events , key = lambda e : e ["date" ])
90+ events_details = "\n " .join (
91+ [
92+ f"- { event ['date' ]} - \" { event ['title' ]} \" ({ event ['url' ]} )"
93+ for event in week_events
94+ ]
95+ )
96+ message = f"""**Agenda para os próximos 7 dias:**
97+
98+ { events_details }
99+
100+ Agenda completa em https://eventos.lhc.net.br/"""
101+
102+ await context .bot .send_message (
103+ update .message .chat_id ,
104+ text = message ,
105+ parse_mode = ParseMode .MARKDOWN ,
106+ disable_web_page_preview = True ,
107+ )
108+
109+
60110async def pin_today_event (update , context ):
61111 today_events = get_events ("today" )
62112 today_event = min (today_events , key = lambda e : e .begin )
0 commit comments