|
@@ -4,7 +4,14 @@ from datetime import datetime
|
|
|
from collections import namedtuple
|
|
|
|
|
|
from telethon.utils import get_display_name
|
|
|
-from telethon.tl.types import MessageEntityBold, MessageEntityItalic, MessageEntityStrike, MessageEntityCode
|
|
|
+from telethon.tl.types import (
|
|
|
+ MessageEntityBold,
|
|
|
+ MessageEntityItalic,
|
|
|
+ MessageEntityStrike,
|
|
|
+ MessageEntityCode,
|
|
|
+ MessageEntityPre,
|
|
|
+ MessageEntitySpoiler
|
|
|
+)
|
|
|
|
|
|
Command = namedtuple(
|
|
|
'Command',
|
|
@@ -137,14 +144,21 @@ DELIMITERS = {
|
|
|
MessageEntityItalic: '__',
|
|
|
MessageEntityStrike: '~~',
|
|
|
MessageEntityCode: '`',
|
|
|
+ MessageEntityPre: '`',
|
|
|
}
|
|
|
|
|
|
class LookupTable:
|
|
|
def __init__(self):
|
|
|
self._start = {}
|
|
|
self._end = {}
|
|
|
+ self._spoiler = []
|
|
|
|
|
|
def insert(self, entity):
|
|
|
+ if type(entity) is MessageEntitySpoiler:
|
|
|
+ self._spoiler.extend(range(entity.offset, entity.offset + entity.length))
|
|
|
+
|
|
|
+ return
|
|
|
+
|
|
|
delimiter = DELIMITERS.get(type(entity))
|
|
|
if not delimiter:
|
|
|
return
|
|
@@ -172,12 +186,15 @@ class LookupTable:
|
|
|
text = list(text) + ['']
|
|
|
result = ''
|
|
|
|
|
|
- for position, character in zip(range(len(text)), text):
|
|
|
+ for position, character in zip(range(len(text)), text):
|
|
|
delimiter = self._lookup(position)
|
|
|
if delimiter:
|
|
|
result += delimiter
|
|
|
|
|
|
- result += character
|
|
|
+ if position in self._spoiler:
|
|
|
+ result += '█'
|
|
|
+ else:
|
|
|
+ result += character
|
|
|
|
|
|
return result
|
|
|
|