diff --git a/telethon/utils.py b/telethon/utils.py index 917eb85b..d94734a2 100644 --- a/telethon/utils.py +++ b/telethon/utils.py @@ -52,9 +52,7 @@ def get_extension(media): def get_input_peer(entity): """Gets the input peer for the given "entity" (user, chat or channel). A ValueError is raised if the given entity isn't a supported type.""" - if any(isinstance(entity, c) for c in ( - InputPeerUser, InputPeerChat, InputPeerChannel, - InputPeerSelf, InputPeerEmpty)): + if type(entity).subclass_of_id == 0xc91c90b6: # crc32('InputUser') return entity if isinstance(entity, User): diff --git a/telethon_generator/tl_generator.py b/telethon_generator/tl_generator.py index 042c29dc..8ccc4d65 100755 --- a/telethon_generator/tl_generator.py +++ b/telethon_generator/tl_generator.py @@ -2,6 +2,7 @@ import os import re import shutil +from zlib import crc32 from collections import defaultdict try: @@ -214,6 +215,9 @@ class TLGenerator: # Class-level variable to store its constructor ID builder.writeln("# Telegram's constructor (U)ID for this class") builder.writeln('constructor_id = {}'.format(hex(tlobject.id))) + builder.writeln("# Also the ID of its resulting type for fast checks") + builder.writeln('subclass_of_id = {}'.format( + hex(crc32(tlobject.result.encode('ascii'))))) builder.writeln() # Flag arguments must go last