# ░██████╗░██████╗░██╗░░░░░███╗░░░███╗███████╗██████╗░██████╗░
# ██╔════╝██╔═══██╗██║░░░░░████╗░████║██╔════╝██╔══██╗██╔══██╗
# ╚█████╗░██║██╗██║██║░░░░░██╔████╔██║█████╗░░██████╔╝██████╔╝
# ░╚═══██╗╚██████╔╝██║░░░░░██║╚██╔╝██║██╔══╝░░██╔══██╗██╔══██╗
# ██████╔╝░╚═██╔═╝░███████╗██║░╚═╝░██║███████╗██║░░██║██║░░██║
# ╚═════╝░░░░╚═╝░░░╚══════╝╚═╝░░░░░╚═╝╚══════╝╚═╝░░╚═╝╚═╝░░╚═╝
# ---------------------------------------------------------------------------------------------
# Name: AnimatedProfile
# Description: Модуль для анимации вашего профиля (имя, био)
# Author: sqlmerr
# Commands:
# .animatedname (.aname) | .animatedbio (.abio) | .stopanimatedname (.stopaname) | .stopanimatedbio (.stopabio)
# ---------------------------------------------------------------------------------------------
# meta icon: https://github.com/sqlmerr/hikka_mods/blob/main/assets/icons/animatedprofile.png?raw=true
# meta developer: @sqlmerr_m
# only hikka
import asyncio
from hikkatl.tl.types import Message
from hikkatl import functions
import logging
from .. import loader, utils
logger = logging.getLogger(__name__)
@loader.tds
class AnimatedProfile(loader.Module):
"""Module for your profile animation (name, bio) look in the config"""
strings = {
"name": "AnimatedProfile",
"name_delay": "Time between frames of name animation",
"animated_name_frames": "Name animation frames",
"not_name_frames": "⚠️ See the config! In the animated_name_frames parameter, put your animation frames by name",
"name_is_enabled": "⚠️ Name animation is already enabled, use .astopname to turn it off.",
"name_is_disabled": "⚠️ Name animation is already turned off.",
"name_turned_off": "⚠️ Name animation is disabled.",
"bio_status": "Is the bio animation enabled or not",
"bio_delay": "Time between frames of bio animation",
"animated_bio_frames": "Bio animation frames",
"not_bio_frames": "⚠️ See the config! In the animated_bio_frames parameter, put your animation frames bio",
"bio_is_enabled": "⚠️ Bio animation is already enabled, use .astopname to turn it off.",
"bio_is_disabled": "⚠️ Bio animation is already turned off.",
"bio_turned_off": "⚠️ Bio animation is disabled.",
}
strings_ru = {
"name_delay": "Время между кадрами анимации имени",
"animated_name_frames": "Кадры анимации имени",
"not_name_frames": "⚠️ Смотрите конфиг! В параметре animated_name_frames, поставьте ваши кадры анимации имени",
"name_is_enabled": "⚠️ Анимация имени уже включена, используйте .stopaname, чтобы выключить.",
"name_is_disabled": "⚠️ Анимация имени уже выключена.",
"name_turned_off": "⚠️ Анимация имени выключена.",
"bio_status": "Включена ли анимация био или нет",
"bio_delay": "Время между кадрами анимации био",
"animated_bio_frames": "Кадры анимации био",
"not_bio_frames": "⚠️ Смотрите конфиг! В параметре animated_bio_frames, поставьте ваши кадры анимации био",
"bio_is_enabled": "⚠️ Анимация био уже включена, используйте .stopabio, чтобы выключить.",
"bio_is_disabled": "⚠️ Анимация био уже выключена.",
"bio_turned_off": "⚠️ Анимация био выключена.",
"_cls_doc": "Модуль для анимации вашего профиля (имя, био) смотрите конфиг"
}
def __init__(self):
self.aname = False
self.abio = False
self.config = loader.ModuleConfig(
loader.ConfigValue(
"animated_name_frames",
[],
lambda: self.strings("animated_name_frames"),
validator=loader.validators.Series(
loader.validators.Union(loader.validators.String())
),
),
loader.ConfigValue(
"name_delay",
1.0,
lambda: self.strings("name_delay"),
validator=loader.validators.Float(),
),
loader.ConfigValue(
"animated_bio_frames",
[],
lambda: self.strings("animated_bio_frames"),
validator=loader.validators.Series(
loader.validators.Union(loader.validators.String())
),
),
loader.ConfigValue(
"bio_delay",
2.0,
lambda: self.strings("bio_delay"),
validator=loader.validators.Float(),
),
)
@loader.command(alias="aname", ru_doc="""(aname) Включить анимацию имени""")
async def animatedname(self, message: Message):
"""(aname) Turn on name animation"""
if not self.config["animated_name_frames"]:
return await utils.answer(message, self.strings("not_name_frames"))
if self.aname is False:
self.aname = True
await message.delete()
while self.aname:
for n in self.config["animated_name_frames"]:
await asyncio.sleep(self.config["name_delay"])
await self.client(
functions.account.UpdateProfileRequest(first_name=n)
)
else:
return await utils.answer(message, self.strings("name_is_enabled"))
@loader.command(alias="abio", ru_doc="""(abio) Включить анимацию био""")
async def animatedbio(self, message: Message):
"""(abio) Turn on bio animation"""
if not self.config["animated_bio_frames"]:
return await utils.answer(message, self.strings("not_bio_frames"))
if self.abio is False:
self.abio = True
await message.delete()
while self.abio:
for n in self.config["animated_bio_frames"]:
await asyncio.sleep(self.config["bio_delay"])
await self.client(functions.account.UpdateProfileRequest(about=n))
else:
return await utils.answer(message, self.strings("bio_is_enabled"))
@loader.command(
alias="stopaname", ru_doc="""(stopaname) Выключить анимацию имени"""
)
async def stopanimatedname(self, message: Message):
"""(stopaname) Turn off name animation"""
if self.aname is False:
return await utils.answer(message, self.strings("name_is_disabled"))
await utils.answer(message, self.strings("name_turned_off"))
self.aname = False
@loader.command(alias="stopabio", ru_doc="""(stopabio) Выключить анимацию био""")
async def stopanimatedbio(self, message: Message):
"""(stopabio) Turn off bio animation"""
if self.abio is False:
return await utils.answer(message, self.strings("bio_is_disabled"))
await utils.answer(message, self.strings("bio_turned_off"))
self.abio = False