
    h8                     :   d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlZd dlmZ d dlmZ d dlmZ d d	lmZmZmZmZmZmZmZ d d
lmZ d dlmZmZm Z m!Z! ddl"m#Z#m$Z$  ej%        e&          Z' G d d          Z( G d d          Z)dS )    N)datetime	timedelta)sha1)BytesIO)ClassVar)raw)
Connection)mtproto)AuthKeyDuplicatedBadMsgNotification	FloodWaitInternalServerErrorRPCErrorSecurityCheckMismatchServiceUnavailable)layer)FutureSaltsIntMsgContainerTLObject   )
MsgFactoryMsgIdc                       e Zd Zd ZdS )Resultc                 D    d | _         t          j                    | _        d S )N)valueasyncioEventeventselfs    Y/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/hydrogram/session/session.py__init__zResult.__init__4   s    
]__


    N)__name__
__module____qualname__r$    r%   r#   r   r   3   s#        % % % % %r%   r   c                       e Zd ZU dZdZdZdZdZdZdZ	 e
d          Zddd	d
Zeed<   	 	 d%dddededededefdZd Zd Zd Zd Zd Zd ZdefdededefdZeeefd ed!eded"efd#Zd$S )&Session      
      i  )secondszauth key not foundztransport floodz
invalid DC)i  i  i  TRANSPORT_ERRORSFclientzhydrogram.Clientdc_idauth_key	test_modeis_mediais_cdnc                 &   || _         || _        || _        || _        || _        || _        d | _        t          |                                          dd          | _	        t          j        d          | _        t                      | _        d| _        t!                      | _        i | _        g | _        d | _        t+          j                    | _        d | _        t+          j                    | _        t+          j                    | _        d | _        d S )Ni   r   )r2   r3   r4   r5   r6   r7   
connectionr   digestauth_key_idosurandom
session_idr   msg_factorysaltsetpending_acksresultsstored_msg_ids	ping_taskr   r   ping_task_event	recv_task
is_startedget_event_looplooplast_reconnect_attempt)r"   r2   r3   r4   r5   r6   r7   s          r#   r$   zSession.__init__I   s     
 " >>00222337*Q--%<<	EE &}!-//*,,	&*###r%   c                 F  K   	 t          | j        | j        | j        j        | j        j        | j                  | _        	 | j                                         d {V  | j	        
                    |                                           | _        |                     t          j                            d          | j                   d {V  | j        s|                     t          j                            t(          t          j                            | j        j                                         d {V | j        j        | j        j        | j        j        | j        j        | j        j        dt          j        j                                                            | j                   d {V  | j	        
                    |                                           | _        t@          !                    dt(                     t@          !                    d	| j        j        | j        j                   t@          !                    d
| j        j        | j        j                   n# tD          $ r!}| #                                 d {V  |d }~wtH          tJ          f$ r | #                                 d {V  Y n-tL          $ r!}| #                                 d {V  |d }~ww xY w| j'        (                                 t@          !                    d           d S )NTr   )ping_idtimeout )api_idapp_versiondevice_modelsystem_versionsystem_lang_code	lang_code	lang_packquery)r   rY   zSession initialized: Layer %szDevice: %s - %szSystem: %s (%s)zSession started))r	   r3   r5   r2   ipv6proxyr6   r:   connectrK   create_taskrecv_workerrH   sendr   	functionsPingSTART_TIMEOUTr7   InvokeWithLayerr   InitConnectionstoragerR   rS   rT   rU   rW   help	GetConfigping_workerrF   loginfor   stopOSErrorr   	ExceptionrI   rB   r"   es     r#   startzSession.starts   s#     0	(
 ! DO'o--/////////!%!6!6t7G7G7I7I!J!Jii 2 21 2 = =tGYiZZZZZZZZZ{ ))55"'"%-">">-1[-@-G-G-I-I'I'I'I'I'I'I,0K,C-1[-E/3{/I151F*.+*?*,&)m&8&B&B&D&D #? 	# 	# 6   !% 2 $         " "&!6!6t7G7G7I7I!J!J8%@@@*DK,DdkF]^^^*DK,FH]^^^  %   iikk!!!!!!!X& " " "iikk!!!!!!!!!   iikk!!!!!!!Y0	d 	"#####s+    H(I) )
K)3J.K)?	K)K$$K)c                   K   | j                                          | j                                         | j                                         | j        | j         d {V  | j                                         | j                                         d {V  | j        r| j         d {V  | j	        sqt          | j        j                  rX	 | j                            | j                   d {V  n1# t          $ r$}t                              |           Y d }~nd }~ww xY wt                              d           d S )NzSession stopped)rI   clearrE   rG   rB   rF   r:   closerH   r6   callabler2   disconnect_handlerrm   ri   	exceptionrj   rn   s     r#   rk   zSession.stop   sp     !!###  """>%.       ""$$$o##%%%%%%%%%> 	!.       } 	!$+*H!I!I 	!!k44T[AAAAAAAAAA ! ! !a        ! 	"#####s   %C5 5
D#?DD#c                 B  K   t          j                    }| j        rG|| j        z
  | j        k     r4t                              d           t          j        d           d {V  || _        |                                  d {V  | 	                                 d {V  d S )Nz1Reconnecting too frequently, sleeping for a whiler/   )
r   nowrL   RECONNECT_THRESHOLDri   rj   r   sleeprk   rp   )r"   rx   s     r#   restartzSession.restart   s      lnn'	#d11D4LLLHHHIII-"""""""""&)#iikkjjllr%   c                 B	  K   | j                             t          j        t          j        t          |          | j        | j        | j	                   d {V }t          |j        t                    r|j        j        n|g}t                              d|           |D ]<}|j        dz  dk    r.|j        | j        v r | j                            |j                   	 t)          | j                  t,          j        k    r| j        d t,          j        dz  = | j        r|j        | j        d         k     rt1          d          |j        | j        v rt1          d          |j        t3                      z
  dz  }|dk    rt1          d          |d	k     rt1          d
          t5          j        | j        |j                   nS# t0          $ rF}t                              d|           | j                                         d {V  Y d }~ d S d }~ww xY wt          |j        t>          j         j!        t>          j         j"        f          r&| j                            |j        j#                   t          |j        t>          j         j$                  rd }t          |j        t>          j         j%        t>          j         j&        f          r|j        j'        }nt          |j        tP          t>          j         j)        f          r|j        j*        }not          |j        t>          j         j+                  r|j        j        }n>| j,        7| j         -                    | j,        .                    |j                             || j/        v rOta          |j        d|j                  | j/        |         _1        | j/        |         j2        3                                 >t)          | j                  | j4        k    rt                              dt)          | j                             	 | 5                    t>          j         6                    to          | j                            d           d {V  | j        8                                 d S # tr          $ r Y d S w xY wd S )NzReceived: %sr,   r   z.The msg_id is lower than all the stored valuesz/The msg_id is equal to any of the stored valuesl           zhThe msg_id belongs to over 30 seconds in the future. Most likely the client time has to be synchronized.izgThe msg_id belongs to over 300 seconds in the past. Most likely the client time has to be synchronized.zDiscarding packet: %sresultzSending %s acks)msg_idsF):rK   run_in_executor	hydrogramcrypto_executorr
   unpackr   r?   r4   r<   
isinstancebodyr   messagesri   debugseq_nomsg_idrC   addlenrE   r+   STORED_MSG_IDS_MAX_SIZEr   r   bisectinsortrj   r:   rs   r   typesMsgDetailedInfoMsgNewDetailedInfoanswer_msg_idNewSessionCreatedr   BadServerSalt
bad_msg_idr   	RpcResult
req_msg_idPongr2   r]   handle_updatesrD   getattrr   r    rB   ACKS_THRESHOLDr_   MsgsAcklistrr   rl   )r"   packetdatar   msg	time_diffro   r   s           r#   handle_packetzSession.handle_packet   s     Y..%NFOOOM
 
 
 
 
 
 
 
 *4DI|)L)LX49%%SWRX		.$''' =	1 =	1CzA~"":!222!%%cj111!?t*++g.MMM+,Rg.MQR.R,RS& zD$7$:::3L   zT%8883M   "%egg!5 >I 2~~3R  
 !4''3R   d13:>>>> )   0!444o++--------- #(SY%>	@\$]^^ !%%ch&<===#(CI$?@@ F#(SY%A39CZ$[\\ L,CH{CI4G&HII L,CHcin55 L(	%%dk&@&@&J&JKKK%%-4SXx-R-RV$*V$*..000t !!T%888II'T->)?)?@@@*ii	 1 1$t?P:Q:Q 1 R RTYZZZZZZZZZ !'')))))     98s,   CG
H:HH'AR 
RRc                   K   t                               d           	 	 t          j        | j                                        | j                   d {V  n# t          j        $ r Y nw xY wt          j	        t          t                    5  |                     t          j                            d| j        dz             d           d {V  d d d            n# 1 swxY w Y   t                               d           d S )NzPingTask startedTr   r.   )rN   disconnect_delayFzPingTask stopped)ri   rj   r   wait_forrG   waitPING_INTERVALTimeoutError
contextlibsuppressrl   r   r_   r   r`   PingDelayDisconnectWAIT_TIMEOUTr!   s    r#   rh   zSession.ping_worker'  sn     #$$$	&t';'@'@'B'BDDVWWWWWWWWW  '   
 $Wh77  iiM55 !D4E4J 6   	                      	  	#$$$$$s$   7A A)(A)ACC"Cc                   K   t                               d           	 | j                                         d {V }|t	          |          dk    r|r\t          j        t          |                     }t                               d|t          j
                            |d                     | j                                        r,| j                            |                                            n/| j                            |                     |                     t                               d           d S )NzNetworkTask startedT   z$Server sent transport error: %s (%s)zunknown errorzNetworkTask stopped)ri   rj   r:   recvr   r   readr   warningr+   r1   getrI   is_setrK   r]   r{   r   )r"   r   
error_codes      r#   r^   zSession.recv_worker<  s'     &'''	>?//11111111F~V!1!1 "%(76??";";!;JKK>"044ZQQ   ?))++ :I))$,,..999I!!$"4"4V"<"<===%	>( 	&'''''r%   Tr   wait_responserP   c           	      d  K   |                      |          }|j        }|rt                      | j        |<   t                              d|           | j                            t          j	        t          j        || j        | j        | j        | j                   d {V }	 | j                            |           d {V  n/# t$          $ r"}| j                            |d            |d }~ww xY w|rt)          j        t,          j                  5  t-          j        | j        |         j                                        |           d {V  d d d            n# 1 swxY w Y   | j                            |          j        }|t/          d          t9          |t:          j        j                  rYt9          |t:          j         j!        t:          j         j"        f          r|j#        }tI          j%        |tM          |                     t9          |t:          j        j'                  r8t          (                    dtN          j)        tO          |j*                             t9          |t:          j        j+                  r)|j,        | _        |                     |||           d {V S |S d S )NzSent: %szRequest timed outz%s: %s)-r@   r   r   rD   ri   r   rK   r   r   r   r
   packrA   r?   r4   r<   r:   r_   rl   popr   r   r   r   r   r    r   r   r   r   r   RpcErrorr`   InvokeWithoutUpdatesInvokeWithTakeoutrY   r   raise_ittyper   r   r&   r   r   new_server_salt)	r"   r   r   rP   messager   payloadro   r~   s	            r#   r_   zSession.sendU  s      ""4(( 	,#)88DL 		*g&&&	11%LIOM
 
 
 
 
 
 
 
	/&&w////////// 	 	 	LVT***G	   	$W%9:: S S&t|F';'A'F'F'H'H'RRRRRRRRRS S S S S S S S S S S S S S S \%%f--3F~"#6777&#)"455 
6:7  &  :D!&$t**555&#)">?? &/&v'899   &#)"9:: E"2	!YYt]GDDDDDDDDDMts*   ! C 
C.C))C.>EE #E rY   retriessleep_thresholdc           	      F  K   t          j        t          j                  5  t          j        | j                                        | j                   d {V  d d d            n# 1 swxY w Y   t          |t          j
        j        t          j
        j        f          r|j        }n|}d                    |j                            d          dd                    }|dk    r.	 |                     ||           d {V S # t$          $ rc}|j        }||cxk    rdk    rn n t(                              d| j        j        ||           t          j        |           d {V  Y d }~nd }~wt2          t4          t6          f$ r}|dz  }|dk    r| |dk     rt(          j        nt(          j        dt:          j        |z
  |t?          |          ptA          |                     t          j        d           d {V  Y d }~nd }~ww xY w|dk    .t          d	          )
N.r   r   rO   z@[%s] Waiting for %s seconds before continuing (required by "%s")r,   z[%s] Retrying "%s" due to: %sg      ?z"Exceeded maximum number of retries)!r   r   r   r   r   rI   r   r   r   r   r`   r   r   rY   joinQUALNAMEsplitr_   r   r   ri   r   r2   namerz   rl   r   r   rj   r+   MAX_RETRIESstrrepr)	r"   rY   r   rP   r   inner_query
query_namero   amounts	            r#   invokezSession.invoke  s       !566 	N 	N"4?#7#7#9#94;LMMMMMMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N CM68WX
 
 	   +KKKXXk288==abbABB
kk)!YYugY>>>>>>>>> , , ,O0000q00000VK$	   mF++++++++++++++02DE ) ) )1a<<G9!3''1FF%d1gg	   mC(((((((((((((()# kk> ?@@@s7   8A%%A),A)'D 
H
AE,,H
A:HH
N)FF)r&   r'   r(   rb   r   SLEEP_THRESHOLDr   r   r   r   r   ry   r1   r   __annotations__intbytesboolr$   rp   rk   r{   r   rh   r^   r   floatr_   r   r)   r%   r#   r+   r+   9   s        MLOKNM&#)B/// "" "h    (+ (+"(+ (+ 	(+
 (+ (+ (+ (+ (+ (+T5$ 5$ 5$n$ $ $2  U* U* U*n% % %*( ( (4 59<< <<-1<CH< < < <B #%!02A 2A2A 2A 	2A
 2A 2A 2A 2A 2A 2Ar%   r+   )*r   r   r   loggingr=   r   r   hashlibr   ior   typingr   r   r   hydrogram.connectionr	   hydrogram.cryptor
   hydrogram.errorsr   r   r   r   r   r   r   hydrogram.raw.allr   hydrogram.raw.corer   r   r   r   	internalsr   r   	getLoggerr&   ri   r   r+   r)   r%   r#   <module>r      s  (        				 ( ( ( ( ( ( ( (                             + + + + + + $ $ $ $ $ $                  $ # # # # # G G G G G G G G G G G G ( ( ( ( ( ( ( (g!!% % % % % % % %LA LA LA LA LA LA LA LA LA LAr%   