# █ █ ▀ █▄▀ ▄▀█ █▀█ ▀
# █▀█ █ █ █ █▀█ █▀▄ █
# © 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):
"""