
    dh                         d dl mZmZmZmZmZmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZ  G d d      Z G d	 d
e      Zy)    )Any	AwaitableCallableDictOptionalUnion)BaseMiddlewareloggers)get_flag)CallbackAnswerException)AnswerCallbackQuery)CallbackQueryTelegramObjectc                      e Zd Z	 	 	 	 	 ddededee   dee   dee   dee   ddfd	Zdd
Ze	defd       Z
e
j                  deddfd       Z
e	defd       Ze	dee   fd       Zej                  dee   ddfd       Ze	dee   fd       Zej                  dee   ddfd       Ze	dee   fd       Zej                  dee   ddfd       Ze	dee   fd       Zej                  dee   ddfd       ZdefdZy)CallbackAnswerNanswereddisabledtext
show_alerturl
cache_timereturnc                 X    || _         || _        || _        || _        || _        || _        y)aM  
        Callback answer configuration

        :param answered: this request is already answered by middleware
        :param disabled: answer will not be performed
        :param text: answer with text
        :param show_alert: show alert
        :param url: game url
        :param cache_time: cache answer for some time
        N)	_answered	_disabled_text_show_alert_url_cache_time)selfr   r   r   r   r   r   s          W/var/www/netwell/bot/venv/lib/python3.12/site-packages/aiogram/utils/callback_answer.py__init__zCallbackAnswer.__init__   s0    & "!
%	%    c                     d| _         y)z7
        Deactivate answering for this handler
        TN)r   r    s    r!   disablezCallbackAnswer.disable%   s     r#   c                     | j                   S )z;Indicates that automatic answer is disabled in this handler)r   r%   s    r!   r   zCallbackAnswer.disabled+   s     ~~r#   valuec                 @    | j                   rt        d      || _        y )Nz(Can't change disabled state after answer)r   r   r   r    r(   s     r!   r   zCallbackAnswer.disabled0   s    >>)*TUUr#   c                     | j                   S )zJ
        Indicates that request is already answered by middleware
        )r   r%   s    r!   r   zCallbackAnswer.answered6   s    
 ~~r#   c                     | j                   S )z0
        Response text
        :return:
        )r   r%   s    r!   r   zCallbackAnswer.text=   s     zzr#   c                 @    | j                   rt        d      || _        y )NzCan't change text after answer)r   r   r   r*   s     r!   r   zCallbackAnswer.textE   s    >>)*JKK
r#   c                     | j                   S )z-
        Whether to display an alert
        )r   r%   s    r!   r   zCallbackAnswer.show_alertK       
 r#   c                 @    | j                   rt        d      || _        y )Nz$Can't change show_alert after answer)r   r   r   r*   s     r!   r   zCallbackAnswer.show_alertR       >>)*PQQ r#   c                     | j                   S )z
        Game url
        )r   r%   s    r!   r   zCallbackAnswer.urlX   s    
 yyr#   c                 @    | j                   rt        d      || _        y )NzCan't change url after answer)r   r   r   r*   s     r!   r   zCallbackAnswer.url_   s    >>)*IJJ	r#   c                     | j                   S )z%
        Response cache time
        )r   r%   s    r!   r   zCallbackAnswer.cache_timee   r/   r#   c                 @    | j                   rt        d      || _        y )Nz$Can't change cache_time after answer)r   r   r   r*   s     r!   r   zCallbackAnswer.cache_timel   r1   r#   c           
      
   dj                  d | j                  | j                  | j                  | j                  | j
                  | j                  dj                         D              }t        |       j                   d| dS )Nz, c              3   4   K   | ]  \  }}|	| d|  y w)N= ).0kvs      r!   	<genexpr>z)CallbackAnswer.__str__.<locals>.<genexpr>s   s-      
1 } c1%L
s   r   r   r   r   r   r   ())
joinr   r   r   r   r   r   itemstype__name__)r    argss     r!   __str__zCallbackAnswer.__str__r   st    yy 
 !MM MM		"ooxx"oo eg
 
 t*%%&avQ//r#   FNNNN)r   N)rD   
__module____qualname__boolr   strintr"   r&   propertyr   setterr   r   r   r   r   rF   r9   r#   r!   r   r   
   s    "%)!$(&& & sm	&
 TN& c]& SM& 
&4 $   __d t  
 $   hsm   
[[(3- D  
  HTN     ! !4 ! !
 Xc]   	ZZ# 4  
  HSM     ! !$ ! !
0 0r#   r   c                       e Zd Z	 	 	 	 	 ddedee   dee   dee   de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deee
eef   ef      defdZd
ededefdZy)CallbackAnswerMiddlewareNprer   r   r   r   r   c                 J    || _         || _        || _        || _        || _        y)a  
        Inner middleware for callback query handlers, can be useful in bots with a lot of callback
        handlers to automatically take answer to all requests

        :param pre: send answer before execute handler
        :param text: answer with text
        :param show_alert: show alert
        :param url: game url
        :param cache_time: cache answer for some time
        N)rQ   r   r   r   r   )r    rQ   r   r   r   r   s         r!   r"   z!CallbackAnswerMiddleware.__init__   s'    $ 	$$r#   handlereventdatac                   K   t        |t              s |||       d {   S | j                  t        |d            x}|d<   |j                  s&|j
                  r| j                  ||       d {    	  |||       d {   |j                  s(|j
                  s| j                  ||       d {    S S S 7 7 L7 <7 # |j                  s)|j
                  s| j                  ||       d {  7   w w w xY ww)Ncallback_answer)
properties)
isinstancer   construct_callback_answerr   r   r   answer)r    rS   rT   rU   rW   s        r!   __call__z!CallbackAnswerMiddleware.__call__   s      %/ ---484R4R&78 5S 5
 	
$01 ''O,D,D++e_555	: --"++O4L4Lkk%999 5M+ . 6- : #++O4L4Lkk%999 5M+sj   C?B=AC?2B?3C?8C CC -C?5C6C??C?C C?.C<3C64C<<C?rX   c                    | j                   d| j                  | j                  | j                  | j                  f\  }}}}}}t        |t              rl|j                  d|      }|j                  d|      }|j                  d|      }|j                  d|      }|j                  d|      }|j                  d|      }t        ||||||      S )	NFrQ   r   r   r   r   r   r>   )	rQ   r   r   r   r   rY   dictgetr   )r    rX   rQ   r   r   r   r   r   s           r!   rZ   z2CallbackAnswerMiddleware.construct_callback_answer   s     HHIIOOHHOO<
8XtZj j$'..,C!~~j(;H>>&$/D#jAJ..,C#jAJ!!
 	
r#   rW   c                     t         j                  j                  d|j                         |j	                  |j
                  |j                  |j                  |j                        S )NzAnswer to callback query id=%s)r   r   r   r   )	r
   middlewaresinfoidr[   r   r   r   r   )r    rT   rW   s      r!   r[   zCallbackAnswerMiddleware.answer   sW      !A588L|| %%&11##&11	  
 	
r#   rG   )rD   rH   rI   rJ   r   rK   rL   r"   r   r   r   r   r   r\   r   r   rZ   r   r   r[   r9   r#   r!   rP   rP      s     "%)!$(%% sm% TN	%
 c]% SM% 
%0:>4S>:IcNJK: : 38n	:
 
:*
"5c3h)=#>?
	
8
M 
N 
Ob 
r#   rP   N)typingr   r   r   r   r   r   aiogramr	   r
   aiogram.dispatcher.flagsr   aiogram.exceptionsr   aiogram.methodsr   aiogram.typesr   r   r   rP   r9   r#   r!   <module>rj      s5    B B + - 6 / 7u0 u0pQ
~ Q
r#   