diff --git a/bot.py b/bot.py index a4cdd3c..2d48f94 100644 --- a/bot.py +++ b/bot.py @@ -3759,12 +3759,20 @@ class Bot: for user_id, device_id in targets: # Get the device from the device store - device = olm.device_store.get(user_id, device_id) if hasattr(olm, 'device_store') else None + # nio DeviceStore[user_id] returns Dict[str, OlmDevice] + device = None + try: + device = olm.device_store[user_id].get(device_id) + except KeyError: + pass if not device: # Need to fetch device keys first logger.info("Fetching device keys for %s/%s", user_id, device_id) await self.client.keys_query() - device = olm.device_store.get(user_id, device_id) if hasattr(olm, 'device_store') else None + try: + device = olm.device_store[user_id].get(device_id) + except KeyError: + pass if not device: logger.warning("Device %s/%s not found in store, sending unencrypted", user_id, device_id) @@ -3776,7 +3784,7 @@ class Bot: if not session: # Claim one-time key and create session logger.info("Claiming one-time key for %s/%s", user_id, device_id) - claim_resp = await self.client.keys_claim(user_id, device_id) + await self.client.keys_claim({user_id: [device_id]}) session = olm.session_store.get(device.curve25519) if session: