From c040c0d59c1fd3814bf0fd92c70896e3d00a851e Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sun, 29 Apr 2018 01:19:12 +0300 Subject: [PATCH] Cut messages over 4096 characters long. Fixes #117 --- mautrix_telegram/portal.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/mautrix_telegram/portal.py b/mautrix_telegram/portal.py index 86d2efe8..ed99df56 100644 --- a/mautrix_telegram/portal.py +++ b/mautrix_telegram/portal.py @@ -665,6 +665,18 @@ class Portal: async def _handle_matrix_text(self, sender_id, event_id, space, client, message, reply_to): message, entities = await self._matrix_event_to_entities(client, message) + if len(message) > 4096: + message = message[0:4082] + " [message cut]" + new_entities = [] + for entity in entities: + if entity.offset > 4082: + continue + if entity.offset + entity.length > 4082: + entity.length = 4082 - entity.offset + new_entities.append(entity) + new_entities.append(MessageEntityItalic(4082, len(" [message cut]"))) + entities = new_entities + lock = self.require_send_lock(sender_id) async with lock: response = await client.send_message(self.peer, message, entities=entities, reply_to=reply_to) @@ -703,7 +715,7 @@ class Portal: lock = self.require_send_lock(sender_id) async with lock: response = await client.send_media(self.peer, media, reply_to=reply_to, caption=message, - entities=entities) + entities=entities) self._add_telegram_message_to_db(event_id, space, response) def _add_telegram_message_to_db(self, event_id, space, response):