o
    Fh                     @   s   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 dZG d	d
 d
eZdS )    )Any	AwaitableCallableDictOptionalUnion)BaseMiddlewareloggers)get_flag)CallbackAnswerException)AnswerCallbackQuery)CallbackQueryTelegramObjectc                   @   sj  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
dZd#ddZe	d	efddZ
e
jded	dfddZ
e	d	efddZe	d	ee fddZejdee d	dfddZe	d	ee fddZejdee d	dfddZe	d	ee fddZejdee d	dfddZe	d	ee fddZejdee d	dfddZd	efd d!ZdS )$CallbackAnswerFNanswereddisabledtext
show_alerturl
cache_timereturnc                 C   s(   || _ || _|| _|| _|| _|| _dS )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    r   P/var/www/html/venv/lib/python3.10/site-packages/aiogram/utils/callback_answer.py__init__   s   
zCallbackAnswer.__init__c                 C   s
   d| _ dS )z7
        Deactivate answering for this handler
        TN)r   r   r   r   r   disable%   s   
zCallbackAnswer.disablec                 C      | j S )z;Indicates that automatic answer is disabled in this handler)r   r!   r   r   r   r   +   s   zCallbackAnswer.disabledvaluec                 C      | j rtd|| _d S )Nz(Can't change disabled state after answer)r   r   r   r   r$   r   r   r   r   0      
c                 C   r#   )zJ
        Indicates that request is already answered by middleware
        )r   r!   r   r   r   r   6      zCallbackAnswer.answeredc                 C   r#   )z0
        Response text
        :return:
        )r   r!   r   r   r   r   =   s   zCallbackAnswer.textc                 C   r%   )NzCan't change text after answer)r   r   r   r&   r   r   r   r   E   r'   c                 C   r#   )z-
        Whether to display an alert
        )r   r!   r   r   r   r   K   r(   zCallbackAnswer.show_alertc                 C   r%   )Nz$Can't change show_alert after answer)r   r   r   r&   r   r   r   r   R   r'   c                 C   r#   )z
        Game url
        )r   r!   r   r   r   r   X   r(   zCallbackAnswer.urlc                 C   r%   )NzCan't change url after answer)r   r   r   r&   r   r   r   r   _   r'   c                 C   r#   )z%
        Response cache time
        )r   r!   r   r   r   r   e   r(   zCallbackAnswer.cache_timec                 C   r%   )Nz$Can't change cache_time after answer)r   r   r   r&   r   r   r   r   l   r'   c              
   C   sH   d dd | j| j| j| j| j| jd D }t| j	 d| dS )Nz, c                 s   s*    | ]\}}|d ur| d|V  qd S )N=r   ).0kvr   r   r   	<genexpr>s   s    	z)CallbackAnswer.__str__.<locals>.<genexpr>r   r   r   r   r   r   ())
joinr   r   r   r   r   r   itemstype__name__)r   argsr   r   r   __str__r   s   
zCallbackAnswer.__str__FNNNN)r   N)r4   
__module____qualname__boolr   strintr    r"   propertyr   setterr   r   r   r   r   r6   r   r   r   r   r   
   sZ    

r   c                   @   s   e Zd Z					ddedee dee dee dee ddfd	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deee
eef ef  defddZdededefddZdS )CallbackAnswerMiddlewareFNprer   r   r   r   r   c                 C   s"   || _ || _|| _|| _|| _dS )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)r@   r   r   r   r   )r   r@   r   r   r   r   r   r   r   r       s
   
z!CallbackAnswerMiddleware.__init__handlereventdatac              
      s   t |ts|||I d H S | jt|dd }|d< |js*|jr*| ||I d H  z|||I d H W |jsC|jsD| ||I d H  S S S |jsU|jsV| ||I d H  w w w )Ncallback_answer)
properties)
isinstancer   construct_callback_answerr
   r   r   answer)r   rA   rB   rC   rD   r   r   r   __call__   s   
z!CallbackAnswerMiddleware.__call__rE   c                 C   s   | j d| j| j| j| jf\}}}}}}t|tr<|d|}|d|}|d|}|d|}|d|}|d|}t||||||dS )	NFr@   r   r   r   r   r   r.   )	r@   r   r   r   r   rF   dictgetr   )r   rE   r@   r   r   r   r   r   r   r   r   rG      s,   
z2CallbackAnswerMiddleware.construct_callback_answerrD   c                 C   s*   t jd|j |j|j|j|j|jdS )NzAnswer to callback query id=%s)r   r   r   r   )	r	   middlewaresinfoidrH   r   r   r   r   )r   rB   rD   r   r   r   rH      s   zCallbackAnswerMiddleware.answerr7   )r4   r8   r9   r:   r   r;   r<   r    r   r   r   r   r   rI   r   r   rG   r   r   rH   r   r   r   r   r?      sD    



r?   N)typingr   r   r   r   r   r   aiogramr   r	   aiogram.dispatcher.flagsr
   aiogram.exceptionsr   aiogram.methodsr   aiogram.typesr   r   r   r?   r   r   r   r   <module>   s     x