Make .get_input_user faster when the right type is given

This commit is contained in:
Lonami Exo 2017-06-16 10:01:05 +02:00
parent 279ee81bc3
commit e7b0c06ca5
2 changed files with 5 additions and 3 deletions

View File

@ -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):

View File

@ -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