a
    9g                     @   s   d dl mZmZmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZmZmZmZ d dlmZmZ d dlmZ G d	d
 d
e
ZdS )    )Any	AwaitableCallableDictOptionalcast)Bot)BaseMiddleware)EVENT_CONTEXT_KEYEventContext)
FSMContext)DEFAULT_DESTINYBaseEventIsolationBaseStorage
StorageKey)FSMStrategyapply_strategy)TelegramObjectc                	   @   s   e Zd ZejfeeeddddZee	e
eef gee f e	e
eef edddZefee
eef eee dd	d
Zddefeee ee ee ee eee dddZddefeeeee ee eedddZddddZdS )FSMContextMiddlewareN)storageevents_isolationstrategyreturnc                 C   s   || _ || _|| _d S N)r   r   r   )selfr   r   r    r   s/var/www/vosh/data/www/fastworkle.ru/webshop-tgbot-v.1.0/venv/lib/python3.9/site-packages/aiogram/fsm/middleware.py__init__   s    zFSMContextMiddleware.__init__)handlereventdatar   c              	      s   t t|d }| ||}| j|d< |r| jj|jd4 I d H @ ||| I d H d |||I d H W  d   I d H  S 1 I d H s0    Y  |||I d H S )NbotZfsm_storage)key)stateZ	raw_state)	r   r   resolve_event_contextr   r   lockr"   updateZ	get_state)r   r   r   r    r!   contextr   r   r   __call__   s    
:zFSMContextMiddleware.__call__)r!   r    destinyr   c                 C   s.   t t|t}| j||j|j|j|j|dS )Nr!   chat_iduser_id	thread_idbusiness_connection_idr)   )	r   r   getr
   resolve_contextr+   r,   r-   r.   )r   r!   r    r)   Zevent_contextr   r   r   r$   -   s    z*FSMContextMiddleware.resolve_event_context)r!   r+   r,   r-   r.   r)   r   c                 C   sN   |d u r|}|d urJ|d urJt |||| jd\}}}| j||||||dS d S )N)r+   r,   r-   r   r*   )r   r   get_contextr   r!   r+   r,   r-   r.   r)   r   r   r   r0   =   s$    	z$FSMContextMiddleware.resolve_contextc              
   C   s    t | jt|||j|||ddS )N)r,   r+   Zbot_idr-   r.   r)   )r   r"   )r   r   r   idr2   r   r   r   r1   Z   s    	z FSMContextMiddleware.get_context)r   c                    s$   | j  I d H  | j I d H  d S r   )r   closer   )r   r   r   r   r4   o   s    zFSMContextMiddleware.close)__name__
__module____qualname__r   ZUSER_IN_CHATr   r   r   r   r   r   strr   r   r(   r   r   r   r   r$   intr0   r1   r4   r   r   r   r   r      sX   

"r   N)typingr   r   r   r   r   r   Zaiogramr   Z#aiogram.dispatcher.middlewares.baser	   Z+aiogram.dispatcher.middlewares.user_contextr
   r   Zaiogram.fsm.contextr   Zaiogram.fsm.storage.baser   r   r   r   Zaiogram.fsm.strategyr   r   Zaiogram.typesr   r   r   r   r   r   <module>   s    