from hikkatl.types import Message
from .. import loader, utils
import genshin
from genshin.models.hoyolab import GenshinAccount
from .. import main
import logging
import random
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
Module name
📜 Licensed under the GNU AGPLv3
"""
# meta banner: link
# meta desc: desc
# meta developer: @BruhHikkaModules
# requires: genshin
logger = logging.getLogger(__name__)
@loader.tds
class Genshin(loader.Module):
"""Module for Genshin"""
strings = {"name": "Genshin"}
strings_ru = {
"_cls_doc": "Модуль для геншина",
"wait_auth": "⏳ Идёт повторная авторизация...",
"wait_promo": "⏳ Идёт получение промокода...",
"game_accounts_template": "👀 Genshin:"
"\nUID: {uid}"
"\nРанг приключений: {level}"
"\nНик: {nickname}",
"authed": "✅ Авторизован!",
"promo_activated": "✅ {promocode} Активирован!"
}
async def client_ready(self, db, client):
self.hoyo_client = genshin.Client(
{
"cookie_token": self.config["cookie_token"],
"ltuid_v2": int(self.config["ltuid"]),
"ltoken_v2": self.config["ltoken"]
}
)
def __init__(self):
self.config = loader.ModuleConfig(
loader.ConfigValue(
"ltoken",
"v2_UGA879KPhsRM18g23GMCXV80913nbMXOALZGOurfv",
"Set your ltoken in Hoyoverse to login",
validator=loader.validators.Hidden(),
),
loader.ConfigValue(
"ltuid",
"123456789",
"Set your ltuid in Hoyoverse to login",
validator=loader.validators.Hidden(loader.validators.Integer()),
),
loader.ConfigValue(
"cookie_token",
"None",
"Set your cookie token for promocodes",
validator=loader.validators.Hidden()
)
)
@loader.command(
ru_doc=" - Поменяли данные для входа или хотите авторизироваться? Вам нужно перезагрузить модуль",
)
async def greload(self, message: Message):
"""- You change credentials or want auth? You need to reload module"""
await utils.answer(message, self.strings["wait_auth"])
self.hoyo_client = genshin.Client(
{
"cookie_token": self.config["cookie_token"],
"ltuid_v2": int(self.config["ltuid"]),
"ltoken_v2": self.config["ltoken"]
}
)
await utils.answer(message, self.strings["authed"])
@loader.command(
ru_doc=" - Показывает все аккаунты в Genshin"
)
async def hoyoaccounts(self, message: Message):
''' - Shows all accounts in Genshin'''
accounts = await self.hoyo_client.get_game_accounts()
genshin = []
for account in accounts:
if isinstance(account, GenshinAccount):
genshin.append(account.dict())
output = ""
for account in genshin:
output += self.strings["game_accounts_template"].format(**account)
await utils.answer(
message,
output
)
@loader.command(
ru_doc=" [Промокод] - Активирует промокод"
)
async def activatepromo(self, message: Message):
args = utils.get_args_raw(message)
await self.hoyo_client.redeem_code(args, game="genshin")
await utils.answer(
message,
self.strings["promo_activated"].format(
promocode=args
)
)