o
    Fh\                     @   s   d dl mZ d dl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mZmZ dZdZdZdZed	d
G dd dZG dd de	ZdS )    )	dataclass)Any	AwaitableCallableDictOptional)BaseMiddleware)ChatChatBoostSourcePremiumInaccessibleMessageTelegramObjectUpdateUserevent_contextevent_from_user
event_chatevent_thread_idT)frozenc                   @   sz   e Zd ZU dZee ed< dZee ed< dZ	ee
 ed< dZee ed< edee
 fddZedee
 fd	d
ZdS )EventContextNchatuser	thread_idbusiness_connection_idreturnc                 C      | j r| j jS d S N)r   idself r   ^/var/www/html/venv/lib/python3.10/site-packages/aiogram/dispatcher/middlewares/user_context.pyuser_id      zEventContext.user_idc                 C   r   r   )r   r   r   r   r   r    chat_id    r"   zEventContext.chat_id)__name__
__module____qualname__r   r   r	   __annotations__r   r   r   intr   strpropertyr!   r#   r   r   r   r    r      s   
 r   c                   @   s\   e Zd Zdeeeeef gee f dedeeef defddZ	e
dedefddZd	S )
UserContextMiddlewarehandlereventdatar   c                    st   t |ts
td| j|d }|t< |jd ur|j|t< |jd ur(|j|t< |j	d ur2|j	|t
< |||I d H S )Nz3UserContextMiddleware got an unexpected event type!)r-   )
isinstancer   RuntimeErrorresolve_event_contextEVENT_CONTEXT_KEYr   EVENT_FROM_USER_KEYr   EVENT_CHAT_KEYr   EVENT_THREAD_ID_KEY)r   r,   r-   r.   r   r   r   r    __call__&   s   






zUserContextMiddleware.__call__c                 C   s  |j rt|j j|j j|j jr|j jdS ddS |jr0t|jj|jj|jjr,|jjdS ddS |jr:t|jjdS |jrDt|jjdS |j	rNt|j	jdS |j
rXt|j
jdS |jr|jj }|rt|j|jjt|tsr|jrr|jndt|ts}|jdS ddS t|jjdS |jrt|jjdS |jrt|jjdS |jrt|jj|jjdS |jrt|jj|jjdS |jrt|jj|jjdS |jrt|jj|jjdS |jrt|jj|jjdS |jrt|jjdS |jrt|jjjtrt|jj|jjjjdS t|jjdS |jrt|jjdS |jrt|jj|jjdS |jr-t|jj|jj dS |j!rHt|j!j|j!j|j!jrA|j!jnd|j!jdS |j"rct|j"j|j"j|j"jr\|j"jnd|j"jdS |j#rnt|j#jdS t S )	zC
        Resolve chat and user instance from Update object
        N)r   r   r   )r   )r   )r   r   r   r   )r   r   )r   r   )r   r   )$messager   r   	from_useris_topic_messagemessage_thread_idedited_messagechannel_postedited_channel_postinline_querychosen_inline_resultcallback_queryr/   r   r   shipping_querypre_checkout_querypoll_answer
voter_chatr   my_chat_memberchat_memberchat_join_requestmessage_reactionmessage_reaction_count
chat_boostboostsourcer
   removed_chat_boostdeleted_business_messagesbusiness_connectionr   business_messageedited_business_messagepurchased_paid_media)clsr-   callback_query_messager   r   r    r1   :   s   	


z+UserContextMiddleware.resolve_event_contextN)r$   r%   r&   r   r   r   r)   r   r   r6   classmethodr   r   r1   r   r   r   r    r+   %   s    

r+   N)dataclassesr   typingr   r   r   r   r   #aiogram.dispatcher.middlewares.baser   aiogram.typesr	   r
   r   r   r   r   r2   r3   r4   r5   r   r+   r   r   r   r    <module>   s     	