SYMBOL INDEX (124 symbols across 1 files) FILE: bot.py function pb (line 163) | def pb(text: str) -> str: function bar (line 171) | def bar(frac: float, w: int = 18) -> str: function ui_box (line 175) | def ui_box(icon: str, title: str, body: str) -> str: function ui_start (line 183) | def ui_start(name: str, downloads: int = 0) -> str: function ui_join_required (line 199) | def ui_join_required(name: str) -> str: function ui_searching (line 206) | def ui_searching(q: str, lines: List[str]) -> str: function ui_results (line 216) | def ui_results(q: str, total: int) -> str: function ui_not_found (line 223) | def ui_not_found(q: str) -> str: function ui_downloading (line 234) | def ui_downloading() -> str: function ui_sent (line 239) | def ui_sent(title: str) -> str: function ui_translate_start (line 247) | def ui_translate_start() -> str: function ui_translate_progress (line 253) | def ui_translate_progress(done: int, total: int) -> str: function ui_translate_done (line 263) | def ui_translate_done() -> str: function ui_translate_fail (line 271) | def ui_translate_fail() -> str: function ui_large_file (line 274) | def ui_large_file(size_kb: float) -> str: function kb_join (line 283) | def kb_join() -> InlineKeyboardMarkup: function kb_translate (line 289) | def kb_translate() -> InlineKeyboardMarkup: function kb_back (line 295) | def kb_back(page: int) -> InlineKeyboardMarkup: function kb_large_file (line 300) | def kb_large_file() -> InlineKeyboardMarkup: function kb_results (line 306) | def kb_results(results: List[dict], page: int, query: str) -> Tuple[Inli... function kb_langs (line 328) | def kb_langs(langs: List[dict], page: int) -> Tuple[InlineKeyboardMarkup... class Database (line 351) | class Database: method __init__ (line 352) | def __init__(self, path: str = "bot_data.db"): method init (line 356) | async def init(self): method close (line 408) | async def close(self): method update_user (line 413) | async def update_user(self, user_id: int, username: str, first_name: s... method add_history (line 421) | async def add_history(self, user_id: int, query: str, source: str = ""): method get_history (line 434) | async def get_history(self, user_id: int) -> List[Dict]: method increment_downloads (line 441) | async def increment_downloads(self, user_id: int): method get_user_info (line 447) | async def get_user_info(self, user_id: int) -> Optional[Dict]: method is_banned (line 458) | async def is_banned(self, user_id: int) -> bool: method ban_user (line 463) | async def ban_user(self, user_id: int): method unban_user (line 467) | async def unban_user(self, user_id: int): method get_banned_users (line 471) | async def get_banned_users(self) -> List[int]: method add_group (line 475) | async def add_group(self, group_id: int): method get_all_groups (line 481) | async def get_all_groups(self) -> List[int]: method track_trending (line 485) | async def track_trending(self, query: str): method get_trending (line 498) | async def get_trending(self, limit: int = 10) -> List[Tuple[str, int]]: method add_request (line 504) | async def add_request(self, user_id: int, username: str, title: str) -... method get_pending_requests (line 517) | async def get_pending_requests(self, limit: int = 20) -> List[Dict]: method mark_request_done (line 528) | async def mark_request_done(self, title: str) -> int: method get_leaderboard (line 535) | async def get_leaderboard(self, limit: int = 10) -> List[Tuple[int, st... method get_user_pref (line 544) | async def get_user_pref(self, user_id: int, key: str, default: Any = N... method set_user_pref (line 557) | async def set_user_pref(self, user_id: int, key: str, value: Any): method get_total_stats (line 572) | async def get_total_stats(self) -> Tuple[int, int]: method get_all_user_ids (line 577) | async def get_all_user_ids(self) -> List[int]: method is_maintenance (line 581) | async def is_maintenance(self) -> bool: method set_maintenance (line 586) | async def set_maintenance(self, state: bool): function escape (line 595) | def escape(s: str) -> str: function is_valid_srt (line 598) | def is_valid_srt(content: str) -> bool: function vtt_to_srt (line 612) | def vtt_to_srt(content: str) -> str: function clean_filename (line 641) | def clean_filename(text: str) -> str: function make_filename (line 644) | def make_filename(movie: str, ext: str = ".srt") -> str: function clean_language_name (line 647) | def clean_language_name(lang: str) -> str: function is_movie_query (line 651) | def is_movie_query(text: str) -> bool: function is_clean_query (line 679) | def is_clean_query(t: str) -> bool: function _score_title (line 682) | def _score_title(result_title: str, query: str) -> int: function rank_results (line 706) | def rank_results(results: List[dict], query: str) -> List[dict]: function deduplicate (line 715) | def deduplicate(results: List[dict]) -> List[dict]: function http_get (line 731) | def http_get( function _scrape_get (line 757) | def _scrape_get(url: str, params: dict = None, timeout: int = 15) -> Opt... function extract_zip_srt (line 775) | def extract_zip_srt(zip_path: str) -> Optional[str]: function download_file (line 792) | def download_file(url: str, depth: int = 0) -> Tuple[Optional[str], Opti... function read_file_content (line 839) | def read_file_content(path: str) -> Optional[str]: function send_subtitle_file (line 848) | async def send_subtitle_file( function _retry_source (line 874) | async def _retry_source(func: Callable, q: str, retries: int = 2) -> Lis... function search_wyzie (line 889) | def search_wyzie(q: str) -> List[dict]: function search_goat (line 918) | def search_goat(q: str) -> List[dict]: function search_malsub_org (line 944) | def search_malsub_org(q: str) -> List[dict]: function search_jerry (line 967) | def search_jerry(q: str) -> List[dict]: function get_jerry_langs (line 981) | def get_jerry_langs(url: str) -> List[dict]: function search_ironman (line 995) | def search_ironman(q: str) -> List[dict]: function get_ironman_langs (line 1007) | def get_ironman_langs(url: str) -> List[dict]: function _deep_block (line 1022) | def _deep_block(text: str, lang: str) -> str: function _gtx_batch (line 1033) | async def _gtx_batch( function translate_srt_async (line 1064) | async def translate_srt_async( function _try_send (line 1130) | async def _try_send(bot, chat_id: int, text: str) -> bool: class BotHandlers (line 1141) | class BotHandlers: method __init__ (line 1142) | def __init__(self, db: Database): method _is_limited (line 1155) | async def _is_limited(self, user_id: int) -> bool: method _wait_sec (line 1164) | async def _wait_sec(self, user_id: int) -> int: method _check_membership (line 1171) | async def _check_membership(self, bot, user_id: int, force: bool = Fal... method _cache_set (line 1191) | async def _cache_set(self, key: str, value: Any): method gate_user (line 1199) | async def gate_user(self, update: Update, ctx: ContextTypes.DEFAULT_TY... method _search_all_live (line 1226) | async def _search_all_live(self, q: str, status_msg: Message) -> Tuple: method _run_search (line 1266) | async def _run_search( method _run_translation (line 1366) | async def _run_translation( method cmd_start (line 1422) | async def cmd_start(self, update: Update, ctx: ContextTypes.DEFAULT_TY... method cmd_help (line 1439) | async def cmd_help(self, update: Update, ctx: ContextTypes.DEFAULT_TYPE): method cmd_cancel (line 1471) | async def cmd_cancel(self, update: Update, ctx: ContextTypes.DEFAULT_T... method cmd_search (line 1480) | async def cmd_search(self, update: Update, ctx: ContextTypes.DEFAULT_T... method cmd_translate (line 1507) | async def cmd_translate(self, update: Update, ctx: ContextTypes.DEFAUL... method cmd_history (line 1539) | async def cmd_history(self, update: Update, ctx: ContextTypes.DEFAULT_... method cmd_mystats (line 1561) | async def cmd_mystats(self, update: Update, ctx: ContextTypes.DEFAULT_... method cmd_leaderboard (line 1585) | async def cmd_leaderboard(self, update: Update, ctx: ContextTypes.DEFA... method cmd_trending (line 1608) | async def cmd_trending(self, update: Update, ctx: ContextTypes.DEFAULT... method cmd_request (line 1628) | async def cmd_request(self, update: Update, ctx: ContextTypes.DEFAULT_... method cmd_donate (line 1670) | async def cmd_donate(self, update: Update, ctx: ContextTypes.DEFAULT_T... method cmd_group (line 1683) | async def cmd_group(self, update: Update, ctx: ContextTypes.DEFAULT_TY... method cmd_report (line 1691) | async def cmd_report(self, update: Update, ctx: ContextTypes.DEFAULT_T... method cmd_feedback (line 1719) | async def cmd_feedback(self, update: Update, ctx: ContextTypes.DEFAULT... method cmd_prefs (line 1742) | async def cmd_prefs(self, update: Update, ctx: ContextTypes.DEFAULT_TY... method cmd_admin (line 1781) | async def cmd_admin(self, update: Update, ctx: ContextTypes.DEFAULT_TY... method cmd_stats (line 1801) | async def cmd_stats(self, update: Update, ctx: ContextTypes.DEFAULT_TY... method cmd_ping (line 1822) | async def cmd_ping(self, update: Update, ctx: ContextTypes.DEFAULT_TYPE): method cmd_broadcast (line 1833) | async def cmd_broadcast(self, update: Update, ctx: ContextTypes.DEFAUL... method cmd_ban (line 1864) | async def cmd_ban(self, update: Update, ctx: ContextTypes.DEFAULT_TYPE): method cmd_unban (line 1880) | async def cmd_unban(self, update: Update, ctx: ContextTypes.DEFAULT_TY... method cmd_banned (line 1896) | async def cmd_banned(self, update: Update, ctx: ContextTypes.DEFAULT_T... method cmd_requests (line 1915) | async def cmd_requests(self, update: Update, ctx: ContextTypes.DEFAULT... method cmd_donereq (line 1934) | async def cmd_donereq(self, update: Update, ctx: ContextTypes.DEFAULT_... method cmd_userinfo (line 1947) | async def cmd_userinfo(self, update: Update, ctx: ContextTypes.DEFAULT... method cmd_maintenance (line 1979) | async def cmd_maintenance(self, update: Update, ctx: ContextTypes.DEFA... method cmd_clearcache (line 1992) | async def cmd_clearcache(self, update: Update, ctx: ContextTypes.DEFAU... method handle_message (line 2005) | async def handle_message(self, update: Update, ctx: ContextTypes.DEFAU... method inline_query (line 2044) | async def inline_query(self, update: Update, ctx: ContextTypes.DEFAULT... method handle_callback (line 2094) | async def handle_callback(self, update: Update, ctx: ContextTypes.DEFA... class HealthHandler (line 2392) | class HealthHandler(BaseHTTPRequestHandler): method do_GET (line 2393) | def do_GET(self): method log_message (line 2400) | def log_message(self, *a, **kw): function run_health (line 2403) | def run_health(port: int): function post_init (line 2409) | async def post_init(app: Application): function post_stop (line 2421) | async def post_stop(app: Application): function main (line 2428) | def main():