@@ -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' )
0 commit comments