# █ █ ▀ █▄▀ ▄▀█ █▀█ ▀ # █▀█ █ █ █ █▀█ █▀▄ █ # © Copyright 2022 # https://t.me/hikariatama # # 🔒 Licensed under the GNU AGPLv3 # 🌐 https://www.gnu.org/licenses/agpl-3.0.html # meta pic: https://img.icons8.com/cotton/344/like--v2.png # meta developer: @hikarimods # meta banner: https://mods.hikariatama.ru/badges/tgstatus.jpg # scope: hikka_only # scope: hikka_min 1.4.2 import logging import time from telethon.tl.functions.messages import ( GetCustomEmojiDocumentsRequest, GetStickerSetRequest, ) from telethon.tl.types import Message, MessageEntityCustomEmoji from .. import loader, utils logger = logging.getLogger(__name__) @loader.tds class TgStatus(loader.Module): """Rotates Telegram status for Telegram Premium users only""" strings = { "name": "TgStatus", "noargs": ( "💀 You must specify" " interval of status rotation and at least one custom emoji!" ), "status_started": ( "💸 Status rotation" " started!\n\n" " Interval: every {} minute(-s)\nEmojis: {}" ), "status_stopped": ( "💸 Status rotation" " stopped!" ), "no_status": ( "💸 Status rotation" " is not" " running!" ), } strings_ru = { "noargs": ( "💀 Вы должны" " указать интервал смены статуса и хотя бы один кастомный эмодзи!" ), "status_started": ( "💸 Смена статуса" " запущена!\n\n" " Интервал: каждые {} минут(-ы)\nЭмодзи: {}" ), "status_stopped": ( "💸 Смена статуса" " остановлена!" ), "no_status": ( "💸 Смена статуса не" " запущена!" ), } strings_de = { "noargs": ( "💀 Du musst" " einen Intervall für den Statuswechsel angeben und mindestens einen" " benutzerdefinierten Emoji!" ), "status_started": ( "💸 Statuswechsel" " gestartet!\n\n" " Intervall: alle {} Minute(n)\nEmojis: {}" ), "status_stopped": ( "💸 Statuswechsel" " gestoppt!" ), "no_status": ( "💸 Es läuft" " kein Statuswechsel!" ), } strings_hi = { "noargs": ( "💀 आपको स्थिति रोटेशन के" " लिए इंटरवल और कम से कम एक कस्टम इमोजी निर्दिष्ट करना होगा!" ), "status_started": ( "💸 स्थिति रोटेशन शुरू हो" " गया!\n\n अंतराल:" " प्रत्येक {} मिनट(-s)\nइमोजी: {}" ), "status_stopped": ( "💸 स्थिति रोटेशन बंद हो" " गया!" ), "no_status": ( "💸 स्थिति रोटेशन शुरू" " नहीं हुआ है!" ), } strings_tr = { "noargs": ( "💀 Durum döngüsü için" " bir döngü süresi ve en az bir özel emoji belirtmelisin!" ), "status_started": ( "💸 Durum döngüsü" " başladı!\n\n" " Döngü" " süresi: her {} dakika\nEmojiler: {}" ), "status_stopped": ( "💸 Durum döngüsü" " durduruldu!" ), "no_status": ( "💸 Durum döngüsü" " çalışmıyor!" ), } strings_uz = { "noargs": ( "💀 Savol javobi" " uchun vaqt oraligini va kamida bitta maxsus emoji belgilang!" ), "status_started": ( "💸 Savol javobi" " boshlandi!\n\n" " Oraliq: har {} minut(-lar)\nEmojilar: {}" ), "status_stopped": ( "💸 Savol javobi" " to'xtatildi!" ), "no_status": ( "💸 Savol javobi" " boshlanmagan!" ), } async def client_ready(self): if not self._client.hikka_me.premium: raise loader.LoadError("⭐️ This module is for Telegram Premium only!") self.status = self.pointer("status", []) self.status_loop.start() @loader.loop(interval=1) async def status_loop(self): if ( not self.status or not self.get("interval") or self.get("last_change", 0) + self.get("interval") > time.time() ): return await self._client.set_status(self.status[self.get("current_status", 0)]) logger.debug(f"Status changed to {self.status[self.get('current_status', 0)]}") self.set("current_status", self.get("current_status", 0) + 1) if self.get("current_status") >= len(self.status): self.set("current_status", 0) self.set("last_change", int(time.time())) @loader.command( ru_doc=( "<кастомные эмодзи для статуса> <интервал в минутах> - Запустить ротацию" " статуса с интервалом в минутах" ), de_doc=( " - Starte" " den Status-Rotationszyklus mit einem Intervall in Minuten" ), tr_doc=( "<özel emoji durumu için> - Dakika aralığı ile" " durum döngüsünü başlat" ), uz_doc=( " - Daqiqa oraligi bilan" " savol javobini ishga tushirish" ), hi_doc=( "<स्थिति के लिए कस्टम इमोजी> <मिनट अंतराल> - मिनट अंतराल के साथ" " स्थिति रोटेशन चक्र शुरू करें" ), ) async def tgstatus(self, message: Message): """