mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-28 20:33:45 +03:00
Detect current MTProtoLayer automatically
This commit is contained in:
parent
51a531225f
commit
6642f73a3d
|
@ -27,11 +27,11 @@ def bytes_to_string(byte_count):
|
|||
|
||||
|
||||
class InteractiveTelegramClient(TelegramClient):
|
||||
def __init__(self, session_user_id, user_phone, layer, api_id, api_hash):
|
||||
def __init__(self, session_user_id, user_phone, api_id, api_hash):
|
||||
print_title('Initialization')
|
||||
|
||||
print('Initializing interactive example...')
|
||||
super().__init__(session_user_id, layer, api_id, api_hash)
|
||||
super().__init__(session_user_id, api_id, api_hash)
|
||||
|
||||
# Store all the found media in memory here,
|
||||
# so it can be downloaded if the user wants
|
||||
|
|
|
@ -29,21 +29,20 @@ import telethon.network.authenticator as authenticator
|
|||
from telethon.errors import *
|
||||
from telethon.network import MtProtoSender, TcpTransport
|
||||
from telethon.parser.markdown_parser import parse_message_entities
|
||||
from telethon.tl.all_tlobjects import layer
|
||||
|
||||
|
||||
class TelegramClient:
|
||||
|
||||
# region Initialization
|
||||
|
||||
def __init__(self, session_user_id, layer, api_id, api_hash):
|
||||
def __init__(self, session_user_id, api_id, api_hash):
|
||||
if api_id is None or api_hash is None:
|
||||
raise PermissionError('Your API ID or Hash are invalid. Please read "Requirements" on README.md')
|
||||
|
||||
self.api_id = api_id
|
||||
self.api_hash = api_hash
|
||||
|
||||
self.layer = layer
|
||||
|
||||
self.session = Session.try_load_or_create_new(session_user_id)
|
||||
self.transport = TcpTransport(self.session.server_address, self.session.port)
|
||||
|
||||
|
@ -78,7 +77,7 @@ class TelegramClient:
|
|||
lang_code='en',
|
||||
query=GetConfigRequest())
|
||||
|
||||
result = self.invoke(InvokeWithLayerRequest(layer=self.layer, query=query))
|
||||
result = self.invoke(InvokeWithLayerRequest(layer=layer, query=query))
|
||||
|
||||
# We're only interested in the DC options,
|
||||
# although many other options are available!
|
||||
|
|
|
@ -29,3 +29,13 @@ class TLParser:
|
|||
|
||||
else:
|
||||
yield TLObject.from_tl(line, is_function)
|
||||
|
||||
@staticmethod
|
||||
def find_layer(file_path):
|
||||
"""Finds the layer used on the specified scheme.tl file"""
|
||||
layer_regex = re.compile(r'^//\s*LAYER\s*(\d+)$')
|
||||
with open(file_path, encoding='utf-8') as file:
|
||||
for line in file:
|
||||
match = layer_regex.match(line)
|
||||
if match:
|
||||
return int(match.group(1))
|
||||
|
|
|
@ -167,6 +167,10 @@ class TLGenerator:
|
|||
builder.writeln('import {}'.format(TLGenerator.get_full_file_name(tlobject)))
|
||||
builder.writeln()
|
||||
|
||||
# Create a variable to indicate which layer this is
|
||||
builder.writeln('layer = {} # Current generated layer'.format(TLParser.find_layer(scheme_file)))
|
||||
builder.writeln()
|
||||
|
||||
# Then create the dictionary containing constructor_id: class
|
||||
builder.writeln('tlobjects = {')
|
||||
builder.current_indent += 1
|
||||
|
|
|
@ -25,7 +25,6 @@ if __name__ == '__main__':
|
|||
client = InteractiveTelegramClient(
|
||||
session_user_id=settings.get('session_name', 'anonymous'),
|
||||
user_phone=str(settings['user_phone']),
|
||||
layer=55,
|
||||
api_id=settings['api_id'],
|
||||
api_hash=settings['api_hash'])
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user