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)
if not room:
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 = []
for event in room.timeline[-limit:]:
msg = {
'sender': event.sender,
'timestamp': getattr(event, 'server_timestamp', 0),
'type': type(event).__name__,
}
if hasattr(event, 'body'):
msg['body'] = event.body
elif hasattr(event, 'source'):
msg['body'] = event.source.get('content', {}).get('body', '[encrypted/unknown]')
messages.append(msg)
if hasattr(resp, 'chunk'):
for event in reversed(resp.chunk):
msg = {
'sender': event.sender,
'timestamp': getattr(event, 'server_timestamp', 0),
'type': type(event).__name__,
}
if hasattr(event, 'body'):
msg['body'] = event.body
elif hasattr(event, 'source'):
msg['body'] = event.source.get('content', {}).get('body', '[encrypted/unknown]')
messages.append(msg)
return web.json_response({'messages': messages})
except Exception as e:
logger.error("Messages error: %s", e)