o
    <6j                     @   s`   d dl mZmZmZ d dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZ G dd deZdS )	    )Any	AwaitableCallable)BaseMiddleware)TelegramObjectMessageCallbackQuery)Redis)settingsc                   @   sb   e Zd ZdZddededB 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S )ThrottlingMiddlewareux   
    Spam himoya — Redis orqali rate limiter.
    1 daqiqada THROTTLE_RATE dan ko'p so'rov yuborsa blok qilinadi.
    Nredisratec                 C   s   || _ |ptj| _d S N)r   r
   throttle_rater   )selfr   r    r   G/var/www/www-root/data/www/ai-bot.pdev.uz/bot/middlewares/throttling.py__init__   s   zThrottlingMiddleware.__init__handlereventdatareturnc                    s   ddl m} |d}|r|jr|||I d H S d|j }| j|I d H }|dkr6| j|dI d H  || jkrLt	|t
rJ|jddd	I d H  d S |||I d H S )
Nr   )Userevent_from_userz	throttle:   <   u   ⏳ Iltimos, biroz kuting...F)
show_alert)aiogram.typesr   getis_botidr   increxpirer   
isinstancer   answer)r   r   r   r   TgUsertg_userkeycountr   r   r   __call__   s   



zThrottlingMiddleware.__call__r   )__name__
__module____qualname____doc__r	   intr   r   r   dictstrr   r   r)   r   r   r   r   r   
   s    
r   N)typingr   r   r   aiogramr   r   r   r   r   redis.asyncior	   
bot.configr
   r   r   r   r   r   <module>   s    