2929class AuthMixin (ClientProtocol ):
3030 def _check_phone (self ) -> bool :
3131 return bool (re .match (PHONE_REGEX , self .phone ))
32-
33- async def request_code (self , phone : str , language : str = "ru" ) -> str :
32+
33+ def _split_phone (self , phone : str ) -> str :
34+ placeholder = ""
35+ result = ""
36+ digit_index = 0
37+ if phone .startswith ("+7" ):
38+ result = "+7 "
39+ placeholder = "000 000 00 00"
40+ if phone .startswith ("+375" ):
41+ result = "+375 "
42+ placeholder = "00 000 00 00"
43+ if phone .startswith ("+994" ):
44+ result = "+994 "
45+ placeholder = "00 000 00 00"
46+ if phone .startswith ("+374" ):
47+ result = "+374 "
48+ placeholder = "00 000 000"
49+ if phone .startswith ("+995" ):
50+ result = "+995 "
51+ placeholder = "000 00 00 00"
52+ if phone .startswith ("+996" ):
53+ result = "+996 "
54+ placeholder = "000 000 000"
55+ if phone .startswith ("+373" ):
56+ result = "+373 "
57+ placeholder = "0000 0000"
58+ if phone .startswith ("+992" ):
59+ result = "+992 "
60+ placeholder = "00 000 0000"
61+ if phone .startswith ("+998" ):
62+ result = "+998 "
63+ placeholder = "00 000 00 00"
64+ phone = phone [len (result )- 1 :]
65+ for char in placeholder :
66+ if char == "0" and digit_index < len (phone ):
67+ result += phone [digit_index ]
68+ digit_index += 1
69+ elif char == " " :
70+ result += " "
71+ return result
72+
73+ async def request_code (self , phone : str ) -> str :
3474 """
3575 Запрашивает код аутентификации для указанного номера телефона и возвращает временный токен.
3676
@@ -39,8 +79,6 @@ async def request_code(self, phone: str, language: str = "ru") -> str:
3979
4080 :param phone: Номер телефона в международном формате.
4181 :type phone: str
42- :param language: Язык для сообщения с кодом. По умолчанию "ru".
43- :type language: str
4482 :return: Временный токен для дальнейшей аутентификации.
4583 :rtype: str
4684 :raises ValueError: Если полученные данные имеют неверный формат.
@@ -52,7 +90,7 @@ async def request_code(self, phone: str, language: str = "ru") -> str:
5290 self .logger .info ("Requesting auth code" )
5391
5492 payload = RequestCodePayload (
55- phone = phone , type = AuthType .START_AUTH , language = language
93+ phone = self . _split_phone ( phone ) , type = AuthType .START_AUTH
5694 ).model_dump (by_alias = True )
5795
5896 data = await self ._send_and_wait (opcode = Opcode .AUTH_REQUEST , payload = payload )
@@ -72,14 +110,12 @@ async def request_code(self, phone: str, language: str = "ru") -> str:
72110 self .logger .error ("Invalid payload data received" )
73111 raise ValueError ("Invalid payload data received" )
74112
75- async def resend_code (self , phone : str , language : str = "ru" ) -> str :
113+ async def resend_code (self , phone : str ) -> str :
76114 """
77115 Повторно запрашивает код аутентификации для указанного номера телефона и возвращает временный токен.
78116
79117 :param phone: Номер телефона в международном формате.
80118 :type phone: str
81- :param language: Язык для сообщения с кодом. По умолчанию "ru".
82- :type language: str
83119 :return: Временный токен для дальнейшей аутентификации.
84120 :rtype: str
85121 :raises ValueError: Если полученные данные имеют неверный формат.
@@ -88,7 +124,7 @@ async def resend_code(self, phone: str, language: str = "ru") -> str:
88124 self .logger .info ("Resending auth code" )
89125
90126 payload = RequestCodePayload (
91- phone = phone , type = AuthType .RESEND , language = language
127+ phone = self . _split_phone ( phone ) , type = AuthType .RESEND
92128 ).model_dump (by_alias = True )
93129
94130 data = await self ._send_and_wait (opcode = Opcode .AUTH_REQUEST , payload = payload )
0 commit comments