diff --git a/bot.py b/bot.py index 5f645ff..f92be70 100644 --- a/bot.py +++ b/bot.py @@ -49,7 +49,7 @@ from cron import CronScheduler from device_trust import CrossSignedOnlyPolicy from cross_signing import CrossSigningManager -BOT_DEVICE_ID = "AIBOT" +BOT_DEVICE_ID = os.environ.get("BOT_DEVICE_ID", "AIBOT") # Overridden at login with actual nio device_id CALL_MEMBER_TYPE = "org.matrix.msc3401.call.member" ENCRYPTION_KEYS_TYPE = "io.element.call.encryption_keys" @@ -1314,6 +1314,9 @@ class Bot: ) self.client.load_store() logger.info("Restored session as %s (device %s)", creds["user_id"], creds["device_id"]) + # Use actual device ID for call.member events so to-device keys arrive correctly + global BOT_DEVICE_ID + BOT_DEVICE_ID = creds["device_id"] else: resp = await self.client.login(BOT_PASS, device_name="ai-voice-bot") if not isinstance(resp, LoginResponse): @@ -1327,6 +1330,8 @@ class Bot: "access_token": resp.access_token, }, f) logger.info("Logged in as %s (device %s) — credentials saved", resp.user_id, resp.device_id) + # Use actual device ID for call.member events + BOT_DEVICE_ID = resp.device_id if self.client.should_upload_keys: await self.client.keys_upload()