Ë
    ö­¦ja-  ã                  óœ   — U d dl mZ d dlmZ d dlmZmZmZ ddlm	Z	m
Z
 ddlmZ ddlmZ erd dlmZ  ed	d
h«      Zded<    G d„ d«      Zy)é    )Úannotations)Ú	Generator)ÚTYPE_CHECKINGÚAnyÚFinalé   )ÚREJECTEDÚ	UNHANDLED)ÚEventObserver)ÚTelegramEventObserver)ÚTelegramObjectÚupdateÚerrorzFinal[frozenset[str]]ÚINTERNAL_UPDATE_TYPESc                  óØ   — e Zd ZdZddœdd„Zdd„Zdd„Zddd„Zdd„Z	 	 	 	 	 	 	 	 	 	 dd	„Z	e
dd
„«       Ze
dd„«       Ze
dd„«       Zej                  dd„«       Zdd„Zdd„Zdd„Zdd„Zy)ÚRouteraZ  
    Router can route update, and it nested update types like messages, callback query,
    polls and all other event types.

    Event handlers can be registered in observer by two ways:

    - By observer method - :obj:`router.<event_type>.register(handler, <filters, ...>)`
    - By decorator - :obj:`@router.<event_type>(<filters, ...>)`
    N)Únamec               óT  — |xs t        t        | «      «      | _        d| _        g | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _	        t        | d¬«      | _
        t        | d¬«      | _        t        | d	¬«      | _        t        | d
¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _        t        | d¬«      | _         t        | d¬«      x| _!        | _"        tG        «       | _$        tG        «       | _%        i d| j                  “d| j                  “d| j                  “d| j                  “d| j                  “d| j                  “d	| j                  “d
| j                  “d| j                  “d| j                  “d| j                   “d| j"                  “d| j$                  “d| j&                  “d| j(                  “d| j*                  “d| j,                  “| j.                  | j0                  | j2                  | j4                  | j6                  | j8                  | j:                  | j<                  | j>                  | j@                  | jB                  dœ¥| _&        y) zP
        :param name: Optional router name, can be useful for debugging
        NÚmessage)ÚrouterÚ
event_nameÚedited_messageÚchannel_postÚedited_channel_postÚinline_queryÚchosen_inline_resultÚcallback_queryÚshipping_queryÚpre_checkout_queryÚpollÚpoll_answerÚmy_chat_memberÚchat_memberÚchat_join_requestÚmessage_reactionÚmessage_reaction_countÚ
chat_boostÚremoved_chat_boostÚdeleted_business_messagesÚbusiness_connectionÚedited_business_messageÚbusiness_messageÚpurchased_paid_mediaÚmanaged_botÚguest_messageÚsubscriptionÚstopped_message_generationr   )r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r   )'ÚhexÚidr   Ú_parent_routerÚsub_routersr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   Úerrorsr   r   ÚstartupÚshutdownÚ	observers)Úselfr   s     úL/var/www/html/venv/lib/python3.12/site-packages/aiogram/dispatcher/router.pyÚ__init__zRouter.__init__   sÀ  € ð
 Ò)œC¤ 4£›MˆŒ	à-1ˆÔØ)+ˆÔô -°DÀYÔOˆŒÜ3¸4ÐL\Ô]ˆÔÜ1¸È.ÔYˆÔÜ#8ØØ,ô$
ˆÔ ô 2¸È.ÔYˆÔÜ$9ØØ-ô%
ˆÔ!ô 4¸4ÐL\Ô]ˆÔÜ3¸4ÐL\Ô]ˆÔÜ"7ØØ+ô#
ˆÔô *°À&ÔIˆŒ	Ü0¸ÈÔWˆÔÜ3¸4ÐL\Ô]ˆÔÜ0¸ÈÔWˆÔÜ!6¸dÐObÔ!cˆÔÜ 5¸TÐN`Ô aˆÔÜ&;ØØ/ô'
ˆÔ#ô 0°tÈÔUˆŒÜ"7ØØ+ô#
ˆÔô *?ØØ2ô*
ˆÔ&ô $9ØØ,ô$
ˆÔ ô (=ØØ0ô(
ˆÔ$ô !6¸TÐN`Ô aˆÔÜ$9ØØ-ô%
ˆÔ!ô 1¸ÈÔWˆÔÜ2¸$È?Ô[ˆÔÜ1¸È.ÔYˆÔÜ*?ØØ3ô+
ˆÔ'ô
 $9ÀÐQXÔ#YÐYˆŒ�d”jä$“ˆŒÜ%›ˆŒð<
Ø�t—|‘|ð<
à˜d×1Ñ1ð<
ð ˜D×-Ñ-ð<
ð " 4×#;Ñ#;ð	<
ð
 ˜D×-Ñ-ð<
ð # D×$=Ñ$=ð<
ð ˜d×1Ñ1ð<
ð ˜d×1Ñ1ð<
ð ! $×"9Ñ"9ð<
ð �D—I‘Ið<
ð ˜4×+Ñ+ð<
ð ˜d×1Ñ1ð<
ð ˜4×+Ñ+ð<
ð   ×!7Ñ!7ð<
ð  × 5Ñ 5ð<
ð  % d×&AÑ&Að!<
ð" ˜$Ÿ/™/ð#<
ð$ #'×"9Ñ"9Ø)-×)GÑ)GØ#'×#;Ñ#;Ø'+×'CÑ'CØ $× 5Ñ 5Ø$(×$=Ñ$=Ø×+Ñ+Ø!×/Ñ/Ø ×-Ñ-Ø*.×*IÑ*IØ—[‘[ò9<
ˆ�ó    c                óJ   — t        | «      j                  › d| j                  ›�S )Nú )ÚtypeÚ__name__r   ©r:   s    r;   Ú__str__zRouter.__str__„   s"   € Ü�t“*×%Ñ%Ð& a¨¯	©	 }Ð5Ð5r=   c                ó   — d| › d�S )Nú<ú>© rB   s    r;   Ú__repr__zRouter.__repr__‡   s   € Ø�4�&˜ˆ{Ðr=   c                ó  — t        «       }|€
t        «       }h |£t        £}| j                  D ]G  }|j                  j	                  «       D ](  \  }}|j
                  sŒ||vsŒ|j                  |«       Œ* ŒI t        |«      S )zá
        Resolve registered event names

        Is useful for getting updates only for registered event types.

        :param skip_events: skip specified event names
        :return: sorted list of registered names
        )Úsetr   Ú
chain_tailr9   ÚitemsÚhandlersÚaddÚsorted)r:   Úskip_eventsÚhandlers_in_user   Úupdate_nameÚobservers         r;   Úresolve_used_update_typesz Router.resolve_used_update_typesŠ   s‰   € ô %(£EˆØÐÜ›%ˆKØ<˜Ð<Ô&;Ð<ˆà—o‘oò 	5ˆFØ)/×)9Ñ)9×)?Ñ)?Ó)Aò 5Ñ%�˜XØ×$Ó$¨¸KÒ)GØ#×'Ñ'¨Õ4ñ5ð	5ô
 �oÓ&Ð&r=   c              ‹  óà   ‡ ‡‡K  — |j                  ‰ ¬«       ‰ j                  j                  ‰«      Šdˆˆ ˆfd„}‰r‰j                  |||¬«      ƒ d {  –—† S  ||fi |¤Žƒ d {  –—† S 7 Œ7 Œ­w)N)Úevent_routerc              ›  óL   •K  —  ‰j                   d‰‰| dœ|¤Žƒ d {  –—† S 7 Œ­w)N)rS   Úupdate_typeÚeventrG   )Ú_propagate_event)Útelegram_eventÚdatarS   r:   rX   s     €€€r;   Ú_wrappedz(Router.propagate_event.<locals>._wrapped£   s>   øè ø€ Ø.˜×.Ñ.ð Ø!Ø'Ø$ñð ñ	÷ ð ð ús   ƒ$�"ž$)rY   r\   )r[   r   r\   r   Úreturnr   )r   r9   ÚgetÚwrap_outer_middleware)r:   rX   rY   Úkwargsr]   rS   s   ``   @r;   Úpropagate_eventzRouter.propagate_eventŸ   sl   úè ø€ Ø�‰ 4ˆÔ(Ø—>‘>×%Ñ% kÓ2ˆ÷	ñ Ø!×7Ñ7¸ÈÐTZÐ7Ó[×[Ð[Ù˜eÑ. vÑ.×.Ð.ð \øØ.ús$   …AA.ÁA*ÁA.Á%A,Á&A.Á,A.c              ‹  óp  K  — t         }|rj |j                  |fi |¤Žƒ d {  –—† \  }}|st         S |j                  |«        |j                  |fi |¤Žƒ d {  –—† }|t        u rt         S |t         ur|S | j
                  D ]*  } |j                  d||dœ|¤Žƒ d {  –—† }|t         usŒ) |S  |S 7 ŒŽ7 ŒY7 Œ­w)N)rX   rY   rG   )r
   Úcheck_root_filtersr   Útriggerr	   r5   rb   )	r:   rS   rX   rY   ra   ÚresponseÚresultr\   r   s	            r;   rZ   zRouter._propagate_event¯   sÚ   è ø€ ô ˆÙð "= ×!<Ñ!<¸UÑ!MÀfÑ!M×M‰LˆF�DÙÜ Ð Ø�M‰M˜$Ôà-˜X×-Ñ-¨eÑ>°vÑ>×>ˆHØœ8Ñ#ä Ð ØœyÑ(Ø�à×&Ñ&ò 	ˆFØ3˜V×3Ñ3ÐcÀÐSXÑcÐ\bÑc×cˆHØœyÒ(Øàˆð	ð
 ˆð# Nøð
 ?øð dús:   ‚B6¡B0¢6B6ÁB2ÁAB6ÂB4ÂB6Â*B6Â2B6Â4B6c              #  ó<   K  — | }|r|–— |j                   }|rŒy y ­w©N)Úparent_router©r:   r   s     r;   Ú
chain_headzRouter.chain_headÎ   s#   è ø€ à $ˆÙØŠLØ×)Ñ)ˆFô ùs   ‚šc              #  ób   K  — | –— | j                   D ]  }|j                  E d {  –—†  Œ y 7 Œ­wri   )r5   rK   rk   s     r;   rK   zRouter.chain_tailÕ   s2   è ø€ àŠ
Ø×&Ñ&ò 	)ˆFØ×(Ñ(×(Ñ(ñ	)Ø(ús   ‚#/¥-¦/c                ó   — | j                   S ri   )r4   rB   s    r;   rj   zRouter.parent_routerÛ   s   € à×"Ñ"Ð"r=   c                óh  — t        |t        «      s#dt        |«      j                  ›�}t	        |«      ‚| j
                  rd| j
                  ›�}t        |«      ‚| |k(  rd}t        |«      ‚|}|�!|| k(  rd}t        |«      ‚|j                  }|�Œ!|| _        |j                  j                  | «       y)a  
        Internal property setter of parent router fot this router.
        Do not use this method in own code.
        All routers should be included via `include_router` method.

        Self- and circular- referencing are not allowed here

        :param router:
        ú(router should be instance of Router not zRouter is already attached to z'Self-referencing routers is not allowedNz-Circular referencing of Router is not allowed)
Ú
isinstancer   r@   rA   Ú
ValueErrorr4   ÚRuntimeErrorrj   r5   Úappend)r:   r   ÚmsgÚparents       r;   rj   zRouter.parent_routerß   sÀ   € ô ˜&¤&Ô)Ø<¼TÀ&»\×=RÑ=RÐ<UÐVˆCÜ˜S“/Ð!Ø×ÒØ2°4×3FÑ3FÐ2IÐJˆCÜ˜sÓ#Ð#Ø�6Š>Ø;ˆCÜ˜sÓ#Ð#à &ˆØÐ Ø˜Š~ØE�Ü" 3Ó'Ð'à×)Ñ)ˆFð Ñ ð %ˆÔØ×Ñ×!Ñ! $Õ'r=   c                óR   — |sd}t        |«      ‚|D ]  }| j                  |«       Œ y)zT
        Attach multiple routers.

        :param routers:
        :return:
        z$At least one router must be providedN)rr   Úinclude_router)r:   Úroutersru   r   s       r;   Úinclude_routerszRouter.include_routersÿ   s3   € ñ Ø8ˆCÜ˜S“/Ð!Øò 	(ˆFØ×Ñ Õ'ñ	(r=   c                óz   — t        |t        «      s#dt        |«      j                  ›�}t	        |«      ‚| |_        |S )zQ
        Attach another router.

        :param router:
        :return:
        rp   )rq   r   r@   rA   rr   rj   )r:   r   ru   s      r;   rx   zRouter.include_router  s<   € ô ˜&¤&Ô)Ø<¼TÀ&»\×=RÑ=RÐ<UÐVˆCÜ˜S“/Ð!Ø#ˆÔØˆr=   c              �  óÖ   K  — |j                  | ¬«        | j                  j                  |i |¤Žƒ d{  –—†  | j                  D ]  } |j                  |i |¤Žƒ d{  –—†  Œ y7 Œ07 Œ	­w)zr
        Recursively call startup callbacks

        :param args:
        :param kwargs:
        :return:
        ©r   N)r   r7   re   r5   Úemit_startup©r:   Úargsra   r   s       r;   r~   zRouter.emit_startup  sn   è ø€ ð 	�‰˜TˆÔ"Ø"ˆd�l‰l×"Ñ" DÐ3¨FÑ3×3Ð3Ø×&Ñ&ò 	7ˆFØ%�&×%Ñ% tÐ6¨vÑ6×6Ñ6ñ	7ð 	4øà6úó!   ‚2A)´A%µ(A)ÁA'ÁA)Á'A)c              �  óÖ   K  — |j                  | ¬«        | j                  j                  |i |¤Žƒ d{  –—†  | j                  D ]  } |j                  |i |¤Žƒ d{  –—†  Œ y7 Œ07 Œ	­w)zˆ
        Recursively call shutdown callbacks to graceful shutdown

        :param args:
        :param kwargs:
        :return:
        r}   N)r   r8   re   r5   Úemit_shutdownr   s       r;   rƒ   zRouter.emit_shutdown&  sn   è ø€ ð 	�‰˜TˆÔ"Ø#ˆd�m‰m×#Ñ# TÐ4¨VÑ4×4Ð4Ø×&Ñ&ò 	8ˆFØ&�&×&Ñ&¨Ð7°Ñ7×7Ñ7ñ	8ð 	5øà7úr�   )r   z
str | Noner^   ÚNone)r^   Ústrri   )rP   zset[str] | Noner^   z	list[str])rX   r…   rY   r   ra   r   r^   r   )
rS   zTelegramEventObserver | NonerX   r…   rY   r   ra   r   r^   r   )r^   zGenerator[Router, None, None])r^   zRouter | None)r   r   r^   r„   )ry   r   r^   r„   )r   r   r^   r   )r€   r   ra   r   r^   r„   )rA   Ú
__module__Ú__qualname__Ú__doc__r<   rC   rH   rT   rb   rZ   Úpropertyrl   rK   rj   Úsetterrz   rx   r~   rƒ   rG   r=   r;   r   r      sÆ   „ ñð .2õ g
óR6óô'ó*/ð à.ðð ðð ð	ð
 ðð 
óð> ò*ó ð*ð ò)ó ð)ð
 ò#ó ð#ð ×Ñò(ó ð(ó>(óó7ô8r=   r   N)Ú
__future__r   Úcollections.abcr   Útypingr   r   r   Úevent.basesr	   r
   Úevent.eventr   Úevent.telegramr   Úaiogram.typesr   Ú	frozensetr   Ú__annotations__r   rG   r=   r;   ú<module>r”      sB   ðÞ "å %ß ,Ñ ,ç ,Ý &Ý 1áÝ,á/8¸(ÀGÐ9LÓ/MÐ Ð,Ó M÷a8ò a8r=   