
    hU)                         d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$  ej%        e&          Z' G d d          Z(dS )    N)OrderedDict)utils)CallbackQueryHandlerChatJoinRequestHandlerChatMemberUpdatedHandlerChosenInlineResultHandlerDeletedMessagesHandlerEditedMessageHandlerErrorHandlerInlineQueryHandlerMessageHandlerPollHandlerRawUpdateHandlerUserStatusHandler)UpdateBotCallbackQueryUpdateBotChatInviteRequesterUpdateBotInlineQueryUpdateBotInlineSendUpdateChannelParticipantUpdateChatParticipantUpdateDeleteChannelMessagesUpdateDeleteMessagesUpdateEditChannelMessageUpdateEditMessageUpdateInlineBotCallbackQueryUpdateMessagePollUpdateNewChannelMessageUpdateNewMessageUpdateNewScheduledMessageUpdateUserStatusc                       e Zd ZeeefZeefZ	e
efZeefZeefZefZefZefZefZefZddZd Zd Zd Z d Z!d Z"d	 Z#d
 Z$d Z%d Z&d Z'd Z(d Z)d Z*de+fdZ,de+fdZ-d Z.d Z/d Z0d Z1dS )
Dispatcherclienthydrogram.Clientc                     || _         t          j                    | _        g | _        g | _        t          j                    | _        t                      | _	        | 
                                 g | _        d S N)r#   asyncioget_event_looploophandler_worker_tasks
locks_listQueueupdates_queuer   groups_init_update_parserserror_handlers)selfr#   s     T/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/hydrogram/dispatcher.py__init__zDispatcher.__init__K   sa    *,,	$&!$]__!mm!!###     c                    t           j        | j        t           j        | j        t           j        | j        t           j        | j        t           j	        | j
        t           j        | j        t           j        | j        t           j        | j        t           j        | j        t           j        | j        i
| _        d | j                                        D             | _        d S )Nc                 $    i | ]\  }}|D ]}||S  r7   ).0	key_tuplevaluekeys       r2   
<dictcomp>z3Dispatcher._init_update_parsers.<locals>.<dictcomp>b   s@     
 
 
+9eV_
 
ORC
 
 
 
r4   )r"   NEW_MESSAGE_UPDATES_message_parserEDIT_MESSAGE_UPDATES_edited_message_parserDELETE_MESSAGES_UPDATES_deleted_messages_parserCALLBACK_QUERY_UPDATES_callback_query_parserUSER_STATUS_UPDATES_user_status_parserBOT_INLINE_QUERY_UPDATES_inline_query_parserPOLL_UPDATES_poll_parserCHOSEN_INLINE_RESULT_UPDATES_chosen_inline_result_parserCHAT_MEMBER_UPDATES_chat_member_updated_parserCHAT_JOIN_REQUEST_UPDATES_chat_join_request_parserupdate_parsersitemsr1   s    r2   r/   zDispatcher._init_update_parsersU   s    *D,@+T-H.0M-t/J*D,D/1J#T%63T5V*D,L0$2P

 
/3/B/H/H/J/J
 
 
r4   c           
         K   t           j        j                            | j        |j        ||t          |t                               d {V t          fS )N)r#   messageuserschatsis_scheduled)		hydrogramtypesMessage_parser#   rU   
isinstancer   r   r1   updaterV   rW   s       r2   r>   zDispatcher._message_parserf   sn      /)00{'0IJJ 1         	
 		
r4   c                 X   K   |                      |||           d {V \  }}|t          fS r&   )r>   r
   )r1   r_   rV   rW   parsed_s         r2   r@   z!Dispatcher._edited_message_parserr   s?      ..vueDDDDDDDD	+++r4   c                 D    t          j        | j        |          t          fS r&   )r   parse_deleted_messagesr#   r	   r^   s       r2   rB   z#Dispatcher._deleted_messages_parserv   s    +DK@@BXXXr4   c                 v   K   t           j        j                            | j        ||           d {V t
          fS r&   )rY   rZ   CallbackQueryr\   r#   r   r^   s       r2   rD   z!Dispatcher._callback_query_parsery   sR      _299K
 
 
 
 
 
 
 
  	 r4   c                 d    t           j        j                            | j        |          t
          fS r&   )rY   rZ   User_parse_user_statusr#   r   r^   s       r2   rF   zDispatcher._user_status_parser~   s%    #66t{FKKM^^^r4   c                 f    t           j        j                            | j        ||          t
          fS r&   )rY   rZ   InlineQueryr\   r#   r   r^   s       r2   rH   zDispatcher._inline_query_parser   s'    *11$+vuMMOaaar4   c                 d    t           j        j                            | j        |          t
          fS r&   )rY   rZ   Poll_parse_updater#   r   r^   s       r2   rJ   zDispatcher._poll_parser   s$    #11$+vFFSSr4   c                 f    t           j        j                            | j        ||          t
          fS r&   )rY   rZ   ChosenInlineResultr\   r#   r   r^   s       r2   rL   z'Dispatcher._chosen_inline_result_parser   s0    188K
 
$% 	%r4   c                 h    t           j        j                            | j        |||          t
          fS r&   )rY   rZ   ChatMemberUpdatedr\   r#   r   r^   s       r2   rN   z&Dispatcher._chat_member_updated_parser   s2    077K
 
#$ 	$r4   c                 h    t           j        j                            | j        |||          t
          fS r&   )rY   rZ   ChatJoinRequestr\   r#   r   r^   s       r2   rP   z$Dispatcher._chat_join_request_parser   s2    .55K
 
!" 	"r4   c                     K    j         j        sgd t           j         j                  D              _         fd j        D              _        t                              d j         j                   d S d S )Nc                 4    g | ]}t          j                    S r7   )r'   Lock)r8   rb   s     r2   
<listcomp>z$Dispatcher.start.<locals>.<listcomp>   s    RRR!w|~~RRRr4   c                 j    g | ]/}j                                                 |                    0S r7   )r)   create_taskhandler_worker)r8   lockr1   s     r2   rx   z$Dispatcher.start.<locals>.<listcomp>   sD     ) ) )EI	%%d&9&9$&?&?@@) ) )r4   zStarted %s HandlerTasks)r#   
no_updatesrangeworkersr+   r*   loginforS   s   `r2   startzDispatcher.start   s      {% 	ERRuT[=P7Q7QRRRDO) ) ) )MQ_) ) )D% HH.0CDDDDD	E 	Er4   c                   K   | j         j        st          | j         j                  D ]}| j                            d            t          j        | j          d {V  | j        	                                 | j
        	                                 | j        	                                 t                              d| j         j                   d S d S )NzStopped %s HandlerTasks)r#   r}   r~   r   r-   
put_nowaitr'   gatherr*   clearr.   r0   r   r   )r1   rb   s     r2   stopzDispatcher.stop   s      {% 	E4;.// 4 4"--d3333.$";<<<<<<<<%++---K%%'''HH.0CDDDDD	E 	Er4   groupc                 ^      fd} j                              |                       d S )Nc                    K   t          j                    4 d {V  t          t                    r$j        vrj                                       nk j        vrBg j         <   t          t          j        	                                                    _        j                                                 d d d           d {V  d S # 1 d {V swxY w Y   d S r&   )
r'   rw   r]   r   r0   appendr.   r   sortedrR   r   handlerr1   s   r2   fnz"Dispatcher.add_handler.<locals>.fn   sb     |~~ 7 7 7 7 7 7 7 7g|44 7d&999+227;;;DK//-/E*&1&9J9J9L9L2M2M&N&NK&--g6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   B%C
C"Cr)   rz   r1   r   r   r   s   ``` r2   add_handlerzDispatcher.add_handler   sL    		7 		7 		7 		7 		7 		7 		7 		bbdd#####r4   c                 ^      fd} j                              |                       d S )Nc                    K   t          j                    4 d {V  t          t                    r7j        vrt          d d          j                                       n< j        vrt          d  d          j                                                 d d d           d {V  d S # 1 d {V swxY w Y   d S )NzError handler z) does not exist. Handler was not removed.zGroup )r'   rw   r]   r   r0   
ValueErrorremover.   r   s   r2   r   z%Dispatcher.remove_handler.<locals>.fn   so     |~~ 7 7 7 7 7 7 7 7g|44 
7d&999(_W___   '..w7777DK//()b%)b)b)bcccK&--g6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   B	B99
CCr   r   s   ``` r2   remove_handlerzDispatcher.remove_handler   sL    	7 	7 	7 	7 	7 	7 	7 		bbdd#####r4   c                    K   	 | j                                          d {V }|d S |                     ||           d {V  @r&   )r-   get_process_packet)r1   r|   packets      r2   r{   zDispatcher.handler_worker   sh      	5-1133333333F~&&vt444444444		5r4   c                   K   	 |\  }}}| j                             t          |                    }|s	 | j                                         d S t          j        |          r ||||           d {V \  }}n ||||          \  }}|4 d {V  | j                                        D ]'}	|	D ]"}
| 	                    |
|||||           d {V  #(	 d d d           d {V  n# 1 d {V swxY w Y   nA# t          j        $ r Y n0t          $ r$}t                              |           Y d }~nd }~ww xY w| j                                         d S # | j                                         w xY wr&   )rQ   r   typer-   	task_doneinspectiscoroutinefunctionr.   values_handle_updaterY   StopPropagation	Exceptionr   	exception)r1   r   r|   r_   rV   rW   parserparsed_updatehandler_typer   r   es               r2   r   zDispatcher._process_packet   s~     	+#) FE5(,,T&\\::F $ ((*****! *622 K4:F65%4P4P.P.P.P.P.P.P+||.4fVUE.J.J+|        ![//11  E#(  "11#\=&%QV                                    ( 	 	 	D 	 	 	MM!	 ((*****D((****sg   /C9 AC9 AC'C9 '
C11C9 4C15C9 8E 9D7E 
	D7D2-E 2D77E E0c                   K   	 t          ||          rA|                    | j        |           d {V r|                     ||           d {V  d S d S t          |t                    r |                     ||||           d {V  d S d S # t
          j        $ r  t
          j        $ r Y d S t          $ r}d}| j	        D ]}		 |	                    | j        |           d {V r%|	
                    | j        |           d {V  d} nQJ# t
          j        $ r  t
          j        $ r Y jt          $ r$}t                              |           Y d }~d }~ww xY w|s t                              |           Y d }~d S Y d }~d S d }~ww xY w)NFT)r]   checkr#   _execute_callbackr   rY   r   ContinuePropagationr   r0   callbackr   r   )
r1   r   r   r   r_   rV   rW   r   handled_errorerror_handlers
             r2   r   zDispatcher._handle_update   se     	!'<00 L t{MBBBBBBBB I00-HHHHHHHHHHHI IG%566 L,,WfeUKKKKKKKKKKKL L( 	 	 	, 	 	 	DD 	! 	! 	!!M!%!4  *00a@@@@@@@@ +44T[!DDDDDDDDD(, !0    4   H    MM!$$$HHHH ! !a         ! ! ! ! ! !!	!s[   AB 3B F-	F6FAD	F	E'F)	E2EFEFFc                    K   t          j        |j                  r |j        | j        g|R   d {V  d S  | j        j        | j        j        |j        | j        g|R   d {V  d S r&   )r   r   r   r#   r)   run_in_executorexecutor)r1   r   argss      r2   r   zDispatcher._execute_callback  s      &w'788 	"'"4;6666666666666+$)+$g&6FJ           r4   N)r#   r$   )2__name__
__module____qualname__r   r   r   r=   r   r   r?   r   r   rA   r   r   rC   r   r   rM   r    rE   r   rG   r   rI   r   rK   r   rO   r3   r/   r>   r@   rB   rD   rF   rH   rJ   rL   rN   rP   r   r   intr   r   r{   r   r   r   r7   r4   r2   r"   r"   ?   s       +-DF_`-/GH35PQ46RS02JK+- 46%'L$7#9 != ?! ! ! !
 
 
"

 

 

, , ,Y Y Y     
_ _ _b b bT T T% % %
$ $ $
" " "
E E E	E 	E 	E$# $ $ $ $$S $ $ $ $"5 5 5+ + +2! ! !<    r4   r"   ))r'   r   loggingcollectionsr   rY   r   hydrogram.handlersr   r   r   r   r	   r
   r   r   r   r   r   r   hydrogram.raw.typesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    	getLoggerr   r   r"   r7   r4   r2   <module>r      s  (    # # # # # #                                                                        & g!!M M M M M M M M M Mr4   