fix: use room_messages API for /messages endpoint (nio rooms have no timeline attr)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Christian Gick
2026-03-24 16:51:12 +02:00
parent 8350a0cb1f
commit e658f3d2ac

25
bot.py
View File

@@ -4118,18 +4118,21 @@ class Bot:
room = self.client.rooms.get(room_id) room = self.client.rooms.get(room_id)
if not room: if not room:
return web.json_response({'error': 'room not found (bot not joined?)'}, status=404) return web.json_response({'error': 'room not found (bot not joined?)'}, status=404)
# Use room_messages API to fetch and decrypt
resp = await self.client.room_messages(room_id, room.prev_batch or '', limit=limit)
messages = [] messages = []
for event in room.timeline[-limit:]: if hasattr(resp, 'chunk'):
msg = { for event in reversed(resp.chunk):
'sender': event.sender, msg = {
'timestamp': getattr(event, 'server_timestamp', 0), 'sender': event.sender,
'type': type(event).__name__, 'timestamp': getattr(event, 'server_timestamp', 0),
} 'type': type(event).__name__,
if hasattr(event, 'body'): }
msg['body'] = event.body if hasattr(event, 'body'):
elif hasattr(event, 'source'): msg['body'] = event.body
msg['body'] = event.source.get('content', {}).get('body', '[encrypted/unknown]') elif hasattr(event, 'source'):
messages.append(msg) msg['body'] = event.source.get('content', {}).get('body', '[encrypted/unknown]')
messages.append(msg)
return web.json_response({'messages': messages}) return web.json_response({'messages': messages})
except Exception as e: except Exception as e:
logger.error("Messages error: %s", e) logger.error("Messages error: %s", e)