_set_presence was catching all exceptions and logging them at DEBUG level, which meant connection failures (bad token, unreachable homeserver, etc.) were completely hidden at the default INFO log level. The bot would appear to start normally but never actually go online. Now the initial presence call in start_presence() propagates errors so startup fails visibly if the Matrix connection doesn't work. The background heartbeat loop still catches errors but logs them at WARNING. https://claude.ai/code/session_019ANRdyL2jfi7ysWhqN4PfD