o
    5˜Žjð  ã                   @   s‚   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	„ d	ƒZG d
d„ deƒZdS )é    )Ú	AwaitableÚCallable)ÚAny)ÚBaseMiddlewareÚloggers)Úget_flag)ÚCallbackAnswerException)ÚAnswerCallbackQuery)ÚCallbackQueryÚTelegramObjectc                   @   sj  e Zd Z					d"dedededB dedB dedB dedB 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dB fdd„ƒZej
dedB d	dfdd„ƒZed	edB fdd„ƒZej
dedB d	dfdd„ƒZed	edB fdd„ƒZej
dedB d	dfdd„ƒZed	edB fdd„ƒZej
dedB 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   úZ/var/www/kodo/Anonymous/send/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	d}t|ƒ‚|| _d S )Nz(Can't change disabled state after answer)r   r   r   ©r   r!   Úmsgr   r   r   r   1   ó   
c                 C   r    )zJ
        Indicates that request is already answered by middleware
        )r   r   r   r   r   r   8   ó   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   G   r%   c                 C   r    )z-
        Whether to display an alert
        )r   r   r   r   r   r   N   r&   zCallbackAnswer.show_alertc                 C   r"   )Nz$Can't change show_alert after answer)r   r   r   r#   r   r   r   r   U   r%   c                 C   r    )z
        Game url
        )r   r   r   r   r   r   \   r&   zCallbackAnswer.urlc                 C   r"   )NzCan't change url after answer)r   r   r   r#   r   r   r   r   c   r%   c                 C   r    )z%
        Response cache time
        )r   r   r   r   r   r   j   r&   zCallbackAnswer.cache_timec                 C   r"   )Nz$Can't change cache_time after answer)r   r   r   r#   r   r   r   r   q   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>y   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__x   s   
ú÷zCallbackAnswer.__str__©FNNNN)r   N)r2   Ú
__module__Ú__qualname__ÚboolÚstrÚintr   r   Úpropertyr   Úsetterr   r   r   r   r   r4   r   r   r   r   r      sZ    ùþýüûúù
ø
r   c                   @   s¼   e Zd Z					ddededB dedB dedB dedB 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
f eB dB 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   r?   r@   rA   rB   r   r   r   Ú__call__¡   s   €
ÿÿÿz!CallbackAnswerMiddleware.__call__rC   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   rD   ÚdictÚgetr   )r   rC   r>   r   r   r   r   r   r   r   r   rE   ¶   s,   ú
úz2CallbackAnswerMiddleware.construct_callback_answerrB   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ÚidrF   r   r   r   r   )r   r@   rB   r   r   r   rF   Ó   s   üzCallbackAnswerMiddleware.answerr5   )r2   r6   r7   r8   r9   r:   r   r   r   rH   r   r   rG   r   rE   r
   r	   rF   r   r   r   r   r=   ˆ   sD    úþýüûú
ùþý
ü
ûþ
ýr=   N)Úcollections.abcr   r   Útypingr   Úaiogramr   r   Úaiogram.dispatcher.flagsr   Úaiogram.exceptionsr   Úaiogram.methodsr	   Úaiogram.typesr
   r   r   r=   r   r   r   r   Ú<module>   s    }