mirror of
https://github.com/lifegpc/pythonscript.git
synced 2026-06-15 12:54:23 +08:00
Fix msginfo not works in new version of tdlib
This commit is contained in:
75
tdlib.py
75
tdlib.py
@@ -433,6 +433,77 @@ def parse_message_sending_state(d):
|
|||||||
raise ValueError(f'Unknown value: {d}')
|
raise ValueError(f'Unknown value: {d}')
|
||||||
|
|
||||||
|
|
||||||
|
class StickerType:
|
||||||
|
def __iter__(self):
|
||||||
|
return self.to_dict().items().__iter__()
|
||||||
|
|
||||||
|
def to_dict(self) -> dict:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __repr__(self) -> str:
|
||||||
|
d = self.to_dict()
|
||||||
|
if d is None:
|
||||||
|
m = ''
|
||||||
|
else:
|
||||||
|
typ = d['@type'][11:]
|
||||||
|
d.pop('@type')
|
||||||
|
m = f"Type={typ} Data={d}"
|
||||||
|
return f"<{self.__class__.__module__}.{self.__class__.__name__} {m}>"
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
d = self.to_dict()
|
||||||
|
if d is None:
|
||||||
|
return ''
|
||||||
|
return d['@type'][11:]
|
||||||
|
|
||||||
|
|
||||||
|
class StickerTypeStatic(StickerType):
|
||||||
|
def __init__(self, *_) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def to_dict(self) -> dict:
|
||||||
|
return {'@type': "stickerTypeStatic"}
|
||||||
|
|
||||||
|
|
||||||
|
class StickerTypeVideo(StickerType):
|
||||||
|
def __init__(self, *_) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def to_dict(self) -> dict:
|
||||||
|
return {'@type': "stickerTypeVideo"}
|
||||||
|
|
||||||
|
|
||||||
|
class StickerTypeAnimated(StickerType):
|
||||||
|
def __init__(self, *_) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def to_dict(self) -> dict:
|
||||||
|
return {'@type': "stickerTypeAnimated"}
|
||||||
|
|
||||||
|
|
||||||
|
class StickerTypeMask(StickerType):
|
||||||
|
def __init__(self, v = None) -> None:
|
||||||
|
if isinstance(v, dict):
|
||||||
|
if v['@type'] == 'stickerTypeMask':
|
||||||
|
self.mask_position = v['mask_position']
|
||||||
|
return
|
||||||
|
elif v is None:
|
||||||
|
return
|
||||||
|
raise ValueError(f'Unknown value: {v}')
|
||||||
|
|
||||||
|
def to_dict(self) -> dict:
|
||||||
|
return {'@type': "stickerTypeMask", 'mask_position': self.mask_position}
|
||||||
|
|
||||||
|
|
||||||
|
def parse_sticker_type(d):
|
||||||
|
if d['@type'].startswith('stickerType'):
|
||||||
|
typ = 'S' + d['@type'][1:]
|
||||||
|
gb = globals()
|
||||||
|
if typ in gb:
|
||||||
|
return globals()[typ](d)
|
||||||
|
raise ValueError(f'Unknown value: {d}')
|
||||||
|
|
||||||
|
|
||||||
class UpdateMessageSend:
|
class UpdateMessageSend:
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
return self.to_dict().items().__iter__()
|
return self.to_dict().items().__iter__()
|
||||||
@@ -547,6 +618,8 @@ def json_object_hook(value):
|
|||||||
value['set_id'] = int(value['set_id'])
|
value['set_id'] = int(value['set_id'])
|
||||||
elif value['@type'] == 'stickerSet':
|
elif value['@type'] == 'stickerSet':
|
||||||
value['id'] = int(value['id'])
|
value['id'] = int(value['id'])
|
||||||
|
elif value['@type'].startswith('stickerType'):
|
||||||
|
return parse_sticker_type(value)
|
||||||
except Exception:
|
except Exception:
|
||||||
print_exc()
|
print_exc()
|
||||||
return value
|
return value
|
||||||
@@ -560,7 +633,7 @@ class TdLibJSONDecoder(JSONDecoder):
|
|||||||
|
|
||||||
class TdLibJSONEncoder(JSONEncoder):
|
class TdLibJSONEncoder(JSONEncoder):
|
||||||
def default(self, o):
|
def default(self, o):
|
||||||
if isinstance(o, (ChatType, TextParseMode, MessageForwardOrigin, ChatList, MessageSendingState, UpdateMessageSend)): # noqa: E501
|
if isinstance(o, (ChatType, TextParseMode, MessageForwardOrigin, ChatList, MessageSendingState, UpdateMessageSend, StickerType)): # noqa: E501
|
||||||
return dict(o)
|
return dict(o)
|
||||||
elif isinstance(o, bytes):
|
elif isinstance(o, bytes):
|
||||||
return b64encode(o).decode()
|
return b64encode(o).decode()
|
||||||
|
|||||||
@@ -173,8 +173,12 @@ async def handle_message_info(lib: TdLib, mes):
|
|||||||
me += f"\nSticker Width: `{st['width']}`"
|
me += f"\nSticker Width: `{st['width']}`"
|
||||||
me += f"\nSticker Height: `{st['height']}`"
|
me += f"\nSticker Height: `{st['height']}`"
|
||||||
me += f"\nSticker Emoji: `{st['emoji']}`"
|
me += f"\nSticker Emoji: `{st['emoji']}`"
|
||||||
me += f"\nAnimated Sticker: `{st['is_animated']}`"
|
if 'is_animated' in st:
|
||||||
me += f"\nMask Sticker: `{st['is_mask']}`"
|
me += f"\nAnimated Sticker: `{st['is_animated']}`"
|
||||||
|
if 'is_mask' in st:
|
||||||
|
me += f"\nMask Sticker: `{st['is_mask']}`"
|
||||||
|
if 'type' in st:
|
||||||
|
me += f"\nSticker Type: `{repr(st['type'])}`"
|
||||||
if 'sticker' in st and st['sticker'] is not None:
|
if 'sticker' in st and st['sticker'] is not None:
|
||||||
me += "\nSticker File Info:"
|
me += "\nSticker File Info:"
|
||||||
me += "\n" + generateFileInfo(st['sticker'])
|
me += "\n" + generateFileInfo(st['sticker'])
|
||||||
|
|||||||
Reference in New Issue
Block a user