
    h+                       d dl mZ d dlZ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	 d dl
m
Z
mZ d dlmZ d dlmZ d dlZd dlmZmZmZ d dlmZmZmZmZ  eddd	d	d
          Zd\ddd]dZ	 d^d_dZ	 d`dad"Zdbd#Zdcd&Zddd(Zd)Zd*Zd+Z d,Z!d-Z"d.Z#d/Z$ded2Z%dfd3Z&dgd5Z'dhd6Z(did9Z)djd;Z*dkd=Z+dld?Z,dmdCZ-dndGZ.dodPZ/dpdRZ0dqdUZ1drdWZ2dsd[Z3dS )t    )annotationsN)ThreadPoolExecutor)datetimetimezone)getpass)SimpleNamespace)enumsrawtypes)DOCUMENT_TYPESPHOTO_TYPESFileIdFileTypeTz3[pyromod] You're not expected to click this button.)timeout_handlerstopped_handlerthrow_exceptionsunallowed_click_alertunallowed_click_alert_text F)hidepromptstrr   boolc                  K   t          d          5 }t          j        |rt          nt          |           }t          j                                        ||           d{V cddd           S # 1 swxY w Y   dS )z'Just like the built-in input, but async   N)r   	functoolspartialr   inputasyncioget_event_looprun_in_executor)r   r   executorfuncs       O/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/hydrogram/utils.pyainputr%   .   s      	A		 N( D!;eVDD+--==hMMMMMMMMN N N N N N N N N N N N N N N N N Ns   AA//A36A3file_idexpected_file_typer   ttl_seconds
int | Nonereturn8raw.types.InputMediaPhoto | raw.types.InputMediaDocumentc                   	 t          j        |           }n&# t          $ r}t          d|  d          |d }~ww xY w|j        }|&||k    r t          d|j         d|j         d          |t          j        t          j        hv rt          d|            |t          v rPt          j                            t          j                            |j        |j        |j                  |          S |t"          v rPt          j                            t          j                            |j        |j        |j                  |          S t          d	|            )
NzFailed to decode "zS". The value does not represent an existing local file, HTTP URL, or valid file id.z	Expected z, got z file id insteadz,This file id can only be used for download: )idaccess_hashfile_reference)r-   r(   zUnknown file id: )r   decode	Exception
ValueError	file_typenamer   	THUMBNAIL
CHAT_PHOTOr   r
   r   InputMediaPhoto
InputPhotomedia_idr.   r/   r   InputMediaDocumentInputDocument)r&   r'   r(   decodeder3   s         r$   get_input_media_from_file_idr>   5   s   -((   + + + +
 
 	 !I%)7I*I*IW*/WWy~WWW
 
 	
 X')<===QQQRRRKy((y####/&5 $  
 $ ) 
 
 	
 N""y++y&&##/&5 '  
 $ , 
 
 	
 222
3
33s    
:5:r   messagesraw.types.messages.Messagesrepliesintlist[types.Message]c                n   
K   d |j         D             d |j        D             
t          |d          rd |j        D             nd |j        st          j                    S g }
 fd|j        D              d {V }d |j        D             x}r|rt          d |D             d          }                     ||	                                |d	z
  
           d {V }|D ]:}|
                    |j                  }|D ]}	|	j        |k    r|	j        s|	|_        ;t          j        |          S )Nc                    i | ]
}|j         |S  r-   .0is     r$   
<dictcomp>z"parse_messages.<locals>.<dictcomp>d       ---QT1---    c                    i | ]
}|j         |S rF   rG   rH   s     r$   rK   z"parse_messages.<locals>.<dictcomp>e   rL   rM   topicsc                    i | ]
}|j         |S rF   rG   rH   s     r$   rK   z"parse_messages.<locals>.<dictcomp>f   s    ///!adA///rM   c           
     j   K   g | ]-}t           j                            |d            d{V .S )r   )clientmessageuserschatsrO   rA   N)r   Message_parse)rI   rS   rU   rR   rO   rT   s     r$   
<listcomp>z"parse_messages.<locals>.<listcomp>l   sr           m""7%uV]^ # 
 
 	
 	
 	
 	
 	
 	
  rM   c                ~    i | ]:}t          |t          j        j                  !|j        (|j        |j        j        ;S rF   )
isinstancer
   r   MessageEmptyreply_tor-   reply_to_msg_idrH   s     r$   rK   z"parse_messages.<locals>.<dictcomp>t   sR     "
 "
 "
a!788"
 >?Z"
D!*,"
 "
 "
rM   c              3  <   K   | ]}|j         	|j         j        V  d S N)chatr-   )rI   ms     r$   	<genexpr>z!parse_messages.<locals>.<genexpr>|   s-      EEaafE	EEEEEErM   r   r   )reply_to_message_idsrA   )rT   rU   hasattrrO   r?   r   Listnextget_messageskeysgetr-   forum_topic_createdreply_to_message)rR   r?   rA   parsed_messagesmessages_with_replieschat_idreply_messagesrS   reply_idreplyrU   rO   rT   s   `         @@@r$   parse_messagesrr   a   s      .-hn---E--hn---E3:8X3N3NX//x////TXF z||O        (	        O"
 "
&"
 "
 "
 	
5 5 EE?EEEqII%22!6!;!;!=!=aK  3  
  
 
 
 
 
 
 
 ' 	5 	5G,00<<H' 5 58x''0I'/4G,5 :o&&&rM   c                |     |j         }t          |dd            fd|D             }t          j        |          S )N
channel_idc           
         g | ]N}t          j        |3t          j        t                    t          j        j                  nd           OS )N)r-   typerR   )r-   r`   rR   )r   rV   Chatget_channel_idr	   ChatTypeCHANNEL)rI   rS   rt   rR   s     r$   rX   z*parse_deleted_messages.<locals>.<listcomp>   s         	 % !*--^+    
	
 
	
 
	
  rM   )r?   getattrr   re   )rR   updater?   rl   rt   s   `   @r$   parse_deleted_messagesr}      s]    Ht44J        O :o&&&rM   msg_id raw.base.InputBotInlineMessageIDc                X   t          | t          j        j                  r't	          j        d| j        | j        | j                  }n,t	          j        d| j        | j	        | j        | j                  }t          j        |                                                              d          S )N<iqq<iqiq=)rZ   r
   r   InputBotInlineMessageIDstructpackdc_idr-   r.   owner_idbase64urlsafe_b64encoder0   rstrip)r~   inline_message_id_packeds     r$   pack_inline_message_idr      s    &#);<< 
#);vv|VYPVPb#c#c  #);V\6?FIv?Q$
 $
  #$<==DDFFMMcRRRrM   inline_message_idc                   | dt          |            dz  z  z   }t          j        |          }t          |          dk    rIt          j        d|          }t
          j                            |d         |d         |d                   S t          j        d	|          }t
          j                            |d         |d         |d         |d
                   S )Nr         r   r   r      )r   r-   r.   r      )r   r   r-   r.   )	lenr   urlsafe_b64decoder   unpackr
   r   r   InputBotInlineMessageID64)r   paddedr<   unpackeds       r$   unpack_inline_message_idr      s    ->)?)?(?!(C!DDF&v..G
7||r=11y001+(1+8A; 1 
 
 	
 }Wg..H9..qk!A;QK	 /   rM   lJ)l taQl J)i  lJ)il   J)peerraw.base.Peerc                    t          | t          j        j                  r| j        S t          | t          j        j                  r| j        S t          | t          j        j                  r| j        ndS )z&Get the raw peer id from a Peer objectN)	rZ   r
   r   PeerUseruser_idPeerChatrn   PeerChannelrt   r   s    r$   get_raw_peer_idr      s`    $	*++ |$	*++ |(sy/DEEO4??4OrM   c                   t          | t          j        j                  r| j        S t          | t          j        j                  r| j         S t          | t          j        j                  rt          | j	        z
  S t          d|            )z*Get the non-raw peer id from a Peer objectzPeer type invalid: )rZ   r
   r   r   r   r   rn   r   MAX_CHANNEL_IDrt   r2   r   s    r$   get_peer_idr      s}    $	*++ |$	*++ }$	-.. 0//
1411
2
22rM   peer_idc                    | dk     r*| t           k    rdS t          | cxk    rt          k     rn ndS nd| cxk     rt          k    rn ndS t	          d|            )Nr   r`   channeluserzPeer id invalid: )MIN_CHAT_IDMIN_CHANNEL_IDr   MAX_USER_IDr2   r   s    r$   get_peer_typer      s    {{k!!6W5555~555559 6	
W	#	#	#	#	#	#	#	#	#v
222
3
33rM   c                    t           | z
  S r_   )r   r   s    r$   rx   rx      s    G##rM   bbytesc                8    t                               | d          S )Nbig)rB   
from_bytes)r   s    r$   btoir      s    >>!U###rM   rJ   c                .    |                      dd          S )N   r   )to_bytes)rJ   s    r$   itobr      s    ::c5!!!rM   datac                N    t          j        |                                           S r_   )hashlibsha256digest)r   s    r$   r   r      s    >$&&(((rM   ac                P    t          d t          | |          D                       S )Nc              3  &   K   | ]\  }}||z  V  d S r_   rF   )rI   rJ   js      r$   rb   zxor.<locals>.<genexpr>  s*      --41aQ------rM   )r   zip)r   r   s     r$   xorr     s'    --3q!99------rM   algoKraw.types.PasswordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPowpasswordc                   t          | j        |                                z   | j        z             }t          | j        |z   | j        z             }t	          j        d|| j        d          }t          | j        |z   | j        z             S )Nsha512i )r   salt1encodesalt2r   pbkdf2_hmac)r   r   hash1hash2hash3s        r$   compute_password_hashr     sx     4: 1 11DJ>??E4:%
233E%VDDE$*u$tz1222rM   rraw.types.account.Passwordraw.types.InputCheckPasswordSRPc                   | j         }|j        }t          |j                  }t          |j                  }|j        }| j        }t          |          }| j        }	t          ||          }
t          |
          }t          |||          }t          ||z             }t          |          }||z  |z  }	 t          j        d          }t          |          }t          |||          }t          |          }t          t          ||z                       }|dk    rnj||z
  |z  }||z  }||z   }t          |||          }t          |          }t          |          }t          t          t          |          t          |                    t          |j                  z   t          |j                  z   |z   |z   |z             }t          j                            |	||          S )NTr   r   )srp_idAM1)current_algopr   r   gsrp_Br   r   powr   osurandomr   r   r   r
   r   InputCheckPasswordSRP)r   r   r   p_bytesr   g_bytesr   B_bytesBr   x_bytesxg_xk_byteskkg_xa_bytesr   r   A_bytesug_buxa_uxSS_bytesK_bytesM1_bytess                               r$   compute_password_checkr     s    >DfGTVA46llGAgGWAXF#D(33GWA
aA,,CWw&''GWAGq=D
*S//MM1aLLq''')**++q55
 t8q.C	
QBr6DCqA1ggGWooGF7OOVG__--


	


	 	 		
 	 H 9**&G*QQQrM   rR   hydrogram.Clienttext
parse_modeenums.ParseModeentitieslist[types.MessageEntity]-dict[str, str | list[raw.base.MessageEntity]]c                   K   |r#|D ]	}| |_         
|d |D              d {V pd }}n6| j                            ||           d {V                                 \  }}||dS )Nc                F   K   g | ]}|                                  d {V S r_   )write)rI   entitys     r$   rX   z'parse_text_entities.<locals>.<listcomp>W  s6      LLLfllnn 4 4 4 4 4 4LLLrM   )rS   r   )_clientparserparsevalues)rR   r   r   r   r  s        r$   parse_text_entitiesr  L  s        P 	$ 	$F#FNNLL8LLLLLLLLLTPTh & 3 3D* E EEEEEEEMMOOh222rM   r   c                 @    t          j        dt          j                  S )Nr   )r   fromtimestampr   utcrF   rM   r$   zero_datetimer
  ^  s    !!X\222rM   tsdatetime | Nonec                2    | rt          j        |           nd S r_   )r   r  )r  s    r$   timestamp_to_datetimer  b  s    )+58!"%%%5rM   dtc                L    | r!t          |                                           nd S r_   )rB   	timestamp)r  s    r$   datetime_to_timestampr  f  s"    "$.3r||~~$.rM   message_thread_idreply_to_message_idraw.types.InputReplyToMessagec                    d }|s| rE|s"t           j                            | |           }n!t           j                            ||           }|S )N)r]   
top_msg_id)r
   r   InputReplyToMessage)r  r  r\   s      r$   get_reply_head_fmr  j  sp     H / " 	y44 1>O 5  HH y44 3@Q 5  H OrM   )r   )r   r   r   r   )NN)r&   r   r'   r   r(   r)   r*   r+   )r   )r?   r@   rA   rB   r*   rC   )r*   rC   )r~   r   )r   r   r*   r   )r   r   r*   r)   )r   r   r*   rB   )r   rB   r*   r   )r   rB   r*   rB   )r   r   r*   rB   )rJ   rB   r*   r   )r   r   r*   r   )r   r   r   r   r*   r   )r   r   r   r   r*   r   )r   r   r   r   r*   r   )
rR   r   r   r   r   r   r   r   r*   r   )r*   r   )r  r)   r*   r  )r  r  r*   r)   )r  rB   r  rB   r*   r  )4
__future__r   r   r   r   r   r   r   concurrent.futures.threadr   r   r   r   r   r   	hydrogramr	   r
   hydrogram.file_idr   r   r   r   PyromodConfigr%   r>   rr   r}   r   r   MIN_CHANNEL_ID_OLDr   r   MIN_CHAT_ID_OLDr   MAX_USER_ID_OLDr   r   r   r   rx   r   r   r   r   r   r   r  r
  r  r  r  rF   rM   r$   <module>r"     s&  ( # " " " " "        				  8 8 8 8 8 8 ' ' ' ' ' ' ' '       ! ! ! ! ! !     ' ' ' ' ' ' ' ' ' ' K K K K K K K K K K K K U  N5 N N N N N N RV)4 )4 )4 )4 )4Z CD)' )' )' )' )'X' ' ' '*S S S S   * $ P P P P3 3 3 3
4 
4 
4 
4$ $ $ $$ $ $ $" " " ") ) ) ). . . .3 3 3 38R 8R 8R 8Rv3 3 3 3$3 3 3 36 6 6 6/ / / /     rM   