
    G˝i                         d dl mZmZ d dl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)    )	AwaitableCallable)Any)BaseMiddlewareloggers)get_flag)CallbackAnswerException)AnswerCallbackQuery)CallbackQueryTelegramObjectc                      e Zd Z	 	 	 	 	 ddedededz  dedz  dedz  dedz  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dz  fd       Zej                  dedz  ddfd       Zededz  fd       Zej                  dedz  ddfd       Zededz  fd       Zej                  dedz  ddfd       Zededz  fd       Zej                  dedz  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          V/home/leshdev/mybot/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                 D    | j                   rd}t        |      || _        y )Nz(Can't change disabled state after answer)r   r	   r   r   r%   msgs      r   r   zCallbackAnswer.disabled1   s     >><C)#..r    c                     | j                   S )zJ
        Indicates that request is already answered by middleware
        )r   r"   s    r   r   zCallbackAnswer.answered8   s    
 ~~r    c                     | j                   S )z0
        Response text
        :return:
        )r   r"   s    r   r   zCallbackAnswer.text?   s     zzr    c                 D    | j                   rd}t        |      || _        y )NzCan't change text after answer)r   r	   r   r'   s      r   r   zCallbackAnswer.textG   s     >>2C)#..
r    c                     | j                   S )z-
        Whether to display an alert
        )r   r"   s    r   r   zCallbackAnswer.show_alertN       
 r    c                 D    | j                   rd}t        |      || _        y )Nz$Can't change show_alert after answer)r   r	   r   r'   s      r   r   zCallbackAnswer.show_alertU   !    >>8C)#.. r    c                     | j                   S )z
        Game url
        )r   r"   s    r   r   zCallbackAnswer.url\   s    
 yyr    c                 D    | j                   rd}t        |      || _        y )NzCan't change url after answer)r   r	   r   r'   s      r   r   zCallbackAnswer.urlc   s     >>1C)#..	r    c                     | j                   S )z%
        Response cache time
        )r   r"   s    r   r   zCallbackAnswer.cache_timej   r-   r    c                 D    | j                   rd}t        |      || _        y )Nz$Can't change cache_time after answer)r   r	   r   r'   s      r   r   zCallbackAnswer.cache_timeq   r/   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>y   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__x   st    yy 
 !MM MM		"ooxx"oo eg
 
 t*%%&avQ//r    FNNNN)r   N)rB   
__module____qualname__boolstrintr   r#   propertyr   setterr   r   r   r   r   rD   r7   r    r   r   r      s    "&!%&& & Dj	&
 4K& 4Z& $J& 
&4 $   __d t   $   cDj   
[[#*     D4K     !t ! ! ! S4Z   	ZZt     C$J     !d
 !t ! !0 0r    r   c                       e Zd Z	 	 	 	 	 ddededz  dedz  dedz  dedz  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
f   ez  dz  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)rO   r   r   r   r   )r   rO   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   rQ   rR   rS   rU   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?rV   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 )	NFrO   r   r   r   r   r   r<   )	rO   r   r   r   r   rW   dictgetr   )r   rV   rO   r   r   r   r   r   s           r   rX   z2CallbackAnswerMiddleware.construct_callback_answer   s    
 HHIIOOHHOO<
8XtZj j$'..,C!~~j(;H>>&$/D#jAJ..,C#jAJ!!
 	
r    rU   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idrY   r   r   r   r   )r   rR   rU   s      r   rY   zCallbackAnswerMiddleware.answer   sW      !A588L|| %%&11##&11	  
 	
r    rE   )rB   rF   rG   rH   rI   rJ   r   r   r   r\   r   r   rZ   r   rX   r   r
   rY   r7   r    r   rN   rN      s     "&!%%% Dj% 4K	%
 4Z% $J% 
%0:>4S>:IcNJK: : 38n	:
 
:*
cNT)D0
 

:
M 
N 
Ob 
r    rN   N)collections.abcr   r   typingr   aiogramr   r   aiogram.dispatcher.flagsr   aiogram.exceptionsr	   aiogram.methodsr
   aiogram.typesr   r   r   rN   r7   r    r   <module>ri      s5    /  + - 6 / 7z0 z0zR
~ R
r    