"""
░██████╗░██████╗░██╗░░░░░███╗░░░███╗███████╗██████╗░██████╗░
██╔════╝██╔═══██╗██║░░░░░████╗░████║██╔════╝██╔══██╗██╔══██╗
╚█████╗░██║██╗██║██║░░░░░██╔████╔██║█████╗░░██████╔╝██████╔╝
░╚═══██╗╚██████╔╝██║░░░░░██║╚██╔╝██║██╔══╝░░██╔══██╗██╔══██╗
██████╔╝░╚═██╔═╝░███████╗██║░╚═╝░██║███████╗██║░░██║██║░░██║
╚═════╝░░░░╚═╝░░░╚══════╝╚═╝░░░░░╚═╝╚══════╝╚═╝░░╚═╝╚═╝░░╚═╝
"""
# meta developer: @sqlmerr_m
# meta icon: https://github.com/sqlmerr/hikka_mods/blob/main/assets/icons/fakedata.png?raw=true
# meta banner: https://github.com/sqlmerr/sqlmerr/blob/main/assets/hikka_mods/sqlmerrmodules_fakedata.png?raw=true
import aiohttp
from typing import Dict, Any
from .. import utils, loader
from hikkatl.types import Message
@loader.tds
class FakeData(loader.Module):
"""Just fake data of persons and credit cards"""
strings = {
"name": "FakeData",
"error": "❌ Error in api!",
"person_text": (
"{emoji} Person:\n"
" name - {name}\n"
" email - {email}\n"
" phone - {phone}\n"
" birthday - {birthday}\n"
" gender - {gender}\n"
" ip - {ip}\n"
" address - {address}\n\n"
),
"credit_card_text": (
"💳 Credit card:\n"
" type - {type}\n"
" number - {number}\n"
" expiration - {expiration}"
),
}
strings_ru = {
"error": "❌ Ошибка в апи!",
"person_text": (
"{emoji} Человек:\n"
" имя - {name}\n"
" почта - {email}\n"
" номер телефона - {phone}\n"
" дата рождения - {birthday}\n"
" пол - {gender}\n"
" айпи - {ip}\n"
" адресс - {address}\n\n"
),
"credit_card_text": (
"💳 Кредитная карта:\n"
" тип - {type}\n"
" номер - {number}\n"
" истекает - {expiration}"
),
"_cls_doc": "Просто фейковые данные о людях и их кредитных карт",
}
def get_formatted_person_text(self, data: Dict[str, Any]) -> str:
address = data["address"]
return self.strings("person_text").format(
emoji="👨" if data["gender"] == "male" else "👩",
name=f"{data['firstname']} {data['lastname']}",
email=data["email"],
phone=data["phone"],
birthday=data["birthday"],
gender=data["gender"],
ip=data["ip"],
address=f"{address['country']}, {address['city']}, {address['street']}",
)
def get_formatted_credit_card_text(self, data: Dict[str, Any]) -> str:
return self.strings("credit_card_text").format(
type=data["type"], number=data["number"], expiration=data["expiration"]
)
@loader.command(
ru_doc='[язык (к примеру: "ru_RU" для Русского или "fr_FR" для французского и т.д.)] - Получить фейковые данные человека и его кредитной карты'
)
async def fakedata(self, message: Message):
"""[locale (for example: "ru_RU" for Russian or "fr_FR" for French)] - Get fake data about person and credit card"""
args = utils.get_args_raw(message).split()
params = {"_quantity": 1}
if args:
params["_locale"] = args[0]
async with aiohttp.ClientSession("https://fakerapi.it") as session:
async with session.get("/api/v1/persons", params=params) as response:
if response.status != 200:
await utils.answer(message, self.strings("error"))
data = await response.json()
person = data["data"][0]
async with session.get("/api/v2/creditCards", params=params) as response:
if response.status != 200:
await utils.answer(message, self.strings("error"))
data = await response.json()
card = data["data"][0]
async with session.get("/api/v1/users", params=params) as response:
if response.status != 200:
await utils.answer(message, self.strings("error"))
data = await response.json()
person["ip"] = data["data"][0]["ip"]
text = self.get_formatted_person_text(
person
) + self.get_formatted_credit_card_text(card)
await utils.answer(message, text)