Skip to content

feat: post all livestream URLs upfront instead of per-session#376

Merged
NMertsch merged 10 commits into
EuroPython:mainfrom
AmaanShikalgar:post-livestream-urls-earlier
Jul 21, 2026
Merged

feat: post all livestream URLs upfront instead of per-session#376
NMertsch merged 10 commits into
EuroPython:mainfrom
AmaanShikalgar:post-livestream-urls-earlier

Conversation

@AmaanShikalgar

Copy link
Copy Markdown
Contributor

Closes #375

Posts all three days' livestream URLs upfront in each room's channel topic
(on bot startup), instead of only updating the topic with the current
day's URL right before that day's first session starts. This matches the
format requested in the issue:

Stream Wednesday: [URL]
Stream Thursday: [URL]
Stream Friday: [URL]

The old per-session topic overwrite in notify_sessions has been removed,
since it would otherwise regress the topic back to a single URL.

Testing: ran pytest, ruff format, and ruff check locally on Windows.
71/72 tests pass. The one failure (test_pretix_connector.py::test_cache)
is pre-existing and unrelated — I confirmed it fails identically with my
changes stashed out, so it looks like a Windows-specific encoding issue
in the Pretix cache loading, unconnected to this PR.

AmaanShikalgar and others added 10 commits July 19, 2026 18:56
This method is analogous to `notify_sessions`, so it should be located next to it, instead of between `on_ready` and `cog_load`.
This method is analogous to `notify_sessions`, so it should be named similarly.
Like the schedule, the livestream URLs can change while the program is running. That's why we fetch them regularly.
So the task `notify_livestreams` should run regularly, like `notify_sessions`.
The livestreams are fetched regularly (every 5 minutes). Let's just wait for the regular fetch instead of triggering a second one. Also, it might be that there really are no livestreams to fetch.
This change is quite pedantic, but I want to get this information from the livestream_connector exactly once. Otherwise, it could (theoretically) change between the first and second access.
Before adding this feature, the format was `Livestream: [YouTube](<URL>)`, using Markdown to display a lable instead of the plain URL. Let's keep it like that and only add the day.
`date.strftime('%A')` returns the "Weekday as locale’s full name" (quote from https://docs.python.org/3/library/datetime.html#format-codes).
We always want English output, even if the bot host is configured in another locale.
This is necessary for the next step: Only sending livestream URLs a day in advance.
(A cleaner approach would be to extract the 'current time' logic into a separate service, but this approach doesn't cause much chaos, so it's okay.)
Also add the headline 'Channel for room {room_name}'.
@NMertsch

Copy link
Copy Markdown
Contributor

Hi @AmaanShikalgar, thank you for this contribution! I made a few changes to make it look and behave the way I imagined. The ticket was quite vague, so you could not know about most of these.
In case you are interested, I added detailed explanations in the commit messages 🙂

This is the new behavior:

  • If the livestream dates and URLs change, the program will adapt the room topics accordingly.
  • Until the day before the first livestream, the program will set the room topics to "Channel for room {room_name}".
  • The day before the first livestream, it will list all livestreams with the label 'YouTube' instead of the full URL. This format was also the previous format.
image

PS: Please don't ping open-source maintainers if they don't respond immediately. This is my hobby, not my job.

@NMertsch
NMertsch merged commit fe5e47c into EuroPython:main Jul 21, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Post room livestream URLs earlier

2 participants