Skip to content

Commit e1058ab

Browse files
committed
Comando para mostrar os eventos nos próximos 7 dias
1 parent b8955b4 commit e1058ab

2 files changed

Lines changed: 53 additions & 2 deletions

File tree

src/joker/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def Joker(settings):
3434
# Calendar commands
3535
app.job_queue.run_daily(calendar.pin_today_event, datetime.time(5, 0))
3636
app.add_handler(CommandHandler("quando", calendar.quando))
37+
app.add_handler(CommandHandler("semana", calendar.semana))
3738

3839
# Miscellaneous commands
3940
app.add_handler(CommandHandler("batima", misc.batima))

src/joker/commands/calendar.py

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
60110
async 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

Comments
 (0)