1010import logging
1111import random
1212import time
13+ import typing
1314
1415from hikkatl .tl import functions
1516from hikkatl .tl .tlobject import TLRequest
@@ -541,11 +542,64 @@ class APIRatelimiterMod(loader.Module):
541542 ),
542543 }
543544
544- _ratelimiter = []
545- _suspend_until = 0
546- _lock = False
545+ strings_tt = {
546+ "warning" : (
547+ "⚠️ <b>ДИЯК!</b>\n \n Аккаунт чыкты аныкларны кәйберле көрсәтелгән конфигтан"
548+ " ашты. Telegram API-ның флуд булдырыуыны тышкылау үчен, юзербот <b>тулы"
549+ " төшерелде</b> {} секунд. Өстәмә мәгълүмат файлда күрсәтелгән."
550+ " \n \n Кулланучыны төшерү үчен, <code>{prefix}support</code> группасына"
551+ " мөмкинчәлек булса, көрсәтелгән группага кереп кулланыгыз!\n \n Агыллы"
552+ " булсаң, юзерботның бул белән бәйле тәртибен үзгәрткән үзгәрешләре булса,"
553+ " <code>{prefix}suspend_api_protect</code> <секундлар саны>"
554+ " кулланыгыз!"
555+ ),
556+ "args_invalid" : (
557+ "<emoji document_id=5312526098750252863>🚫</emoji> <b>Хаталы аргументлар</b>"
558+ ),
559+ "suspended_for" : (
560+ "<emoji document_id=5458450833857322148>👌</emoji> <b>API тышкылауы"
561+ " {} секундлар өчен төшерелде</b>"
562+ ),
563+ "on" : (
564+ "<emoji document_id=5458450833857322148>👌</emoji> <b>Тышкылау включена</b>"
565+ ),
566+ "off" : (
567+ "<emoji document_id=5458450833857322148>👌</emoji> <b>Тышкылау төшерелде</b>"
568+ ),
569+ "u_sure" : "<emoji document_id=5312383351217201533>⚠️</emoji> <b>Сез белем?</b>" ,
570+ "_cfg_time_sample" : (
571+ "Йөклек вакыт аралыгы, мөмкин болса өчен сораулар санын табып берет"
572+ ),
573+ "_cfg_threshold" : (
574+ "Сораулар саны, үзгәртүлгән вакыт аралыгында күплегеннән күбрәк булса,"
575+ " мөмкин болса өчен җибәрелсен"
576+ ),
577+ "_cfg_local_floodwait" : (
578+ "Юзерботны үзеннән үзенә күбрәк сораулар булса, бу көндә күбрәк секундлар"
579+ " буенча үзенән үзенә күбрәк сораулар күрсәтелмәсе"
580+ ),
581+ "_cfg_forbidden_methods" : (
582+ "Барлык тышкы модулларда бу методларның исәпләүен тыя"
583+ ),
584+ "btn_no" : "🚫 Яңа" ,
585+ "btn_yes" : "✅ Хәлә" ,
586+ "web_pin" : (
587+ "🔓 <b>Пин кодын күйгә түшереп күрсәтегез, Werkzeug debug PIN кодын"
588+ " күрсәтегез. Уны башкаларына бирәргә башкаларына бирмәй.</b>"
589+ ),
590+ "web_pin_btn" : "🐞 Werkzeug PIN кодын күрсәтегез" ,
591+ "proxied_url" : "⚜️ Проксиленнә URL" ,
592+ "local_url" : "🏠 Локальнә URL" ,
593+ "debugger_disabled" : (
594+ "<emoji document_id=5312526098750252863>🚫</emoji> <b>Веб төзәтүче инвалид,"
595+ " сылтама мөмкин түгел</b>"
596+ ),
597+ }
547598
548599 def __init__ (self ):
600+ self ._ratelimiter : typing .List [tuple ] = []
601+ self ._suspend_until = 0
602+ self ._lock = False
549603 self .config = loader .ModuleConfig (
550604 loader .ConfigValue (
551605 "time_sample" ,
@@ -578,7 +632,8 @@ def __init__(self):
578632 ),
579633 on_change = lambda : self ._client .forbid_constructors (
580634 map (
581- lambda x : CONSTRUCTORS [x ], self .config ["forbidden_constructors" ]
635+ lambda x : CONSTRUCTORS [x ],
636+ self .config ["forbidden_constructors" ],
582637 )
583638 ),
584639 ),
@@ -615,7 +670,7 @@ async def new_call(
615670 )
616671 ):
617672 request_name = type (r ).__name__
618- self ._ratelimiter += [[ request_name , time .perf_counter ()] ]
673+ self ._ratelimiter += [( request_name , time .perf_counter ()) ]
619674
620675 self ._ratelimiter = list (
621676 filter (
@@ -634,7 +689,7 @@ async def new_call(
634689 json .dumps (
635690 self ._ratelimiter ,
636691 indent = 4 ,
637- ).encode ("utf-8" )
692+ ).encode ()
638693 )
639694 report .name = "local_fw_report.json"
640695
@@ -644,7 +699,7 @@ async def new_call(
644699 caption = self .inline .sanitise_text (
645700 self .strings ("warning" ).format (
646701 self .config ["local_floodwait" ],
647- prefix = self .get_prefix (),
702+ prefix = utils . escape_html ( self .get_prefix () ),
648703 )
649704 ),
650705 )
@@ -675,12 +730,11 @@ async def on_unload(self):
675730 uz_doc = "<soniya> - API himoyasini N soniya o'zgartirish" ,
676731 es_doc = "<segundos> - Congela la protección de la API durante N segundos" ,
677732 kk_doc = "<секунд> - API қорғауын N секундтік уақытта құлыптау" ,
733+ tt_doc = "<секундларда вакыт> - N секунд өчен API саклауны туңдырыгыз" ,
678734 )
679735 async def suspend_api_protect (self , message : Message ):
680736 """<time in seconds> - Suspend API Ratelimiter for n seconds"""
681- args = utils .get_args_raw (message )
682-
683- if not args or not args .isdigit ():
737+ if not (args := utils .get_args_raw (message )) or not args .isdigit ():
684738 await utils .answer (message , self .strings ("args_invalid" ))
685739 return
686740
@@ -696,6 +750,7 @@ async def suspend_api_protect(self, message: Message):
696750 uz_doc = "API himoyasini yoqish / o'chirish" ,
697751 es_doc = "Activar / desactivar la protección de API" ,
698752 kk_doc = "API қорғауын қосу / жою" ,
753+ tt_doc = "API саклауын қосу / алып тастау" ,
699754 )
700755 async def api_fw_protection (self , message : Message ):
701756 """Toggle API Ratelimiter"""
@@ -724,6 +779,7 @@ async def _show_pin(self, call: InlineCall):
724779 uz_doc = "PIN vositasi ko'rsatish" ,
725780 es_doc = "Mostrar herramienta PIN" ,
726781 kk_doc = "PIN құралын көрсету" ,
782+ tt_doc = "PIN Werkzeug күрсәтегез" ,
727783 )
728784 async def debugger (self , message : Message ):
729785 """Show the Werkzeug PIN"""
0 commit comments