Matrix notifier for questions and announcements
This is similar to the Telegram bot that was recently upstreamed. We use Matrix for our internal communications, so this basically has the same functionality but for Matrix. I think this is likely to be valuable to others, seeing as how Matrix has (at least at some point) been used for official IOI tasks.
Our implementation (https://github.com/e-i-o/cms/commit/32f90fce305e0d553e73f510716d92c3997f10f1) is like one of the old Telegram bot prototypes, in that it's write-only and lives directly in the CWS process. It would probably be possible to make it read-write, allowing to reply directly from matrix, but it would be a lot more effort and probably necessitate pulling in a matrix client SDK. It could also be moved to a separate Service while remaining write-only, which addresses some concerns I saw regarding the old telegram bot (means that CWS doesn't need to make web requests).
Having this in CWS is definitely a no-go.
A write-only service would IMO be valuable, although a read+write one would also be interesting.
It would probably make sense to re-use the recently added TelegramBot.py, maybe renaming it to something like CommunicationBot.py for clarity and making it agnostic of the actual messaging system.
reading TelegramBot.py as it currently is, i feel like that is quite telegram-specific still, i don't know if there's much code we could reuse there.
also, it notices new announcements/questions by just querying every question and announcement in the DB once a second, which feels a little ugly to me, but i suppose might work a bit more reliably than only doing notifications over rpc.