
    ,h                         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
e
      Zy)    )Any	AwaitableCallableDictOptionalcast)Bot)BaseMiddleware)EVENT_CONTEXT_KEYEventContext)
FSMContext)DEFAULT_DESTINYBaseEventIsolationBaseStorage
StorageKey)FSMStrategyapply_strategy)TelegramObjectc                   2   e Zd Zej                  fdedededdfdZdee	e
eef   gee   f   de	d	e
eef   defd
Zefded	e
eef   dedee   fdZddefdedee   dee   dee   dee   dedee   fdZddefdedededee   dee   dedefdZddZy)FSMContextMiddlewarestorageevents_isolationstrategyreturnNc                 .    || _         || _        || _        y N)r   r   r   )selfr   r   r   s       I/var/www/html/venv/lib/python3.12/site-packages/aiogram/fsm/middleware.py__init__zFSMContextMiddleware.__init__   s       0    handlereventdatac                   K   t        t        |d         }| j                  ||      }| j                  |d<   |r{| j                  j                  |j                        4 d {    |j                  ||j                          d {   d        |||       d {   cd d d       d {    S  |||       d {   S 7 a7 ?7 *7 # 1 d {  7  sw Y   +xY w7 !w)Nbotfsm_storage)key)state	raw_state)	r   r	   resolve_event_contextr   r   lockr'   update	get_state)r   r!   r"   r#   r%   contexts         r   __call__zFSMContextMiddleware.__call__   s      T%[),,S$7"ll] ,,11gkk1B 2 2g'BSBSBU<UVW$UD112 2 2 UD)))2<U12 2 2 2 *sx   A!C$#C$C$' CCCC	C"C$.C/C$ C"C$C	CC$CCCC$r%   destinyc                     t        t        |j                  t                    }| j	                  ||j
                  |j                  |j                  |j                  |      S )Nr%   chat_iduser_id	thread_idbusiness_connection_idr0   )	r   r   getr   resolve_contextr3   r4   r5   r6   )r   r%   r#   r0   event_contexts        r   r*   z*FSMContextMiddleware.resolve_event_context-   s\     '+<BS9T&U##!))!))#--#0#G#G $ 
 	
r    r3   r4   r5   r6   c                 |    ||}|6|4t        |||| j                        \  }}}| j                  ||||||      S y )N)r3   r4   r5   r   r2   )r   r   get_contextr   r%   r3   r4   r5   r6   r0   s          r   r8   z$FSMContextMiddleware.resolve_context=   sk     ?G7#6*8#	+'GWi ###'= $   r    c                 b    t        | j                  t        |||j                  |||            S )N)r4   r3   bot_idr5   r6   r0   )r   r'   )r   r   r   idr<   s          r   r;   z FSMContextMiddleware.get_contextZ   s6     LLvv#'=

 
	
r    c                    K   | j                   j                          d {    | j                  j                          d {    y 7 '7 wr   )r   closer   )r   s    r   rA   zFSMContextMiddleware.closeo   s=     ll  """##))+++ 	#+s!   AA!AA
A
A)r   N)__name__
__module____qualname__r   USER_IN_CHATr   r   r   r   r   r   strr   r   r/   r   r	   r   r   r*   intr8   r;   rA    r    r   r   r      s   
 !, 8 8	11 -1 	1
 
1*>4S>:IcNJK* * 38n	*
 
** '	

 38n
 	

 
*	
* $(04& # #	
 C= !)  
*	D $(04&

 
 	

 C=
 !)
 
 

*,r    r   N)typingr   r   r   r   r   r   aiogramr	   #aiogram.dispatcher.middlewares.baser
   +aiogram.dispatcher.middlewares.user_contextr   r   aiogram.fsm.contextr   aiogram.fsm.storage.baser   r   r   r   aiogram.fsm.strategyr   r   aiogram.typesr   r   rH   r    r   <module>rQ      s7    A A  > W *  = (`,> `,r    