Skip to content

Commit 75f99fa

Browse files
authored
Support tdlib > 1.8.5 #348 (#361)
1 parent f121d25 commit 75f99fa

File tree

2 files changed

+42
-35
lines changed

2 files changed

+42
-35
lines changed

telegram/client.py

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@ def __init__(
117117
raise ValueError('You must provide bot_token or phone')
118118

119119
self._database_encryption_key = database_encryption_key
120+
if isinstance(self._database_encryption_key, str):
121+
self._database_encryption_key = self._database_encryption_key.encode()
122+
123+
self._database_encryption_key = base64.b64encode(self._database_encryption_key).decode()
120124

121125
if not files_directory:
122126
hasher = hashlib.md5()
@@ -723,37 +727,36 @@ def _set_initial_params(self) -> AsyncResult:
723727
self.files_directory,
724728
self.use_test_dc,
725729
)
726-
data = {
727-
# todo: params
730+
731+
parameters = {
732+
'use_test_dc': self.use_test_dc,
733+
'api_id': self.api_id,
734+
'api_hash': self.api_hash,
735+
'device_model': self.device_model,
736+
'system_version': self.system_version,
737+
'application_version': self.application_version,
738+
'system_language_code': self.system_language_code,
739+
'database_directory': os.path.join(self.files_directory, 'database'),
740+
'use_message_database': self.use_message_database,
741+
'files_directory': os.path.join(self.files_directory, 'files'),
742+
'use_secret_chats': self.use_secret_chats,
743+
}
744+
data: Dict[str, typing.Any] = {
728745
'@type': 'setTdlibParameters',
729-
'parameters': {
730-
'use_test_dc': self.use_test_dc,
731-
'api_id': self.api_id,
732-
'api_hash': self.api_hash,
733-
'device_model': self.device_model,
734-
'system_version': self.system_version,
735-
'application_version': self.application_version,
736-
'system_language_code': self.system_language_code,
737-
'database_directory': os.path.join(self.files_directory, 'database'),
738-
'use_message_database': self.use_message_database,
739-
'files_directory': os.path.join(self.files_directory, 'files'),
740-
'use_secret_chats': self.use_secret_chats,
741-
},
746+
'parameters': parameters,
747+
# since tdlib 1.8.6
748+
'database_encryption_key': self._database_encryption_key,
749+
**parameters,
742750
}
743751

744752
return self._send_data(data, result_id='updateAuthorizationState')
745753

746754
def _send_encryption_key(self) -> AsyncResult:
747755
logger.info('Sending encryption key')
748756

749-
key = self._database_encryption_key
750-
751-
if isinstance(key, str):
752-
key = key.encode()
753-
754757
data = {
755758
'@type': 'checkDatabaseEncryptionKey',
756-
'encryption_key': base64.b64encode(key).decode(),
759+
'encryption_key': self._database_encryption_key,
757760
}
758761

759762
return self._send_data(data, result_id='updateAuthorizationState')

tests/test_telegram_methods.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -311,25 +311,29 @@ def test_get_chat_history(self, telegram):
311311

312312
telegram._tdjson.send.assert_called_once_with(exp_data)
313313

314-
def test_set_initial_params(self, telegram):
314+
def test_set_initial_params(self):
315+
telegram = _get_telegram_instance(database_encryption_key='key')
315316
async_result = telegram._set_initial_params()
316317
phone_md5 = '69560384b84c896952ef20352fbce705'
317318

319+
parameters = {
320+
'use_test_dc': False,
321+
'api_id': API_ID,
322+
'api_hash': API_HASH,
323+
'device_model': 'python-telegram',
324+
'system_version': 'unknown',
325+
'application_version': VERSION,
326+
'system_language_code': 'en',
327+
'database_directory': f'/tmp/.tdlib_files/{phone_md5}/database',
328+
'use_message_database': True,
329+
'files_directory': f'/tmp/.tdlib_files/{phone_md5}/files',
330+
'use_secret_chats': True,
331+
}
318332
exp_data = {
319333
'@type': 'setTdlibParameters',
320-
'parameters': {
321-
'use_test_dc': False,
322-
'api_id': API_ID,
323-
'api_hash': API_HASH,
324-
'device_model': 'python-telegram',
325-
'system_version': 'unknown',
326-
'application_version': VERSION,
327-
'system_language_code': 'en',
328-
'database_directory': f'/tmp/.tdlib_files/{phone_md5}/database',
329-
'use_message_database': True,
330-
'files_directory': f'/tmp/.tdlib_files/{phone_md5}/files',
331-
'use_secret_chats': True,
332-
},
334+
'parameters': parameters,
335+
**parameters,
336+
'database_encryption_key': 'a2V5',
333337
'@extra': {'request_id': 'updateAuthorizationState'},
334338
}
335339

0 commit comments

Comments
 (0)