
    $Shk4                        d dl Z d dlZd dlZd dl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)sha1)BytesIO)raw)
Connection)mtproto)RPCErrorInternalServerErrorAuthKeyDuplicated	FloodWaitServiceUnavailableBadMsgNotificationSecurityCheckMismatch)layer)TLObjectMsgContainerIntFutureSalts   )MsgId
MsgFactoryc                       e Zd Zd ZdS )Resultc                 D    d | _         t          j                    | _        d S N)valueasyncioEventeventselfs    ^/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/pyrogram/session/session.py__init__zResult.__init__*   s    
]__


    N)__name__
__module____qualname__r"    r#   r!   r   r   )   s#        % % % % %r#   r   c                       e Zd ZdZdZdZdZdZdZdZ	dddd	Z
	 	 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  zauth key not foundztransport floodz
invalid DC)i  i  i  Fclientzpyrogram.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 S )Ni   r   )r.   r/   r0   r1   r2   r3   
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)r    r.   r/   r0   r1   r2   r3   s          r!   r"   zSession.__init__>   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   rT   zSession initialized: Layer %szDevice: %s - %szSystem: %s (%s)zSession started))r   r/   r1   r.   ipv6proxyr2   r6   connectrG   create_taskrecv_workerrD   sendr   	functionsPingSTART_TIMEOUTr3   InvokeWithLayerr   InitConnectionstoragerM   rN   rO   rP   rR   help	GetConfigping_workerrB   loginfor
   stopOSErrorr   	ExceptionrE   r>   r    es     r!   startzSession.startf   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)rE   clearrA   rC   r>   rB   r6   closerD   r2   callabler.   disconnect_handlerrh   rd   	exceptionre   ri   s     r!   rf   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                 r   K   |                                   d {V  |                                  d {V  d S r   )rf   rk   r   s    r!   restartzSession.restart   sL      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):rG   run_in_executorpyrogramcrypto_executorr   unpackr   r;   r0   r8   
isinstancebodyr   messagesrd   debugseq_nomsg_idr?   addlenrA   r)   STORED_MSG_IDS_MAX_SIZEr   r   bisectinsortre   r6   rn   r   typesMsgDetailedInfoMsgNewDetailedInfoanswer_msg_idNewSessionCreatedr   BadServerSalt
bad_msg_idr   	RpcResult
req_msg_idPongr.   rX   handle_updatesr@   getattrr   r   r>   ACKS_THRESHOLDrZ   MsgsAcklistrm   rg   )r    packetdatar~   msg	time_diffrj   r   s           r!   handle_packetzSession.handle_packet   s     Y..$NFOOOM
 
 
 
 
 
 
 
 $)\22DI 	 			.$''' 7	1 7	1CzA~"":!222%))#*555?t*++g.MMM+,QW-LPQ-Q,QR& kzD$7$:::34deeezT%88834efff!$egg!5 @I 2~~3 5j k k k !4''3 5j k k k d13:>>>> )   0!444o++--------- #(SY%>	@\$]^^ !%%ch&<===#(CI$?@@ F#(SY%A39CZ$[\\ P,CH{CI4G&HII P,CHcin55 P;*I))$+*D*DSX*N*NOOO%%-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  nr# t          j        $ r Y nw xY w	 |                     t          j
                            d| j        dz             d           d {V  n# t          t          f$ r Y nw xY wt                               d           d S )NzPingTask startedTr   r,   )rI   disconnect_delayFzPingTask stopped)rd   re   r   wait_forrC   waitPING_INTERVALTimeoutErrorrZ   r   r[   PingDelayDisconnectWAIT_TIMEOUTrg   r   r   s    r!   rc   zSession.ping_worker  s3     #$$$	&t';'@'@'B'BDDVWWWWWWWWW  '   
iiM55 !D4E4J 6           
 X&   	" 	#$$$$$s$   7A A)(A)-AB1 1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)rd   re   r6   recvr   r   readr   warningr)   TRANSPORT_ERRORSgetrE   is_setrG   rX   rs   r   )r    r   
error_codes      r!   rY   zSession.recv_worker%  s&     &'''	>?//11111111F~V!1!1 "%(76??";";!;JKK>"G$<$@$@_$]$]  
 ?))++ :I))$,,..999I!!$"4"4V"<"<===#	>& 	&'''''r#   Tr   wait_responserK   c           	      &  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|r	 t)          j        | j        |         j                                        |           d {V  n# t(          j        $ r Y nw xY w| j                            |          j        }|t1          d          t5          |t6          j        j                  rYt5          |t6          j        j        t6          j        j         f          r|j!        }tE          j#        |tI          |                     t5          |t6          j        j%                  r8t          &                    dtJ          j'        tK          |j(                             t5          |t6          j        j)                  r)|j*        | _        |                     |||           d {V S |S d S )NzSent: %szRequest timed outz%s: %s)+r<   r   r   r@   rd   r   rG   rx   ry   rz   r   packr=   r;   r0   r8   r6   rZ   rg   popr   r   r   r   r   r   r|   r   r   RpcErrorr[   InvokeWithoutUpdatesInvokeWithTakeoutrT   r   raise_ittyper   r   r$   r   r   new_server_salt)	r    r   r   rK   messager   payloadrj   rv   s	            r!   rZ   zSession.send=  s     ""4(( 	,#)88DL 		*g&&&	11$LIOM
 
 
 
 
 
 
 
	/&&w////////// 	 	 	LVT***G	  	&t|F';'A'F'F'H'H'RRRRRRRRRR'    \%%f--3F~"#6777&#)"455 6dS]%GIh$ijj &:D!&$t**555&#)">?? jH&8&ACUV\VgChChiii&#)"9:: E"2	!YYt]GDDDDDDDDDM1	 	s*   ! C 
C.C))C.5=D3 3EErT   retriessleep_thresholdc           	        K   	 t          j        | j                                        | j                   d {V  n# t           j        $ r Y nw xY wt          |t          j        j	        t          j        j
        f          r|j        }n|}d                    |j                            d          dd                    }	 	 |                     ||           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t.          t0          t2          f$ r}|dk    r|d  |dk     rt$          j        nt$          j        dt6          j        |z
  dz   |t;          |          pt=          |                     t          j        d	           d {V  |                     ||dz
  |           d {V cY d }~S d }~ww xY wH)
N.r   TrJ   r   z@[%s] Waiting for %s seconds before continuing (required by "%s")r*   z[%s] Retrying "%s" due to: %sg      ?) r   r   rE   r   r   r   r|   r   r[   r   r   rT   joinQUALNAMEsplitrZ   r   r   rd   r   r.   namesleeprg   r	   r   re   r)   MAX_RETRIESstrreprinvoke)	r    rT   r   rK   r   inner_query
query_namerj   amounts	            r!   r   zSession.invokep  s     	"4?#7#7#9#94;LMMMMMMMMMM# 	 	 	D	 ecm@#-Babcc 	 +KKKXXk288==abbABB
	FF!YYugY>>>>>>>>> 	, 	, 	,O0000q00000^ K,fjB B B mF++++++++++++++02DE F F Fa<<%9!3''1A5A 1$q''   mC(((((((((![[!WEEEEEEEEEEEEEEF	Fs;   7< AAC 
H)AEH!BG?9H?HN)FF)r$   r%   r&   r]   r   SLEEP_THRESHOLDr   r   r   r   r   intbytesboolr"   rk   rf   rs   r   rc   rY   r   floatrZ   r   r'   r#   r!   r)   r)   /   s       MLOKNM& "  &- &-!&- &- 	&-
 &- &- &- &- &- &-P5$ 5$ 5$n$ $ $2  S* S* S*j% % %,( ( (0 @DVb 1 1x 1 1e 1 1 1 1l #%!0,F ,F,F ,F 	,F
 ,F ,F ,F ,F ,F ,Fr#   r)   )%r   r   loggingr9   hashlibr   ior   ry   r   pyrogram.connectionr   pyrogram.cryptor   pyrogram.errorsr   r	   r
   r   r   r   r   pyrogram.raw.allr   pyrogram.raw.corer   r   r   r   	internalsr   r   	getLoggerr$   rd   r   r)   r'   r#   r!   <module>r      s  &    				                    * * * * * * # # # # # #                  # " " " " " F F F F F F F F F F F F ( ( ( ( ( ( ( (g!!% % % % % % % %mF mF mF mF mF mF mF mF mF mFr#   