mirror of
https://github.com/lifegpc/pythonscript.git
synced 2026-06-12 12:28:57 +08:00
update editMessageText
This commit is contained in:
60
tdlib.py
60
tdlib.py
@@ -125,12 +125,37 @@ class ChatType(Enum):
|
|||||||
raise ValueError(f'Unknown value: {value}')
|
raise ValueError(f'Unknown value: {value}')
|
||||||
|
|
||||||
|
|
||||||
|
class TextParseMode(Enum):
|
||||||
|
HTML = 0
|
||||||
|
MarkDown = 1
|
||||||
|
|
||||||
|
def __iter__(self):
|
||||||
|
return self.to_dict().items().__iter__()
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
if self._value_ == 0:
|
||||||
|
return {"@type": "textParseModeHTML"}
|
||||||
|
elif self._value_ == 1:
|
||||||
|
return {"@type": "textParseModeMarkdown"}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _missing_(cls, value: object):
|
||||||
|
if isinstance(value, dict):
|
||||||
|
if value['@type'] == 'textParseModeHTML':
|
||||||
|
return cls(0)
|
||||||
|
elif value['@type'] == 'textParseModeMarkdown':
|
||||||
|
return cls(1)
|
||||||
|
raise ValueError(f'Unknown value: {value}')
|
||||||
|
|
||||||
|
|
||||||
def json_object_hook(value):
|
def json_object_hook(value):
|
||||||
try:
|
try:
|
||||||
if isinstance(value, dict):
|
if isinstance(value, dict):
|
||||||
if '@type' in value:
|
if '@type' in value:
|
||||||
if value['@type'].startswith('chatType'):
|
if value['@type'].startswith('chatType'):
|
||||||
return ChatType(value)
|
return ChatType(value)
|
||||||
|
elif value['@type'].startswith('textParseMode'):
|
||||||
|
return TextParseMode(value)
|
||||||
except Exception:
|
except Exception:
|
||||||
print_exc()
|
print_exc()
|
||||||
return value
|
return value
|
||||||
@@ -144,7 +169,7 @@ class TdLibJSONDecoder(JSONDecoder):
|
|||||||
|
|
||||||
class TdLibJSONEncoder(JSONEncoder):
|
class TdLibJSONEncoder(JSONEncoder):
|
||||||
def default(self, o):
|
def default(self, o):
|
||||||
if isinstance(o, ChatType):
|
if isinstance(o, (ChatType, TextParseMode)):
|
||||||
return dict(o)
|
return dict(o)
|
||||||
elif isinstance(o, bytes):
|
elif isinstance(o, bytes):
|
||||||
return b64encode(o).decode()
|
return b64encode(o).decode()
|
||||||
@@ -326,10 +351,18 @@ class TdLib:
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
async def editMessageText(self, chat_id: int, message_id: int, text: str,
|
async def editMessageText(self, chat_id: int, message_id: int, text: str,
|
||||||
entities=None,
|
parse_mode: TextParseMode = None, entities=None,
|
||||||
disable_web_page_preview: bool = False,
|
disable_web_page_preview: bool = False,
|
||||||
clear_draft: bool = False):
|
clear_draft: bool = False):
|
||||||
if entities is None:
|
if parse_mode is not None and entities is not None:
|
||||||
|
raise ValueError('Bot parse_mode and entities are not supported.')
|
||||||
|
if parse_mode is not None:
|
||||||
|
mes = await self.parseTextEntities(text, parse_mode)
|
||||||
|
if mes is None:
|
||||||
|
return None
|
||||||
|
entities = mes['entities']
|
||||||
|
text = mes['text']
|
||||||
|
elif entities is None:
|
||||||
entities = await self.getTextEntities(text)
|
entities = await self.getTextEntities(text)
|
||||||
if entities is None:
|
if entities is None:
|
||||||
return None
|
return None
|
||||||
@@ -452,6 +485,25 @@ class TdLib:
|
|||||||
else:
|
else:
|
||||||
raise ValueError("Unknown authorization_state", state)
|
raise ValueError("Unknown authorization_state", state)
|
||||||
|
|
||||||
|
async def parseMarkdown(self, text: str):
|
||||||
|
re = await self._send({"@type": "parseMarkdown", "text": text})
|
||||||
|
if re['@type'] == 'formattedText':
|
||||||
|
return re
|
||||||
|
else:
|
||||||
|
if re['@type'] == 'error':
|
||||||
|
print(f"{re['code']} {re['message']}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
async def parseTextEntities(self, text: str, parse_mode: TextParseMode):
|
||||||
|
re = await self._send({"@type": "parseTextEntities", "text": text,
|
||||||
|
"parse_mode": parse_mode})
|
||||||
|
if re['@type'] == 'formattedText':
|
||||||
|
return re
|
||||||
|
else:
|
||||||
|
if re['@type'] == 'error':
|
||||||
|
print(f"{re['code']} {re['message']}")
|
||||||
|
return None
|
||||||
|
|
||||||
async def receive(self, type: str = None):
|
async def receive(self, type: str = None):
|
||||||
while True:
|
while True:
|
||||||
if len(self._rel) > 0:
|
if len(self._rel) > 0:
|
||||||
@@ -474,7 +526,7 @@ class TdLib:
|
|||||||
if query is not None:
|
if query is not None:
|
||||||
d['query'] = query
|
d['query'] = query
|
||||||
if sender_chat_id is not None and sender_user_id is not None:
|
if sender_chat_id is not None and sender_user_id is not None:
|
||||||
raise ValueError('Both chat and user is supported.')
|
raise ValueError('Both chat and user is not supported.')
|
||||||
if sender_chat_id is not None:
|
if sender_chat_id is not None:
|
||||||
d['sender_id'] = {'@type': "messageSenderChat",
|
d['sender_id'] = {'@type': "messageSenderChat",
|
||||||
"chat_id": sender_chat_id}
|
"chat_id": sender_chat_id}
|
||||||
|
|||||||
Reference in New Issue
Block a user