a
    y{Jh                     @   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                	   @   sN  e Zd Zdeeee ee ee ee ddddZddddZe	edd	d
Z
e
jedddd
Z
e	edddZe	ee dddZejee ddddZe	ee dddZejee ddddZe	ee dddZejee ddddZe	ee dddZejee ddddZed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   O/var/www/shaz/venv/lib/python3.9/site-packages/aiogram/utils/callback_answer.py__init__   s    zCallbackAnswer.__init__)r   c                 C   s
   d| _ dS )z7
        Deactivate answering for this handler
        TN)r   r   r   r   r   disable%   s    zCallbackAnswer.disablec                 C   s   | j S )z;Indicates that automatic answer is disabled in this handler)r   r!   r   r   r   r   +   s    zCallbackAnswer.disabled)valuer   c                 C   s   | j rtd|| _d S )Nz(Can't change disabled state after answer)r   r   r   r   r#   r   r   r   r   0   s    c                 C   s   | j S )zJ
        Indicates that request is already answered by middleware
        )r   r!   r   r   r   r   6   s    zCallbackAnswer.answeredc                 C   s   | j S )z0
        Response text
        :return:
        )r   r!   r   r   r   r   =   s    zCallbackAnswer.textc                 C   s   | j rtd|| _d S )NzCan't change text after answer)r   r   r   r$   r   r   r   r   E   s    c                 C   s   | j S )z-
        Whether to display an alert
        )r   r!   r   r   r   r   K   s    zCallbackAnswer.show_alertc                 C   s   | j rtd|| _d S )Nz$Can't change show_alert after answer)r   r   r   r$   r   r   r   r   R   s    c                 C   s   | j S )z
        Game url
        )r   r!   r   r   r   r   X   s    zCallbackAnswer.urlc                 C   s   | j rtd|| _d S )NzCan't change url after answer)r   r   r   r$   r   r   r   r   _   s    c                 C   s   | j S )z%
        Response cache time
        )r   r!   r   r   r   r   e   s    zCallbackAnswer.cache_timec                 C   s   | j rtd|| _d S )Nz$Can't change cache_time after answer)r   r   r   r$   r   r   r   r   l   s    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)r0   
__module____qualname__boolr   strintr    r"   propertyr   setterr   r   r   r   r   r2   r   r   r   r   r   
   sL        r   c                   @   s   e Zd Zdeee ee e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ee
eef ef  ed	d
dZeeed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datar   c              
      s   t |ts|||I d H S | jt|dd }|d< |jsR|jrR| ||I d H  z2|||I d H W |js|js| ||I d H  S n |js|js| ||I d H  0 d S )Ncallback_answer)
properties)
isinstancer   construct_callback_answerr
   r   r   answer)r   r<   r=   r>   r?   r   r   r   __call__   s     
 z!CallbackAnswerMiddleware.__call__)r@   r   c                 C   s   | j d| j| j| j| jf\}}}}}}t|trx|d|}|d|}|d|}|d|}|d|}|d|}t||||||dS )	NFr;   r   r   r   r   r   r*   )	r;   r   r   r   r   rA   dictgetr   )r   r@   r;   r   r   r   r   r   r   r   r   rB      s,    
z2CallbackAnswerMiddleware.construct_callback_answer)r=   r?   r   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	   ZmiddlewaresinfoidrC   r   r   r   r   )r   r=   r?   r   r   r   rC      s    zCallbackAnswerMiddleware.answer)FNNNN)r0   r3   r4   r5   r   r6   r7   r    r   r   r   r   r   rD   r   r   rB   r   r   rC   r   r   r   r   r:      s,        
r:   N)typingr   r   r   r   r   r   Zaiogramr   r	   Zaiogram.dispatcher.flagsr
   Zaiogram.exceptionsr   Zaiogram.methodsr   Zaiogram.typesr   r   r   r:   r   r   r   r   <module>   s    x