o
    -˜ŽjC  ã                   @   sP  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m	Z	m
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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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA e BeC¡ZDG dd	„ d	ƒZEdS )
é    N)ÚOrderedDict)ÚAny)ÚrawÚtypesÚutils)ÚHandler)ÚBotBusinessConnectHandlerÚBotBusinessMessageHandlerÚCallbackQueryHandlerÚMessageHandlerÚEditedMessageHandlerÚEditedBotBusinessMessageHandlerÚErrorHandlerÚDeletedMessagesHandlerÚ!DeletedBotBusinessMessagesHandlerÚMessageReactionUpdatedHandlerÚ"MessageReactionCountUpdatedHandlerÚUserStatusHandlerÚRawUpdateHandlerÚInlineQueryHandlerÚPollHandlerÚShippingQueryHandlerÚPreCheckoutQueryHandlerÚConversationHandlerÚChosenInlineResultHandlerÚChatMemberUpdatedHandlerÚChatJoinRequestHandlerÚStoryHandlerÚPurchasedPaidMediaHandler)ÚUpdateNewMessageÚUpdateNewChannelMessageÚUpdateNewScheduledMessageÚUpdateBotBusinessConnectÚUpdateBotNewBusinessMessageÚUpdateBotDeleteBusinessMessageÚUpdateBotEditBusinessMessageÚUpdateEditMessageÚUpdateEditChannelMessageÚUpdateDeleteMessagesÚUpdateDeleteChannelMessagesÚUpdateBotCallbackQueryÚUpdateInlineBotCallbackQueryÚUpdateBotPrecheckoutQueryÚUpdateUserStatusÚUpdateBotInlineQueryÚUpdateMessagePollÚUpdateBotInlineSendÚUpdateChatParticipantÚUpdateChannelParticipantÚUpdateBotStoppedÚUpdateBotChatInviteRequesterÚUpdateStoryÚUpdateBotMessageReactionÚUpdateBotMessageReactionsÚUpdateBotShippingQueryÚUpdateBusinessBotCallbackQueryÚUpdateBotPurchasedPaidMediac                   @   s  e Zd ZeeefZefZe	e
fZefZeefZefZeeefZeeefZefZefZefZ e!fZ"e#fZ$e%fZ&e'fZ(e)fZ*e+fZ,e-fZ.e/fZ0e1fZ2ddd„Z3dd„ Z4dd„ Z5d	e6fd
d„Z7d	e6fdd„Z8de9j:fdd„Z;de9j:fdd„Z<dd„ Z=dd„ Z>de?fdd„Z@deAjBdeCfdd„ZDdS ) Ú
DispatcherÚclientúpyrogram.Clientc                    s&  |ˆ_ zt ¡ }W n ty   t ¡ }t |¡ Y nw |ˆ_g ˆ_g ˆ_g ˆ_	t 
¡ ˆ_tƒ ˆ_tƒ ˆ_ˆjgˆjd< ‡fdd„‰‡fdd„‰ ‡fdd„}‡ fdd	„}‡fd
d„}‡fdd„}‡fdd„}‡fdd„}‡fdd„}	‡fdd„}
‡fdd„}‡fdd„}‡fdd„}‡fdd„}‡fdd„}‡fd d!„}‡fd"d#„}‡fd$d%„}‡fd&d'„}‡fd(d)„}i tjˆ“tjˆ “tj|“tj|“tj|“tj|“tj|“tj|“tj|	“tj|
“tj|“tj|“tj|“tj|“tj|“tj |“tj!|“tj"|tj#|tj$|i¥ˆ_%d*d+„ ˆj% &¡ D ƒˆ_%d S ),Nr   c                 “   s.   �t jjjˆ j| j||t| tƒd�I d H tfS )N)Úis_scheduled)	Úpyrogramr   ÚMessageÚ_parser<   ÚmessageÚ
isinstancer!   r   ©ÚupdateÚusersÚchats©Úself© úP/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pyrogram/dispatcher.pyÚmessage_parsers   s   €
ÿýz+Dispatcher.__init__.<locals>.message_parserc                 “   s*   �t jjjˆ j| j||| jd�I d H tfS ©N)Úbusiness_connection_id)r?   r   r@   rA   r<   rB   Úconnection_idr	   rD   rH   rJ   rK   Úbot_business_message_parserz   s   €
ûøz8Dispatcher.__init__.<locals>.bot_business_message_parserc                 “   ó    �ˆ | ||ƒI d H \}}|t fS ©N)r   ©rE   rF   rG   ÚparsedÚ_)rL   rJ   rK   Úedited_message_parser†   ó
   €þz2Dispatcher.__init__.<locals>.edited_message_parserc                 “   rQ   rR   )r   rS   )rP   rJ   rK   Ú"edited_bot_business_message_parser�   rW   z?Dispatcher.__init__.<locals>.edited_bot_business_message_parserc                 “   s   �t  ˆ j| ¡tfS rR   )r   Úparse_deleted_messagesr<   r   rD   rH   rJ   rK   Údeleted_messages_parser˜   s   €þz4Dispatcher.__init__.<locals>.deleted_messages_parserc                 “   s   �t jˆ j| | jd�tfS rM   )r   rY   r<   rO   r   rD   rH   rJ   rK   Ú$deleted_bot_business_messages_parserž   ó   €þzADispatcher.__init__.<locals>.deleted_bot_business_messages_parserc                 “   ó    �t jj ˆ j| |¡I d H tfS rR   )r?   r   ÚCallbackQueryrA   r<   r
   rD   rH   rJ   rK   Úcallback_query_parser¤   ó   €þz2Dispatcher.__init__.<locals>.callback_query_parserc                 “   s   �t jj ˆ j| ¡tfS rR   )r?   r   ÚUserÚ_parse_user_statusr<   r   rD   rH   rJ   rK   Úuser_status_parserª   s   €þz/Dispatcher.__init__.<locals>.user_status_parserc                 “   ó   �t jj ˆ j| |¡tfS rR   )r?   r   ÚInlineQueryrA   r<   r   rD   rH   rJ   rK   Úinline_query_parser°   r\   z0Dispatcher.__init__.<locals>.inline_query_parserc                 “   r]   rR   )r?   r   ÚPollÚ_parse_updater<   r   rD   rH   rJ   rK   Úpoll_parser¶   r`   z(Dispatcher.__init__.<locals>.poll_parserc                 “   rd   rR   )r?   r   ÚChosenInlineResultrA   r<   r   rD   rH   rJ   rK   Úchosen_inline_result_parser¼   r\   z8Dispatcher.__init__.<locals>.chosen_inline_result_parserc                 “   ó   �t jj ˆ j| ||¡tfS rR   )r?   r   ÚChatMemberUpdatedrA   r<   r   rD   rH   rJ   rK   Úchat_member_updated_parserÂ   ó   €þz7Dispatcher.__init__.<locals>.chat_member_updated_parserc                 “   rl   rR   )r?   r   ÚChatJoinRequestrA   r<   r   rD   rH   rJ   rK   Úchat_join_request_parserÈ   ro   z5Dispatcher.__init__.<locals>.chat_join_request_parserc                 “   s$   �t jj ˆ j| j| j¡I d H tfS rR   )r?   r   ÚStoryrA   r<   ÚstoryÚpeerr   rD   rH   rJ   rK   Ústory_parserÎ   s   €þz)Dispatcher.__init__.<locals>.story_parserc                 “   r]   rR   )r?   r   ÚShippingQueryrA   r<   r   rD   rH   rJ   rK   Úshipping_query_parserÔ   r`   z2Dispatcher.__init__.<locals>.shipping_query_parserc                 “   r]   rR   )r?   r   ÚPreCheckoutQueryrA   r<   r   rD   rH   rJ   rK   Úpre_checkout_query_parserÚ   r`   z6Dispatcher.__init__.<locals>.pre_checkout_query_parserc                 “   rl   rR   )r?   r   ÚMessageReactionUpdatedrA   r<   r   rD   rH   rJ   rK   Úmessage_bot_na_reaction_parserà   ro   z;Dispatcher.__init__.<locals>.message_bot_na_reaction_parserc                 “   rl   rR   )r?   r   ÚMessageReactionCountUpdatedrA   r<   r   rD   rH   rJ   rK   Úmessage_bot_a_reaction_parseræ   ro   z:Dispatcher.__init__.<locals>.message_bot_a_reaction_parserc                 “   s    �t jj ˆ j| j¡I d H tfS rR   )r?   r   ÚBotBusinessConnectionrA   r<   Ú
connectionr   rD   rH   rJ   rK   Úbot_business_connect_parserì   r`   z8Dispatcher.__init__.<locals>.bot_business_connect_parserc                 “   rd   rR   )r?   r   ÚPurchasedPaidMediarA   r<   r   rD   rH   rJ   rK   Úpurchased_paid_media_parserò   r\   z8Dispatcher.__init__.<locals>.purchased_paid_media_parserc                 S   s    i | ]\}}|D ]}||“qqS rJ   rJ   )Ú.0Ú	key_tupleÚvalueÚkeyrJ   rJ   rK   Ú
<dictcomp>  s     z'Dispatcher.__init__.<locals>.<dictcomp>)'r<   ÚasyncioÚget_event_loopÚRuntimeErrorÚnew_event_loopÚset_event_loopÚloopÚhandler_worker_tasksÚ
locks_listÚerror_handlersÚQueueÚupdates_queuer   Úgroupsr   Úconversation_handlerr;   ÚNEW_MESSAGE_UPDATESÚ NEW_BOT_BUSINESS_MESSAGE_UPDATESÚEDIT_MESSAGE_UPDATESÚ!EDIT_BOT_BUSINESS_MESSAGE_UPDATESÚDELETE_MESSAGES_UPDATESÚ$DELETE_BOT_BUSINESS_MESSAGES_UPDATESÚCALLBACK_QUERY_UPDATESÚUSER_STATUS_UPDATESÚBOT_INLINE_QUERY_UPDATESÚPOLL_UPDATESÚCHOSEN_INLINE_RESULT_UPDATESÚCHAT_MEMBER_UPDATESÚCHAT_JOIN_REQUEST_UPDATESÚNEW_STORY_UPDATESÚSHIPPING_QUERY_UPDATESÚPRE_CHECKOUT_QUERY_UPDATESÚMESSAGE_BOT_NA_REACTION_UPDATESÚMESSAGE_BOT_A_REACTION_UPDATESÚBOT_BUSSINESS_CONNECT_UPDATESÚPURCHASED_PAID_MEDIA_UPDATESÚupdate_parsersÚitems)rI   r<   r�   rV   rX   rZ   r[   r_   rc   rf   ri   rk   rn   rq   ru   rw   ry   r{   r}   r€   r‚   rJ   )rP   rL   rI   rK   Ú__init__`   s–   þ
		ÿþýüûúùø	÷
öõôóòñðïìzDispatcher.__init__c              	   Ã   s€   �| j js<t| j jƒD ]}| j t ¡ ¡ | j | j	 
|  | jd ¡¡¡ qt d| j j¡ | j js>| j  ¡ I d H  d S d S d S )NéÿÿÿÿzStarted %s HandlerTasks)r<   Ú
no_updatesÚrangeÚworkersr�   Úappendrˆ   ÚLockrŽ   r�   Úcreate_taskÚhandler_workerÚlogÚinfoÚskip_updatesÚrecover_gaps)rI   rU   rJ   rJ   rK   Ústart  s   €ÿõ
zDispatcher.startc                 Ã   st   �| j js8t| j jƒD ]}| j d ¡ q| jD ]}|I d H  q| j ¡  | j ¡  | j	 ¡  t
 d| j j¡ d S d S )NzStopped %s HandlerTasks)r<   r­   r®   r¯   r’   Ú
put_nowaitrŽ   Úclearr“   r�   r´   rµ   )rI   ÚirJ   rJ   rK   Ústop  s   €



õzDispatcher.stopÚgroupc                    ó"   ‡ ‡‡fdd„}ˆj  |ƒ ¡ d S )Nc               	   “   s¨   �ˆj D ]	} |  ¡ I d H  qz:tˆtƒr ˆˆjvrˆj ˆ¡ nˆ ˆjvr4g ˆjˆ < ttˆj 	¡ ƒƒˆ_ˆjˆ   ˆ¡ W ˆj D ]} |  
¡  q@d S ˆj D ]} |  
¡  qLw rR   )r�   ÚacquirerC   r   r�   r°   r“   r   Úsortedrª   Úrelease©Úlock©r½   ÚhandlerrI   rJ   rK   Úfn.  s$   €


€

€

ÿ
ÿz"Dispatcher.add_handler.<locals>.fn©r�   r²   ©rI   rÅ   r½   rÆ   rJ   rÄ   rK   Úadd_handler-  s   zDispatcher.add_handlerc                    r¾   )Nc               	   “   sª   �ˆj D ]	} |  ¡ I d H  qz;tˆtƒr(ˆˆjvr!tdˆ› d�ƒ‚ˆj ˆ¡ nˆ ˆjvr5tdˆ › d�ƒ‚ˆjˆ   ˆ¡ W ˆj D ]} |  ¡  qAd S ˆj D ]} |  ¡  qMw )NzError handler z) does not exist. Handler was not removed.zGroup )	r�   r¿   rC   r   r�   Ú
ValueErrorÚremover“   rÁ   rÂ   rÄ   rJ   rK   rÆ   B  s&   €



ÿ
€

ÿ
ÿz%Dispatcher.remove_handler.<locals>.fnrÇ   rÈ   rJ   rÄ   rK   Úremove_handlerA  s   zDispatcher.remove_handlerrÃ   c              
   Ã   s–   �	 | j  ¡ I d H }|d u rd S z3z|  ||¡I d H  W n  tjy&   Y n ty< } zt |¡ W Y d }~nd }~ww W | j  ¡  n| j  ¡  w qrR   )	r’   ÚgetÚ_handle_packetr?   ÚStopPropagationÚ	Exceptionr´   Ú	exceptionÚ	task_done)rI   rÃ   ÚpacketÚerJ   rJ   rK   r³   W  s    €€ÿ€ózDispatcher.handler_workerc           	   	   Ã   sœ   �|\}}}| j  t|ƒ¡}|d ur||||ƒI d H nd td ƒf\}}|4 I d H š |  |||||¡I d H  W d   ƒI d H  d S 1 I d H sGw   Y  d S rR   )r©   rÍ   ÚtypeÚ_dispatch_to_handlers)	rI   rÓ   rÃ   rE   rF   rG   ÚparserÚparsed_updateÚhandler_typerJ   rJ   rK   rÎ   g  s   €
ÿ
þ.ÿzDispatcher._handle_packetc           
      Ã   sÂ   �| j  ¡ D ]X}|D ]S}|  ||||||¡I d H }|d u rq
z| j|g|¢R Ž I d H  W n0 tjy5   ‚  tjy>   Y q
 ty\ }	 z|d urR|  ||	¡I d H  W Y d }	~	nd }	~	ww  qd S rR   )	r“   ÚvaluesÚ_match_handlerÚ_execute_handlerr?   rÏ   ÚContinuePropagationrÐ   Ú_handle_exception)
rI   rE   rF   rG   rØ   rÙ   r½   rÅ   ÚargsÚerrorrJ   rJ   rK   rÖ   s  s,   €
ÿ€þ€ïz Dispatcher._dispatch_to_handlersc              
   Ã   s–   �z1t ||ƒr| | j|¡I d H r|fW S W d S t |tƒr-| | j|¡I d H r0|||fW S W d S W d S  tyJ } zt |¡ W Y d }~d S d }~ww rR   )rC   Úcheckr<   r   rÐ   r´   rÑ   )rI   rÅ   rE   rF   rG   rØ   rÙ   rÔ   rJ   rJ   rK   rÛ   ‰  s&   €
ÿ
úþûý€ýzDispatcher._match_handlerrß   c                 Ç   sV   �t  |j¡r|j| jg|¢R Ž I d H  d S | jj| jj|j| jg|¢R Ž I d H  d S rR   )ÚinspectÚiscoroutinefunctionÚcallbackr<   r�   Úrun_in_executorÚexecutor)rI   rÅ   rß   rJ   rJ   rK   rÜ   ˜  s   €ýüzDispatcher._execute_handlerrØ   rÑ   c                 Ã   s    �d}| j D ]=}z| | j||¡I d H rd}W  n+W q tjy#   ‚  tjy,   Y q tyC } zt d|¡ W Y d }~qd }~ww |sNt d|¡ d S d S )NFTzError in error handler: %szUnhandled exception: %s)	r�   rá   r<   r?   rÏ   rÝ   rÐ   r´   rÑ   )rI   rØ   rÑ   Úhandled_errorÚerror_handlerÚinner_exceptionrJ   rJ   rK   rÞ   £  s*   €

ÿü€ÿÿzDispatcher._handle_exceptionN)r<   r=   )EÚ__name__Ú
__module__Ú__qualname__r   r    r!   r•   r#   r–   r&   r'   r—   r%   r˜   r(   r)   r™   r$   rš   r*   r+   r9   r›   r1   r2   r3   r    r-   rœ   r.   r�   r/   rž   r0   rŸ   r4   r¡   r5   r¢   r6   r¥   r7   r¦   r"   r§   r,   r¤   r8   r£   r:   r¨   r«   r¸   r¼   ÚintrÉ   rÌ   rˆ   r±   r³   rÎ   rÖ   rÛ   r   rÜ   r   ÚUpdaterÐ   rÞ   rJ   rJ   rJ   rK   r;   J   sJ    



 2ÿÿr;   )Frˆ   râ   ÚloggingÚcollectionsr   Útypingr   r?   r   r   r   Úpyrogram.handlers.handlerr   Úpyrogram.handlersr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úpyrogram.raw.typesr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   Ú	getLoggerrê   r´   r;   rJ   rJ   rJ   rK   Ú<module>   s   dx
