# ©️ Dan Gazizullin, 2021-2023 # This file is a part of Hikka Userbot # 🌐 https://github.com/hikariatama/Hikka # You can redistribute it and/or modify it under the terms of the GNU AGPLv3 # 🔑 https://www.gnu.org/licenses/agpl-3.0.html import string import hikkapyro import hikkatl from hikkatl.extensions.html import CUSTOM_EMOJIS from hikkatl.tl.types import Message from .. import loader, main, utils, version from ..compat.dragon import DRAGON_EMOJI from ..inline.types import InlineCall @loader.tds class CoreMod(loader.Module): """Control core userbot settings""" strings = { "name": "Settings", "too_many_args": ( "🚫 Too many args" ), "blacklisted": ( "👍 Chat {} blacklisted" " from userbot" ), "unblacklisted": ( "👍 Chat {}" " unblacklisted from userbot" ), "user_blacklisted": ( "👍 User {} blacklisted" " from userbot" ), "user_unblacklisted": ( "👍 User {}" " unblacklisted from userbot" ), "what_prefix": ( " What should the prefix" " be set to?" ), "prefix_incorrect": ( "🚫 Prefix must be one" " symbol in length" ), "prefix_set": ( "{} Command prefix" " updated. Type {newprefix}setprefix {oldprefix} to" " change it back" ), "alias_created": ( "👍 Alias created." " Access it with {}" ), "aliases": "🔗 Aliases:\n", "no_command": ( "🚫 Command" " {} does not exist" ), "alias_args": ( "🚫 You must provide a" " command and the alias for it" ), "delalias_args": ( "🚫 You must provide the" " alias name" ), "alias_removed": ( "👍 Alias" " {} removed." ), "no_alias": ( "🚫 Alias" " {} does not exist" ), "db_cleared": ( "👍 Database cleared" ), "hikka": ( "{} {}.{}.{} {}\n\n💜 Hikka-TL:" " {}\n{}" " Hikka-Pyro: {}\n\n⌨️ Developer:" " t.me/hikariatama" ), "confirm_cleardb": "⚠️ Are you sure, that you want to clear database?", "cleardb_confirm": "🗑 Clear database", "cancel": "🚫 Cancel", "who_to_blacklist": ( " Who to blacklist?" ), "who_to_unblacklist": ( " Who to" " unblacklist?" ), "unstable": ( "\n\n🙈 You are using an" " unstable branch {}!" ), "prefix_collision": ( "💣 Your Dragon and Hikka" " prefixes must be different!" ), } strings_ru = { "too_many_args": ( "🚫 Слишком много" " аргументов" ), "blacklisted": ( "👍 Чат {} добавлен в" " черный список юзербота" ), "unblacklisted": ( "👍 Чат {} удален из" " черного списка юзербота" ), "user_blacklisted": ( "👍 Пользователь {}" " добавлен в черный список юзербота" ), "user_unblacklisted": ( "👍 Пользователь {}" " удален из черного списка юзербота" ), "what_prefix": ( " А какой префикс" " ставить то?" ), "prefix_incorrect": ( "🚫 Префикс должен" " состоять только из одного символа" ), "prefix_set": ( "{} Префикс обновлен." " Чтобы вернуть его, используй {newprefix}setprefix" " {oldprefix}" ), "alias_created": ( "👍 Алиас создан." " Используй его через {}" ), "aliases": "🔗 Алиасы:\n", "no_command": ( "🚫 Команда" " {} не существует" ), "alias_args": ( "🚫 Требуется ввести" " команду и алиас для нее" ), "delalias_args": ( "🚫 Требуется имя" " алиаса" ), "alias_removed": ( "👍 Алиас" " {} удален." ), "no_alias": ( "🚫 Алиас" " {} не существует" ), "db_cleared": ( "👍 База очищена" ), "hikka": ( "{} {}.{}.{} {}\n\n💜 Hikka-TL:" " {}\n{}" " Hikka-Pyro: {}\n\n⌨️ Developer:" " t.me/hikariatama" ), "_cls_doc": "Управление базовыми настройками юзербота", "confirm_cleardb": "⚠️ Вы уверены, что хотите сбросить базу данных?", "cleardb_confirm": "🗑 Очистить базу", "cancel": "🚫 Отмена", "who_to_blacklist": ( " Кого заблокировать" " то?" ), "who_to_unblacklist": ( " Кого разблокировать" " то?" ), "unstable": ( "\n\n🙈 Ты используешь" " нестабильную ветку {}!" ), "prefix_collision": ( "💣 Префиксы Dragon и" " Hikka должны отличаться!" ), } strings_fr = { "too_many_args": ( "🚫 Trop d'arguments " ), "blacklisted": ( "👍 Le chat {} a été" " ajouté à la liste noire du robot utilisateur" ), "unblacklisted": ( "👍 Le chat {} a été" " supprimé de la liste noire du robot utilisateur" ), "user_blacklisted": ( "👍 L'utilisateur {}" " a été ajouté à la liste noire du robot utilisateur" ), "user_unblacklisted": ( "👍 L'utilisateur {}" " a été supprimé de la liste noire du robot utilisateur" ), "what_prefix": ( " Et quel préfixe" " mettre alors ?" ), "prefix_incorrect": ( "🚫 Le préfixe doit" " être composé d'un seul caractère" ), "prefix_set": ( "{} Le préfixe a été mis à jour." " Pour le rétablir, utilisez {newprefix}setprefix" " {oldprefix}" ), "alias_created": ( "👍 L'alias a été créé." " Utilisez-le avec {}" ), "aliases": "🔗 Alias:\n", "no_command": ( "🚫 La commande" " {} n'existe pas" ), "alias_args": ( "🚫 Vous devez entrer" " une commande et un alias pour elle" ), "delalias_args": ( "🚫 Vous devez entrer" " un alias" ), "alias_removed": ( "👍 Alias" " {} supprimé." ), "no_alias": ( "🚫 Alias" " {} n'existe pas" ), "db_cleared": ( "👍 Base de données" " effacée" ), "hikka": ( "{} {}.{}.{} {}\n\n💜 Hikka-TL:" " {}\n{}" " Hikka-Pyro: {}\n\n⌨️ Developer:" " t.me/hikariatama" ), "_cls_doc": "Gérer les paramètres de base du userbot", "confirm_cleardb": ( "⚠️ Êtes-vous sûr de vouloir réinitialiser la base de données?" ), "cleardb_confirm": "🗑 Effacer la base de données", "cancel": "🚫 Annuler", "who_to_blacklist": ( " Qui bloquer?" ), "who_to_unblacklist": ( " Qui débloquer?" ), "unstable": ( "\n\n🙈 Vous utilisez" " une branche instable {}!" ), "prefix_collision": ( "💣 Les préfixes Dragon" " et Hikka doivent être différents!" ), } strings_it = { "too_many_args": ( "🚫 Troppi argomenti" ), "blacklisted": ( "👍 Il gruppo {} è stato" " aggiunto alla lista nera del bot" ), "unblacklisted": ( "👍 Il gruppo {} è stato" " rimosso dalla lista nera del bot" ), "user_blacklisted": ( "👍 L'utente {} è stato" " aggiunto alla lista nera del bot" ), "user_unblacklisted": ( "👍 L'utente {} è stato" " rimosso dalla lista nera del bot" ), "what_prefix": ( " Che prefisso devo" " usare?" ), "prefix_incorrect": ( "🚫 Il prefisso deve" " essere di un solo carattere" ), "prefix_set": ( "{} Il prefisso è stato aggiornato." " Per ripristinarlo, usa {newprefix}setprefix" " {oldprefix}" ), "alias_created": ( "👍 L'alias è stato" " creato. Usa il comando con {}" ), "aliases": "🔗 Alias:\n", "no_command": ( "🚫 Il comando" " {} non esiste" ), "alias_args": ( "🚫 È necessario" " specificare un comando e un alias per questo" ), "delalias_args": ( "🚫 Nome alias" " richiesto" ), "alias_removed": ( "👍 Alias" " {} rimosso." ), "no_alias": ( "🚫 Alias" " {} non esiste" ), "db_cleared": ( "👍 Database" " cancellato" ), "hikka": ( "{} {}.{}.{} {}\n\n💜 Hikka-TL:" " {}\n{}" " Hikka-Pyro: {}\n\n⌨️ Developer:" " t.me/hikariatama" ), "_cls_doc": "Gestisci le impostazioni base del bot utente", "confirm_cleardb": "⚠️ Sei sicuro di voler cancellare il database?", "cleardb_confirm": "🗑 Cancella il database", "cancel": "🚫 Annulla", "who_to_blacklist": ( " Chi vuoi bloccare?" " " ), "who_to_unblacklist": ( " Chi vuoi sbloccare?" " " ), "unstable": ( "\n\n🙈 Stai usando una" " versione instabile {}!" ), "prefix_collision": ( "💣 I prefissi Dragon e" " Hikka devono essere diversi!" ), } strings_de = { "too_many_args": ( "🚫 Zu vieleArgumente" ), "blacklisted": ( "👍 Chat {} hinzugefügt" " zuUserbot-Blacklist" ), "unblacklisted": ( "👍 Chat {} entfernt aus" "Blacklist für Userbots" ), "user_blacklisted": ( "👍 Benutzer {}" "Von Userbot auf die schwarze Liste gesetzt" ), "user_unblacklisted": ( "👍 Benutzer {}" " von Userbot-Blacklist entfernt" ), "what_prefix": ( " Welches Präfix soll" " ich setzen?" ), "prefix_incorrect": ( "🚫 Präfix muss" "bestehen nur aus einem Zeichen" ), "prefix_set": ( "{} Präfix aktualisiert." " Um es zurückzugeben, verwenden Sie {newprefix}setprefix" "{oldprefix}" ), "alias_created": ( "👍 Alias ​​erstellt." " Verwenden Sie es über {}" ), "aliases": "🔗 Aliasse:\n", "no_command": ( "🚫 Befehl" " {} existiert nicht" ), "alias_args": ( "🚫 Eingabe erforderlich" "Befehl und Alias ​​dafür" ), "delalias_args": ( "🚫 Name erforderlich" "alias" ), "alias_removed": ( "👍 Alias" " {} gelöscht." ), "no_alias": ( "🚫Alias" " {} existiert nicht" ), "db_cleared": ( "👍Basis gelöscht" ), "hikka": ( "{} {}.{}.{} {}\n\n💜 Hikka-TL:" " {}\n{}" " Hikka-Pyro:" " {}\n\n⌨️" " Entwickler: t.me/hikariatama" ), "_cls_doc": "Verwaltung der Grundeinstellungen des Userbots", "confirm_cleardb": ( "⚠️ Sind Sie sicher, dass Sie die Datenbank zurücksetzen möchten?" ), "cleardb_confirm": "🗑 Basis löschen", "cancel": "🚫 Stornieren", "who_to_blacklist": ( " Zu blockierende" " Personendann?" ), "who_to_unblacklist": ( " Wen entsperrendann?" ), "unstable": ( "\n\n🙈 Sie verwenden" "instabiler Zweig {}!" ), "prefix_collision": ( "💣 Präfixe" "Dragon und Hikka müssen sich unterscheiden!" ), } strings_tr = { "too_many_args": ( "🚫 Çok fazla" " argüman var" ), "blacklisted": ( "👍 {} adlı sohbet," " kullanıcı botu kara listesine eklendi" ), "unblacklisted": ( "👍 {} adlı sohbet," " kullanıcı botu kara listesinden çıkartıldı" ), "user_blacklisted": ( "👍 {} adlı kişi," " kullanıcı botu kara listesine eklendi" ), "user_unblacklisted": ( "👍 {} adlı kişi," " kullanıcı botu kara listesine eklendi" ), "what_prefix": ( " Hangi öneki" " ayarlamalıyım?" ), "prefix_incorrect": ( "🚫 Önek sadece" " bir karakterden oluşabilir" ), "prefix_set": ( "{} Komut öneki güncellendi. Yeniden değiştirmek için" " için, {newprefix}setprefix {oldprefix} komutunu" " kullanın" ), "alias_created": ( "👍 Komut için takma ad" " oluşturuldu. {} komutuyla kullanabilirsiniz" ), "aliases": "🔗 Takma adlar:\n", "no_command": ( "🚫 Komut" " {} mevcut değil" ), "alias_args": ( "🚫 Bunun için bir komut" " ve takma ad girmeniz gerekmektedir" ), "delalias_args": ( "🚫 Bunun için bir takma " " ad girmeniz gerekmektedir" ), "alias_removed": ( "👍 Takma ad" " {} kaldırıldı." ), "no_alias": ( "🚫 Takma Ad" " {} mevcut değil" ), "db_cleared": ( "👍 Veri Tabanı" " sıfırlandı" ), "hikka": ( "{} {}.{}.{} {}\n\n💜 Hikka-TL:" " {}\n{}" " Hikka-Pyro:" " {}\n\n⌨️" " Geliştirici: t.me/hikariatama" ), "_cls_doc": "Userbot temel ayar yönetimi", "confirm_cleardb": ( "⚠️ Veritabanını sıfırlamak istediğinizden emin misiniz?" ), "cleardb_confirm": "🗑 Veri Tabanını sıfırla", "cancel": "🚫 İptal", "who_to_blacklist": ( " Kimler engellenir" "sonra?" ), "who_to_unblacklist": ( " Kimin engellemesi" " kaldırılsın?" ), "unstable": ( "\n\n🙈 Hikka'nın kararsız" " bir sürümü olan {} sürümünü kullanıyorsunuz!" ), "prefix_collision": ( "💣 Önekler çakışıyor!" ), } strings_uz = { "too_many_args": ( "🚫 Juda ko'p" " argumentlar" ), "blacklisted": ( "👍 Chat {} qo'shildi" " userbot qora ro' yxati" ), "unblacklisted": ( "👍 Chat {} o'chirildi" "Userbot qora ro'yxati" ), "user_blacklisted": ( "👍 Foydalanuvchi {}" " userbot tomonidan qora ro'yxatga kiritilgan" ), "user_unblacklisted": ( "👍 Foydalanuvchi {}" " userbot qora ro'yxatidan olib tashlandi" ), "what_prefix": ( " Qaysi prefiksni" " o'rnatishim kerak?" ), "prefix_incorrect": ( "🚫 Prefiks kerak" "faqat bitta belgidan iborat" ), "prefix_set": ( "{} Prefiks yangilandi." " Uni qaytarish uchun {newprefix}setprefix dan foydalaning." "{oldprefix}" ), "alias_created": ( "👍 Taxallus yaratildi." " {} orqali foydalaning" ), "aliases": "🔗 Taxalluslar:\n", "no_command": ( "🚫 Buyruq" " {} mavjud" ), "alias_args": ( "🚫 Kirish kerak" "buyruq va uning taxallusi" ), "delalias_args": ( "🚫 Ism keraktaxallus" ), "alias_removed": ( "👍 Taxallus" " {} o'chirildi." ), "no_alias": ( "🚫 Taxallus" " {} mavjud" ), "db_cleared": ( "👍 Baza tozalandi" ), "hikka": ( "{} {}.{}.{} {}\n\n💜 Hikka-TL:" " {}\n{}" " Hikka-Pyro: {}\n\n⌨️ Ishlab chiquvchi:" " t.me/hikariatama" ), "_cls_doc": "Userbot asosiy sozlamalarini boshqarish", "confirm_cleardb": ( "⚠️ Siz maʼlumotlar bazasini qayta o'rnatmoqchimisiz?" ), "cleardb_confirm": "🗑 Bazani tozalash", "cancel": "🚫 Bekor qilish", "who_to_blacklist": ( " Kimni bloklash kerak" "keyin?" ), "who_to_unblacklist": ( " Kimni blokdan" " chiqarish kerakkeyin?" ), "unstable": ( "\n\n🙈 Siz" " foydalanayotgan versiya {}!" ), "prefix_collision": ( "💣 Dragon va Hikka" " prefikslari boshqacha bo'lishi kerak!" ), } strings_es = { "chat_blacklisted": ( "👍 El chat {} ha sido" " añadido a la lista negra" ), "chat_unblacklisted": ( "👍 El chat {} ha sido" " removido de la lista negra" ), "user_blacklisted": ( "👍 El usuario {} ha sido" " añadido a la lista negra" ), "user_unblacklisted": ( "👍 El usuario {} ha sido" " removido de la lista negra" ), "what_prefix": ( " ¿Cuál es el prefijo" " que quieres establecer?" ), "prefix_incorrect": ( "🚫 El prefijo debe ser" " un solo carácter" ), "prefix_set": ( "{} El prefijo ha sido" " establecido. El nuevo prefijo es {newprefix}setprefix" " {oldprefix} para restablecerlo" ), "alias_created": ( "👍 El alias" " {} ha sido creado" ), "alias_deleted": ( "👍 El alias" " {} ha sido eliminado" ), "no_alias": ( "🚫 Alias" " {} no existe" ), "db_cleared": ( "👍Base de datos" " borrada" ), "hikka": ( "{} {}.{}.{} {}\n\n💜 Hikka-TL:" " {}\n{}" " Hikka-Pyro: {}\n\n⌨️ Desarrollador:" " t.me/hikariatama" ), "_cls_doc": "Los ajustes básicos del usuario del bot", "confirm_cleardb": "⚠️ ¿Quieres borrar la base de datos?", "cleardb_confirm": "🗑 Borrar base de datos", "cancel": "🚫 Cancelar", "who_to_blacklist": ( " ¿Quién quieres" " añadir a la lista negra?" ), "who_to_unblacklist": ( " ¿Quién quieres" " eliminar de la lista negra?" ), "unstable": ( "\n\n🙈 Estás usando la" " rama inestable {}!" ), "prefix_collision": ( "💣 ¡Dragon y Hikka deben" " tener prefijos diferentes!" ), } strings_kk = { "too_many_args": ( "🚫 Тым көп" " аргументтер" ), "blacklisted": ( "👍 Чат {} чаттар" "дың көрсеткішінің күйіне қосылды" ), "unblacklisted": ( "👍 Чат {} чаттар" "дың көрсеткішінің күйінен алынды" ), "user_blacklisted": ( "👍 Пайдаланушы {}" " пайдаланушылардың көрсеткішінің күйіне қосылды" ), "user_unblacklisted": ( "👍 Пайдаланушы {}" " пайдаланушылардың көрсеткішінің күйінен алынды" ), "what_prefix": ( " Бірақ" " қандай әліпби беремін?" ), "prefix_incorrect": ( "🚫 Әліпби тек" " бір таңбадан тұруы керек" ), "prefix_set": ( "{} Әліпби жаңартылды." " Қайтару үшін {newprefix}setprefix {oldprefix}" " пайдаланыңыз" ), "alias_created": ( "👍 Алиас жасалды." " Оны {} пайдаланыңыз" ), "aliases": "🔗 Алиастар:\n", "no_command": ( "🚫 Команда" " {} жоқ" ), "alias_args": ( "🚫 Команда мен" " оның алиасын енгізуіңіз керек" ), "delalias_args": ( "🚫 Алиас атауы" " енгізуіңіз керек" ), "alias_removed": ( "👍 Алиас" " {} жойылды." ), "no_alias": ( "🚫 Алиас" " {} жоқ" ), "db_cleared": ( "👍 База тазаланды" ), "hikka": ( "{} {}.{}.{} {}\n\n💜 Hikka-TL:" " {}\n{}" " Hikka-Pyro: {}\n\n⌨️ Әзірлеуші:" " t.me/hikariatama" ), "_cls_doc": "Жүйе бастапқы параметрлерін басқару", "confirm_cleardb": ( "⚠️ Сіз дейінгі база деректерін тазалауға сенімдісіз бе?" ), "cleardb_confirm": "🗑 База деректерін тазалау", "cancel": "🚫 Болдырмау", "who_to_blacklist": ( " Кімді блога қою" " керек?" ), "who_to_unblacklist": ( " Кімді блога қоюды" " болдырмау керек?" ), "unstable": ( "\n\n🙈 Сіз қолданбаған" " белгісіз қосымша {}!" ), "prefix_collision": ( "💣 Dragon және" " Hikka префикстері айырмасы керек!" ), } async def blacklistcommon(self, message: Message): args = utils.get_args(message) if len(args) > 2: await utils.answer(message, self.strings("too_many_args")) return chatid = None module = None if args: try: chatid = int(args[0]) except ValueError: module = args[0] if len(args) == 2: module = args[1] if chatid is None: chatid = utils.get_chat_id(message) module = self.allmodules.get_classname(module) return f"{str(chatid)}.{module}" if module else chatid @loader.command( ru_doc="Показать версию Hikka", fr_doc="Afficher la version de Hikka", it_doc="Mostra la versione di Hikka", de_doc="Zeige die Hikka-Version an", tr_doc="Hikka sürümünü gösterir", uz_doc="Hikka versiyasini ko'rsatish", es_doc="Mostrar la versión de Hikka", kk_doc="Hikka нұсқасын көрсету", tt_doc="Hikka версиясын күрсәтү", ) async def hikkacmd(self, message: Message): """Get Hikka version""" await utils.answer_file( message, "https://github.com/hikariatama/assets/raw/master/hikka_cat_banner.mp4", self.strings("hikka").format( ( utils.get_platform_emoji() if self._client.hikka_me.premium and CUSTOM_EMOJIS else "🌘 Hikka userbot" ), *version.__version__, utils.get_commit_url(), f"{hikkatl.__version__} #{hikkatl.tl.alltlobjects.LAYER}", ( "🔥" if self._client.pyro_proxy else "📴" ), f"{hikkapyro.__version__} #{hikkapyro.raw.all.layer}", ) + ( "" if version.branch == "master" else self.strings("unstable").format(version.branch) ), ) @loader.command( ru_doc="[чат] [модуль] - Отключить бота где-либо", fr_doc="[chat] [module] - Désactiver le bot n'importe où", it_doc="[chat] [module] - Disattiva il bot ovunque", de_doc="[chat] [Modul] - Deaktiviere den Bot irgendwo", tr_doc="[sohbet] [modül] - Botu herhangi bir yerde devre dışı bırakın", uz_doc="[chat] [modul] - Botni hozircha o'chirish", es_doc="[chat] [módulo] - Desactivar el bot en cualquier lugar", kk_doc="[сөйлесу] [модуль] - Ботты қайда болса болсын өшіру", tt_doc="[сөйләшү] [модуль] - Ботны һәр җирләгәнде өшерергә", ) async def blacklist(self, message: Message): """[chat_id] [module] - Blacklist the bot from operating somewhere""" chatid = await self.blacklistcommon(message) self._db.set( main.__name__, "blacklist_chats", self._db.get(main.__name__, "blacklist_chats", []) + [chatid], ) await utils.answer(message, self.strings("blacklisted").format(chatid)) @loader.command( ru_doc="[чат] - Включить бота где-либо", fr_doc="[chat] - Activer le bot n'importe où", it_doc="[chat] - Attiva il bot ovunque", de_doc="[chat] - Aktiviere den Bot irgendwo", tr_doc="[sohbet] - Botu herhangi bir yerde etkinleştirin", uz_doc="[chat] - Botni hozircha yoqish", es_doc="[chat] - Activar el bot en cualquier lugar", kk_doc="[сөйлесу] - Ботты қайда болса болсын қосу", tt_doc="[сөйләшү] - Ботны һәр җирләгәнде җибәрергә", ) async def unblacklist(self, message: Message): """ - Unblacklist the bot from operating somewhere""" chatid = await self.blacklistcommon(message) self._db.set( main.__name__, "blacklist_chats", list(set(self._db.get(main.__name__, "blacklist_chats", [])) - {chatid}), ) await utils.answer(message, self.strings("unblacklisted").format(chatid)) async def getuser(self, message: Message): try: return int(utils.get_args(message)[0]) except (ValueError, IndexError): if reply := await message.get_reply_message(): return reply.sender_id return message.to_id.user_id if message.is_private else False @loader.command( ru_doc="[пользователь] - Запретить пользователю выполнять команды", fr_doc="[utilisateur] - Interdire à l'utilisateur d'exécuter des commandes", it_doc="[utente] - Impedisci all'utente di eseguire comandi", de_doc="[Benutzer] - Verbiete dem Benutzer, Befehle auszuführen", tr_doc="[kullanıcı] - Kullanıcıya komutları yürütmeyi yasakla", uz_doc="[foydalanuvchi] - Foydalanuvchiga buyruqlarni bajarishni taqiqlash", es_doc="[usuario] - Prohibir al usuario ejecutar comandos", kk_doc="[пайдаланушы] - Пайдаланушыға командаларды орындауға рұқсат бермеу", tt_doc="[кулланучы] - Кулланучыга командаларны орындауға рөхсәт бирмәү", ) async def blacklistuser(self, message: Message): """[user_id] - Prevent this user from running any commands""" if not (user := await self.getuser(message)): await utils.answer(message, self.strings("who_to_blacklist")) return self._db.set( main.__name__, "blacklist_users", self._db.get(main.__name__, "blacklist_users", []) + [user], ) await utils.answer(message, self.strings("user_blacklisted").format(user)) @loader.command( ru_doc="[пользователь] - Разрешить пользователю выполнять команды", fr_doc="[utilisateur] - Autoriser l'utilisateur à exécuter des commandes", it_doc="[utente] - Consenti all'utente di eseguire comandi", de_doc="[Benutzer] - Erlaube dem Benutzer, Befehle auszuführen", tr_doc="[kullanıcı] - Kullanıcıya komutları yürütmeyi yasakla", uz_doc="[foydalanuvchi] - Foydalanuvchiga buyruqlarni bajarishni taqiqlash", es_doc="[usuario] - Prohibir al usuario ejecutar comandos", kk_doc="[пайдаланушы] - Пайдаланушыға командаларды орындауға рұқсат бермеу", tt_doc="[кулланучы] - Кулланучыга командаларны орындауға рөхсәт бирмәү", ) async def unblacklistuser(self, message: Message): """[user_id] - Allow this user to run permitted commands""" if not (user := await self.getuser(message)): await utils.answer(message, self.strings("who_to_unblacklist")) return self._db.set( main.__name__, "blacklist_users", list(set(self._db.get(main.__name__, "blacklist_users", [])) - {user}), ) await utils.answer( message, self.strings("user_unblacklisted").format(user), ) @loader.command( ru_doc="[dragon] <префикс> - Установить префикс команд", fr_doc="[dragon] - Définir le préfixe des commandes", it_doc="[dragon] - Imposta il prefisso dei comandi", de_doc="[dragon] - Setze das Befehlspräfix", tr_doc="[dragon] <önek> - Komut öneki ayarla", uz_doc="[dragon] - Buyruqlar uchun avvalgi belgilash", es_doc="[dragon] - Establecer el prefijo de comandos", kk_doc="[dragon] <бастауыш> - Командалардың бастауышын орнату", tt_doc="[dragon] <башкача> - Командаларның башкачасын орнату", ) async def setprefix(self, message: Message): """[dragon] - Sets command prefix""" if not (args := utils.get_args_raw(message)): await utils.answer(message, self.strings("what_prefix")) return if len(args.split()) == 2 and args.split()[0] == "dragon": args = args.split()[1] is_dragon = True else: is_dragon = False if len(args) != 1: await utils.answer(message, self.strings("prefix_incorrect")) return if args == "s": await utils.answer(message, self.strings("prefix_incorrect")) return if ( not is_dragon and args[0] == self._db.get("dragon.prefix", "command_prefix", ",") or is_dragon and args[0] == self._db.get(main.__name__, "command_prefix", ".") ): await utils.answer(message, self.strings("prefix_collision")) return oldprefix = ( f"dragon {utils.escape_html(self.get_prefix('dragon'))}" if is_dragon else utils.escape_html(self.get_prefix()) ) self._db.set( "dragon.prefix" if is_dragon else main.__name__, "command_prefix", args, ) await utils.answer( message, self.strings("prefix_set").format( ( DRAGON_EMOJI if is_dragon else "👍" ), newprefix=utils.escape_html( self.get_prefix() if is_dragon else args[0] ), oldprefix=utils.escape_html(oldprefix), ), ) @loader.command( ru_doc="Показать список алиасов", fr_doc="Afficher la liste des alias", it_doc="Mostra la lista degli alias", de_doc="Zeige Aliase", tr_doc="Takma adları göster", uz_doc="Aliaslarni ko'rsatish", es_doc="Mostrar lista de alias", kk_doc="Айланыстарды көрсету", tt_doc="Алиаслар тизмесен күрсәтү", ) async def aliases(self, message: Message): """Print all your aliases""" await utils.answer( message, self.strings("aliases") + "\n".join( [ f"▫️ {i} <- {y}" for i, y in self.allmodules.aliases.items() ] ), ) @loader.command( ru_doc="Установить алиас для команды", fr_doc="Définir un alias pour la commande", it_doc="Imposta un alias per il comando", de_doc="Setze einen Alias für einen Befehl", tr_doc="Bir komut için takma ad ayarla", uz_doc="Buyrug' uchun alias belgilash", es_doc="Establecer alias para el comando", kk_doc="Команда үшін айланыс орнату", tt_doc="Команда үчен алиас күрсәтү", ) async def addalias(self, message: Message): """Set an alias for a command""" args = utils.get_args(message) if len(args) != 2: await utils.answer(message, self.strings("alias_args")) return alias, cmd = args if self.allmodules.add_alias(alias, cmd): self.set( "aliases", { **self.get("aliases", {}), alias: cmd, }, ) await utils.answer( message, self.strings("alias_created").format(utils.escape_html(alias)), ) else: await utils.answer( message, self.strings("no_command").format(utils.escape_html(cmd)), ) @loader.command( ru_doc="Удалить алиас для команды", fr_doc="Supprimer un alias pour la commande", it_doc="Rimuovi un alias per il comando", de_doc="Entferne einen Alias für einen Befehl", tr_doc="Bir komut için takma ad kaldır", uz_doc="Buyrug' uchun aliasni o'chirish", es_doc="Eliminar alias para el comando", kk_doc="Команда үшін айланысты жою", tt_doc="Команда үчен алиасны юйү", ) async def delalias(self, message: Message): """Remove an alias for a command""" args = utils.get_args(message) if len(args) != 1: await utils.answer(message, self.strings("delalias_args")) return alias = args[0] if not self.allmodules.remove_alias(alias): await utils.answer( message, self.strings("no_alias").format(utils.escape_html(alias)), ) return current = self.get("aliases", {}) del current[alias] self.set("aliases", current) await utils.answer( message, self.strings("alias_removed").format(utils.escape_html(alias)), ) @loader.command( ru_doc="Очистить базу данных", fr_doc="Vider la base de données", it_doc="Cancella il database", de_doc="Datenbank leeren", tr_doc="Veritabanını temizle", uz_doc="Ma'lumotlar bazasini tozalash", es_doc="Limpiar la base de datos", kk_doc="Деректер базасын тазалау", tt_doc="Мәгълүмат базасын тазалау", ) async def cleardb(self, message: Message): """Clear the entire database, effectively performing a factory reset""" await self.inline.form( self.strings("confirm_cleardb"), message, reply_markup=[ { "text": self.strings("cleardb_confirm"), "callback": self._inline__cleardb, }, { "text": self.strings("cancel"), "action": "close", }, ], ) async def _inline__cleardb(self, call: InlineCall): self._db.clear() self._db.save() await utils.answer(call, self.strings("db_cleared"))