presets.py 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599
  1. # ©️ Dan Gazizullin, 2021-2023
  2. # This file is a part of Hikka Userbot
  3. # 🌐 https://github.com/hikariatama/Hikka
  4. # You can redistribute it and/or modify it under the terms of the GNU AGPLv3
  5. # 🔑 https://www.gnu.org/licenses/agpl-3.0.html
  6. import asyncio
  7. import logging
  8. from .. import loader, utils
  9. from ..inline.types import BotInlineMessage, InlineCall
  10. logger = logging.getLogger(__name__)
  11. PRESETS = {
  12. "fun": [
  13. "https://mods.hikariatama.ru/aniquotes.py",
  14. "https://mods.hikariatama.ru/artai.py",
  15. "https://mods.hikariatama.ru/inline_ghoul.py",
  16. "https://mods.hikariatama.ru/lovemagic.py",
  17. "https://mods.hikariatama.ru/mindgame.py",
  18. "https://mods.hikariatama.ru/moonlove.py",
  19. "https://mods.hikariatama.ru/neko.py",
  20. "https://mods.hikariatama.ru/purr.py",
  21. "https://mods.hikariatama.ru/rpmod.py",
  22. "https://mods.hikariatama.ru/scrolller.py",
  23. "https://mods.hikariatama.ru/tictactoe.py",
  24. "https://mods.hikariatama.ru/trashguy.py",
  25. "https://mods.hikariatama.ru/truth_or_dare.py",
  26. "https://mods.hikariatama.ru/sticks.py",
  27. "https://mods.hikariatama.ru/premium_sticks.py",
  28. "https://heta.hikariatama.ru/MoriSummerz/ftg-mods/magictext.py",
  29. "https://heta.hikariatama.ru/HitaloSama/FTG-modules-repo/quotes.py",
  30. "https://heta.hikariatama.ru/HitaloSama/FTG-modules-repo/spam.py",
  31. "https://heta.hikariatama.ru/SkillsAngels/Modules/IrisLab.py",
  32. "https://heta.hikariatama.ru/Fl1yd/FTG-Modules/arts.py",
  33. "https://heta.hikariatama.ru/SkillsAngels/Modules/Complements.py",
  34. "https://heta.hikariatama.ru/Den4ikSuperOstryyPer4ik/Astro-modules/Compliments.py",
  35. "https://heta.hikariatama.ru/vsecoder/hikka_modules/mazemod.py",
  36. ],
  37. "chat": [
  38. "https://mods.hikariatama.ru/activists.py",
  39. "https://mods.hikariatama.ru/banstickers.py",
  40. "https://mods.hikariatama.ru/hikarichat.py",
  41. "https://mods.hikariatama.ru/inactive.py",
  42. "https://mods.hikariatama.ru/keyword.py",
  43. "https://mods.hikariatama.ru/tagall.py",
  44. "https://mods.hikariatama.ru/voicechat.py",
  45. "https://mods.hikariatama.ru/vtt.py",
  46. "https://heta.hikariatama.ru/SekaiYoneya/Friendly-telegram/BanMedia.py",
  47. "https://heta.hikariatama.ru/iamnalinor/FTG-modules/swmute.py",
  48. "https://heta.hikariatama.ru/GeekTG/FTG-Modules/filter.py",
  49. ],
  50. "service": [
  51. "https://mods.hikariatama.ru/account_switcher.py",
  52. "https://mods.hikariatama.ru/surl.py",
  53. "https://mods.hikariatama.ru/httpsc.py",
  54. "https://mods.hikariatama.ru/img2pdf.py",
  55. "https://mods.hikariatama.ru/latex.py",
  56. "https://mods.hikariatama.ru/pollplot.py",
  57. "https://mods.hikariatama.ru/sticks.py",
  58. "https://mods.hikariatama.ru/temp_chat.py",
  59. "https://mods.hikariatama.ru/vtt.py",
  60. "https://heta.hikariatama.ru/vsecoder/hikka_modules/accounttime.py",
  61. "https://heta.hikariatama.ru/vsecoder/hikka_modules/searx.py",
  62. "https://heta.hikariatama.ru/iamnalinor/FTG-modules/swmute.py",
  63. ],
  64. "downloaders": [
  65. "https://mods.hikariatama.ru/musicdl.py",
  66. "https://mods.hikariatama.ru/uploader.py",
  67. "https://mods.hikariatama.ru/porn.py",
  68. "https://mods.hikariatama.ru/web2file.py",
  69. "https://heta.hikariatama.ru/AmoreForever/amoremods/instsave.py",
  70. "https://heta.hikariatama.ru/CakesTwix/Hikka-Modules/tikcock.py",
  71. "https://heta.hikariatama.ru/CakesTwix/Hikka-Modules/InlineYouTube.py",
  72. "https://heta.hikariatama.ru/CakesTwix/Hikka-Modules/InlineSpotifyDownloader.py",
  73. "https://heta.hikariatama.ru/GeekTG/FTG-Modules/downloader.py",
  74. "https://heta.hikariatama.ru/Den4ikSuperOstryyPer4ik/Astro-modules/dl_yt_previews.py",
  75. ],
  76. }
  77. @loader.tds
  78. class Presets(loader.Module):
  79. """Suggests new Hikka users a packs of modules to load"""
  80. strings = {
  81. "name": "Presets",
  82. "_fun_title": "🪩 Entertainment modules",
  83. "_fun_desc": "Fun modules — animations, spam, entertainment, etc.",
  84. "_chat_title": "👥 Group Administration Helpers",
  85. "_chat_desc": (
  86. "The collection of tools which will help to moderate your group chat —"
  87. " filters, notes, voice recognition, etc."
  88. ),
  89. "_service_title": "⚙️ Useful modules",
  90. "_service_desc": (
  91. "Really useful modules — account management, link shortener, search engine,"
  92. " etc."
  93. ),
  94. "_downloaders_title": "📥 Downloaders",
  95. "_downloaders_desc": (
  96. "The collection of tools which will help you download/upload files from/to"
  97. " different sources — YouTube, TikTok, Instagram, Spotify, VK Music, etc."
  98. ),
  99. "welcome": (
  100. "👋 <b>Hi there! Tired of scrolling through endless modules in channels? Let"
  101. " me suggest you some pre-made collections. If you need to call this menu"
  102. " again, simply send /presets to this bot!</b>"
  103. ),
  104. "preset": (
  105. "<b>{}:</b>\nℹ️ <i>{}</i>\n\n⚒ <b>Modules in this collection:</b>\n\n{}"
  106. ),
  107. "back": "🔙 Back",
  108. "install": "📦 Install",
  109. "installing": (
  110. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Installing preset"
  111. "</b> <code>{}</code><b>...</b>"
  112. ),
  113. "installing_module": (
  114. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Installing preset"
  115. "</b> <code>{}</code> <b>({}/{} modules)...</b>\n\n<emoji"
  116. " document_id=5188377234380954537>🌘</emoji> <i>Installing module"
  117. " {}...</i>"
  118. ),
  119. "installed": (
  120. "<emoji document_id=5436040291507247633>🎉</emoji> <b>Preset"
  121. "</b> <code>{}</code> <b>installed!</b>"
  122. ),
  123. "already_installed": "✅ [Installed]",
  124. }
  125. strings_ru = {
  126. "_fun_title": "🪩 Развлекательные модули",
  127. "_fun_desc": "Забавные модули — анимации, спам, игры, и др.",
  128. "_chat_title": "👥 Модули администрирования чата",
  129. "_chat_desc": (
  130. "Коллекция модулей, которые помогут вам администрировать чат — фильтры,"
  131. " заметки, распознавание речи, и др."
  132. ),
  133. "_service_title": "⚙️ Полезные модули",
  134. "_service_desc": (
  135. "Действительно полезные модули — управление аккаунтом, сократитель ссылок,"
  136. " поисковик, и др."
  137. ),
  138. "_downloaders_title": "📥 Загрузчики",
  139. "_downloaders_desc": (
  140. "Коллекция модулей, которые помогут вам загружать файлы в/из различных(-е)"
  141. " источников(-и) — YouTube, TikTok, Instagram, Spotify, VK Музыка, и др."
  142. ),
  143. "welcome": (
  144. "👋 <b>Привет! Устал листать бесчисленное количество модулей в каналах? Могу"
  145. " предложить тебе несколько готовых наборов. Если тебе понадобится повторно"
  146. " вызвать это меню, отправь мне команду /presets</b>"
  147. ),
  148. "preset": "<b>{}:</b>\nℹ️ <i>{}</i>\n\n⚒ <b>Модули в этом наборе:</b>\n\n{}",
  149. "back": "🔙 Назад",
  150. "install": "📦 Установить",
  151. "installing": (
  152. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Установка набора"
  153. " >/b><code>{}</code><b>...</b>"
  154. ),
  155. "installing_module": (
  156. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Установка набора"
  157. "</b> <code>{}</code> <b>({}/{} модулей)...</b>\n\n<emoji"
  158. " document_id=5188377234380954537>🌘</emoji> <i>Установка модуля {}...</i>"
  159. ),
  160. "installed": (
  161. "<emoji document_id=5436040291507247633>🎉</emoji> <b>Набор"
  162. "</b> <code>{}</code> <b>установлен!</b>"
  163. ),
  164. "already_installed": "✅ [Установлен]",
  165. }
  166. strings_fr = {
  167. "_fun_title": "🪩 Modules de divertissement",
  168. "_fun_desc": "Modules amusants - animations, spam, jeux, etc.",
  169. "_chat_title": "👥 Modules d'administration de chat",
  170. "_chat_desc": (
  171. "Collection de modules qui vous aideront à administrer votre chat -"
  172. " filtres, notes, reconnaissance vocale, etc."
  173. ),
  174. "_service_title": "⚙️ Modules utiles",
  175. "_service_desc": (
  176. "Vraiment des modules utiles - gestion de compte, raccourcisseur d'URL,"
  177. " moteur de recherche, etc."
  178. ),
  179. "_downloaders_title": "📥 Téléchargeurs",
  180. "_downloaders_desc": (
  181. "Collection de modules qui vous aideront à télécharger des fichiers à"
  182. " partir de/vers diverses sources - YouTube, TikTok, Instagram, Spotify, VK"
  183. " Music, etc."
  184. ),
  185. "welcome": (
  186. "👋 <b>Bonjour! Vous êtes fatigué d'effectuer un balayage infini de modules"
  187. " dans les canaux? Je peux vous proposer quelques ensembles prêts à"
  188. " l'emploi. Si vous avez besoin d'appeler à nouveau ce menu, envoyez-moi la"
  189. " commande /presets</b>"
  190. ),
  191. "preset": (
  192. "<b>{}:</b>\nℹ️ <i>{}</i>\n\n⚒ <b>Modules dans cet ensemble:</b>\n\n{}"
  193. ),
  194. "back": "🔙 Retour",
  195. "install": "📦 Installer",
  196. "installing": (
  197. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Installation de"
  198. " l'ensemble >/b><code>{}</code><b>...</b>"
  199. ),
  200. "installing_module": (
  201. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Installation de"
  202. " l'ensemble</b> <code>{}</code> <b>({}/{} modules)...</b>\n\n<emoji"
  203. " document_id=5188377234380954537>🌘</emoji> <i>Installation du module"
  204. " {}...</i>"
  205. ),
  206. "installed": (
  207. "<emoji document_id=5436040291507247633>🎉</emoji> <b>L'ensemble"
  208. "</b> <code>{}</code> <b>est installé!</b>"
  209. ),
  210. "already_installed": "✅ [Installé]",
  211. }
  212. strings_it = {
  213. "_fun_title": "🪩 Moduli divertenti",
  214. "_fun_desc": "Moduli divertenti, animazioni, spam, giochi e altro.",
  215. "_chat_title": "👥 Moduli di amministrazione del gruppo",
  216. "_chat_desc": (
  217. "Una raccolta di moduli che ti aiuteranno ad amministrare il tuo gruppo,"
  218. " filtri, note, riconoscimento vocale e altro."
  219. ),
  220. "_service_title": "⚙️ Moduli utili",
  221. "_service_desc": (
  222. "Moduli veramente utili, gestione account, url shortener, motore di ricerca"
  223. " e altro."
  224. ),
  225. "_downloaders_title": "📥 Downloaders",
  226. "_downloaders_desc": (
  227. "Una raccolta di moduli che ti aiuteranno a scaricare file da diversi"
  228. " fonti, YouTube, TikTok, Instagram, Spotify, VK Music e altro."
  229. ),
  230. "welcome": (
  231. "👋 <b>Ciao! Ti annoiato a scorrere interminabili liste di moduli nei"
  232. " canali? Posso offrirti alcuni pacchetti predefiniti. Se vuoi richiamare"
  233. " questo menu, inviami il comando /presets</b>"
  234. ),
  235. "preset": (
  236. "<b>{}:</b>\nℹ️ <i>{}</i>\n\n⚒ <b>Moduli in questo pacchetto:</b>\n\n{}"
  237. ),
  238. "back": "🔙 Indietro",
  239. "install": "📦 Installa",
  240. "installing": (
  241. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Installazione"
  242. " pacchetto >/b><code>{}</code><b>...</b>"
  243. ),
  244. "installing_module": (
  245. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Installazione"
  246. " pacchetto</b> <code>{}</code> <b>({}/{} moduli)...</b>\n\n<emoji"
  247. " document_id=5188377234380954537>🌘</emoji> <i>Installazione modulo"
  248. " {}...</i>"
  249. ),
  250. "installed": (
  251. "<emoji document_id=5436040291507247633>🎉</emoji> <b>Pacchetto"
  252. "</b> <code>{}</code> <b>installato!</b>"
  253. ),
  254. "already_installed": "✅ [Installato]",
  255. }
  256. strings_de = {
  257. "_fun_title": "🪩 Spaßmodule",
  258. "_fun_desc": "Spaßmodule — Animationen, Spam, Spiele, und mehr.",
  259. "_chat_title": "👥 Chat-Administration",
  260. "_chat_desc": (
  261. "Eine Sammlung von Modulen, die dir helfen, deinen Chat zu verwalten —"
  262. " Filter, Notizen, Spracherkennung, und mehr."
  263. ),
  264. "_service_title": "⚙️ Nützliche Module",
  265. "_service_desc": (
  266. "Wirklich nützliche Module — Account-Management, Link-Shortener,"
  267. " Suchmaschine, und mehr."
  268. ),
  269. "_downloaders_title": "📥 Download-Module",
  270. "_downloaders_desc": (
  271. "Eine Sammlung von Modulen, die dir helfen, Dateien aus/ins Internet zu"
  272. " laden — YouTube, TikTok, Instagram, Spotify, VK-Musik, und mehr."
  273. ),
  274. "welcome": (
  275. "👋 <b>Hallo! Hast du genug von der ewigen Liste von Modulen in den Kanälen?"
  276. " Ich kann dir ein paar fertige Sammlungen anbieten. Wenn du dieses Menü"
  277. " erneut aufrufen möchtest, schicke mir /presets</b>"
  278. ),
  279. "preset": (
  280. "<b>{}:</b>\nℹ️ <i>{}</i>\n\n⚒ <b>Module in dieser Sammlung:</b>\n\n{}"
  281. ),
  282. "back": "🔙 Zurück",
  283. "install": "📦 Installieren",
  284. "installing": (
  285. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Installiere Sammlung"
  286. "</b> <code>{}</code><b>...</b>"
  287. ),
  288. "installing_module": (
  289. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Installiere Sammlung"
  290. "</b> <code>{}</code> <b>({}/{} Module)...</b>\n\n<emoji"
  291. " document_id=5188377234380954537>🌘</emoji> <i>Installiere Modul"
  292. " {}...</i>"
  293. ),
  294. "installed": (
  295. "<emoji document_id=5436040291507247633>🎉</emoji> <b>Sammlung"
  296. "</b> <code>{}</code> <b>installiert!</b>"
  297. ),
  298. "already_installed": "✅ [Installiert]",
  299. }
  300. strings_tr = {
  301. "_fun_title": "🪩 Eğlence Modülleri",
  302. "_fun_desc": "Eğlence modülleri — Animasyonlar, spam, oyunlar, vb.",
  303. "_chat_title": "👥 Sohbet Yönetimi",
  304. "_chat_desc": (
  305. "Sohbetinizi yönetmenize yardımcı olacak bir modül koleksiyonu —"
  306. " filtreler, notlar, ses tanıma, vb."
  307. ),
  308. "_service_title": "⚙️ Faydalı Modüller",
  309. "_service_desc": (
  310. "Gerçekten faydalı modüller — hesap yönetimi, URL kısaltma servisi,"
  311. " arama motoru, vb."
  312. ),
  313. "_downloaders_title": "📥 İndirme Modülleri",
  314. "_downloaders_desc": (
  315. "İnternetten dosyaları indirmenize yardımcı olacak bir modül koleksiyonu —"
  316. " YouTube, TikTok, Instagram, Spotify, VK Müzik, vb."
  317. ),
  318. "welcome": (
  319. "👋 <b>Merhaba! Kanallardaki sonsuz modül listesinden sıkıldın mı? Sana"
  320. " birkaç hazır koleksiyon sunabilirim. Bu menüyü tekrar görüntülemek"
  321. " istersen, /presets komutunu kullanabilirsin</b>"
  322. ),
  323. "preset": (
  324. "<b>{}:</b>\nℹ️ <i>{}</i>\n\n⚒ <b>Bu koleksiyonda bulunan"
  325. " modüller:</b>\n\n{}"
  326. ),
  327. "back": "🔙 Geri",
  328. "install": "📦 Kur",
  329. "installing": (
  330. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Koleksiyon"
  331. "</b> <code>{}</code> <b>kuruluyor...</b>"
  332. ),
  333. "installing_module": (
  334. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Koleksiyon"
  335. "</b> <code>{}</code> <b>({}/{} modül) kuruluyor...</b>\n\n<emoji"
  336. " document_id=5188377234380954537>🌘</emoji> <i>Modül {} kuruluyor...</i>"
  337. ),
  338. "installed": (
  339. "<emoji document_id=5436040291507247633>🎉</emoji> <b>Koleksiyon"
  340. "</b> <code>{}</code> <b>kuruldu!</b>"
  341. ),
  342. "already_installed": "✅ [Zaten Kurulu]",
  343. }
  344. strings_uz = {
  345. "_fun_title": "🪩 Qiziqarli modullar",
  346. "_fun_desc": "Qiziqarli modullar — animatsiya, spam, o'yin, va boshqa.",
  347. "_chat_title": "👥 Chat boshqarish modullar",
  348. "_chat_desc": (
  349. "Chat boshqarish modullar uchun yordam beruvchi koleksiya ham mavjud —"
  350. " filtrlar, qaydlar, tili aniqlash, va boshqa."
  351. ),
  352. "_service_title": "⚙️ Foydali modullar",
  353. "_service_desc": (
  354. "Foydali modullar — hisobni boshqarish, havola qisqartirish,"
  355. " qidiruv injini, va boshqa."
  356. ),
  357. "_downloaders_title": "📥 Yuklab oluvchilar",
  358. "_downloaders_desc": (
  359. "Internetdan fayllarni yuklab olish uchun yordam beruvchi koleksiya ham"
  360. " mavjud — YouTube, TikTok, Instagram, Spotify, VK Music, va boshqa."
  361. ),
  362. "welcome": (
  363. "👋 <b>Salom! Kanallarda son-sanoqsiz modullarni almashtirishdan"
  364. " charchadingizmi? Men sizga tayyor to'plamlarni taklif qila olaman. Agar"
  365. " siz ushbu menyuni yana chaqirib olishingiz kerak bo'lsa, /presets"
  366. " buyrug'ini menga yuboring</b>"
  367. ),
  368. "preset": (
  369. "<b>{}:</b>\nℹ️ <i>{}</i>\n\n⚒ <b>Koleksiyada mavjud modullar:</b>\n\n{}"
  370. ),
  371. "back": "🔙 Orqaga",
  372. "install": "📦 O'rnatish",
  373. "installing": (
  374. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Koleksiyani"
  375. "</b> <code>{}</code> <b>o'rnatilmoqda...</b>"
  376. ),
  377. "installing_module": (
  378. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Koleksiyani"
  379. "</b> <code>{}</code> <b>({}/{} modul) o'rnatilmoqda...</b>\n\n<emoji"
  380. " document_id=5188377234380954537>🌘</emoji> <i>Modul {}"
  381. " o'rnatilmoqda...</i>"
  382. ),
  383. "installed": (
  384. "<emoji document_id=5436040291507247633>🎉</emoji> <b>Koleksiyani"
  385. "</b> <code>{}</code> <b>o'rnatildi!</b>"
  386. ),
  387. "already_installed": "✅ [O'rnatilgan]",
  388. }
  389. strings_es = {
  390. "_fun_title": "🪩 Módulos divertidos",
  391. "_fun_desc": "Módulos divertidos — animaciones, spam, juegos, etc.",
  392. "_chat_title": "👥 Módulos de administración de chat",
  393. "_chat_desc": (
  394. "También hay ayuda para módulos de administración de chat — filtros, "
  395. "registros, detección de idiomas, etc."
  396. ),
  397. "_service_title": "⚙️ Módulos útiles",
  398. "_service_desc": (
  399. "Módulos útiles — administración de cuentas, acortamiento de enlaces, "
  400. "motores de búsqueda, etc."
  401. ),
  402. "_downloaders_title": "📥 Descargadores",
  403. "_downloaders_desc": (
  404. "También hay ayuda — YouTube, TikTok, Instagram, Spotify, etc."
  405. ),
  406. "welcome": (
  407. "👋 <b>¡Hola! ¿Te sorprendió ver muchos módulos en el canal?"
  408. "También hay algunas colecciones predefinidas. Para volver a abrir este"
  409. "menú, envíe el comando /presets</b>"
  410. ),
  411. "preset": (
  412. "<b>{}:</b>\nℹ️ <i>{}</i>\n\n⚒ <b>Módulos incluidos en la"
  413. " colección:</b>\n\n{}"
  414. ),
  415. "back": "🔙 Atrás",
  416. "install": "📦 Instalar",
  417. "installing": (
  418. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Instalando la"
  419. " colección</b> <code>{}</code><b>...</b>"
  420. ),
  421. "installing_module": (
  422. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Instalando la"
  423. " colección</b> <code>{}</code> <b>({}/{} módulos)...</b>\n\n<emoji"
  424. " document_id=5188377234380954537>🌘</emoji> <i>Instalando el módulo"
  425. " {}...</i>"
  426. ),
  427. "installed": (
  428. "<emoji document_id=5436040291507247633>🎉</emoji> <b>¡Colección"
  429. "</b> <code>{}</code> <b>instalada!</b>"
  430. ),
  431. "already_installed": "✅ [¡Ya instalado!]",
  432. }
  433. strings_kk = {
  434. "_fun_title": "🪩 Құрметті модулдер",
  435. "_fun_desc": (
  436. "Құрметті модулдер — анимациялар, жондай жазу, ойындар, және басқалар."
  437. ),
  438. "_chat_title": "👥 Желілікті модулдер",
  439. "_chat_desc": (
  440. "Тіркелгілерді қамтамасыз ету, ескерту, сөйлесуді білдіру, және басқалардың"
  441. " тіркелгілерін қамтамасыз ету үшін модулдердің тізімі — тіркелгілер,"
  442. " ескертулер, сөйлесуді білдіру, және басқалар."
  443. ),
  444. "_service_title": "⚙️ Қажетті модулдер",
  445. "_service_desc": (
  446. "Қажетті модулдер — аккаунты басқару, сілтемені қысқарап, іздеуші, және"
  447. " басқалар."
  448. ),
  449. "_downloaders_title": "📥 Жүктеушілер",
  450. "_downloaders_desc": (
  451. "Жүктеушілер тізімі — YouTube, TikTok, Instagram, Spotify, VK Музыка, және"
  452. " басқалар үшін файлдарды жүктеуге және қайта жүктеп алуға көмектеседі."
  453. ),
  454. "welcome": (
  455. "👋 <b>Сәлеметсіз бе! Адамдардың каналдарындағы бескінші модулдерді таңдауға"
  456. " құндығыңыз бар ба? Мен біздің жүктелген наборлардың бірнеше тізімін сізге"
  457. " ұсынамын. Егер сізде бұл менюді қайта қосылуға болса, /presets командасын"
  458. " жіберіңіз</b>"
  459. ),
  460. "preset": "<b>{}:</b>\nℹ️ <i>{}</i>\n\n⚒ <b>Бұл набордағы модулдер:</b>\n\n{}",
  461. "back": "🔙 Артқа",
  462. "install": "📦 Орнату",
  463. "installing": (
  464. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Орнату наборы"
  465. " >/b><code>{}</code><b>...</b>"
  466. ),
  467. "installing_module": (
  468. "<emoji document_id=5451732530048802485>⏳</emoji> <b>Орнату наборы"
  469. "</b> <code>{}</code> <b>({}/{} модулдер)...</b>\n\n<emoji"
  470. " document_id=5188377234380954537>🌘</emoji> <i>Модуль орнату {}...</i>"
  471. ),
  472. "installed": (
  473. "<emoji document_id=5436040291507247633>🎉</emoji> <b>Набор"
  474. "</b> <code>{}</code> <b>орнатылды!</b>"
  475. ),
  476. "already_installed": "✅ [Орнатылды]",
  477. }
  478. async def client_ready(self):
  479. self._markup = utils.chunks(
  480. [
  481. {
  482. "text": self.strings(f"_{preset}_title"),
  483. "callback": self._preset,
  484. "args": (preset,),
  485. }
  486. for preset in PRESETS
  487. ],
  488. 1,
  489. )
  490. if self.get("sent"):
  491. return
  492. self.set("sent", True)
  493. await self._menu()
  494. async def _menu(self):
  495. await self.inline.bot.send_message(
  496. self._client.tg_id,
  497. self.strings("welcome"),
  498. reply_markup=self.inline.generate_markup(self._markup),
  499. )
  500. async def _back(self, call: InlineCall):
  501. await call.edit(self.strings("welcome"), reply_markup=self._markup)
  502. async def _install(self, call: InlineCall, preset: str):
  503. await call.delete()
  504. m = await self._client.send_message(
  505. self.inline.bot_id,
  506. self.strings("installing").format(preset),
  507. )
  508. for i, module in enumerate(PRESETS[preset]):
  509. await m.edit(
  510. self.strings("installing_module").format(
  511. preset, i, len(PRESETS[preset]), module
  512. )
  513. )
  514. try:
  515. await self.lookup("loader").download_and_install(module, None)
  516. except Exception:
  517. logger.exception("Failed to install module %s", module)
  518. await asyncio.sleep(1)
  519. if self.lookup("loader").fully_loaded:
  520. self.lookup("loader").update_modules_in_db()
  521. await m.edit(self.strings("installed").format(preset))
  522. await self._menu()
  523. def _is_installed(self, link: str) -> bool:
  524. return any(
  525. link.strip().lower() == installed.strip().lower()
  526. for installed in self.lookup("loader").get("loaded_modules", {}).values()
  527. )
  528. async def _preset(self, call: InlineCall, preset: str):
  529. await call.edit(
  530. self.strings("preset").format(
  531. self.strings(f"_{preset}_title"),
  532. self.strings(f"_{preset}_desc"),
  533. "\n".join(
  534. map(
  535. lambda x: x[0],
  536. sorted(
  537. [
  538. (
  539. "{} <b>{}</b>".format(
  540. (
  541. self.strings("already_installed")
  542. if self._is_installed(link)
  543. else "▫️"
  544. ),
  545. link.rsplit("/", maxsplit=1)[1].split(".")[0],
  546. ),
  547. int(self._is_installed(link)),
  548. )
  549. for link in PRESETS[preset]
  550. ],
  551. key=lambda x: x[1],
  552. reverse=True,
  553. ),
  554. )
  555. ),
  556. ),
  557. reply_markup=[
  558. {"text": self.strings("back"), "callback": self._back},
  559. {
  560. "text": self.strings("install"),
  561. "callback": self._install,
  562. "args": (preset,),
  563. },
  564. ],
  565. )
  566. async def aiogram_watcher(self, message: BotInlineMessage):
  567. if message.text != "/presets" or message.from_user.id != self._client.tg_id:
  568. return
  569. await self._menu()