Files
limoka/sqlmerr/hikka_mods/fakedata.py
2025-07-10 21:02:34 +03:00

116 lines
5.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
░██████╗░██████╗░██╗░░░░░███╗░░░███╗███████╗██████╗░██████╗░
██╔════╝██╔═══██╗██║░░░░░████╗░████║██╔════╝██╔══██╗██╔══██╗
╚█████╗░██║██╗██║██║░░░░░██╔████╔██║█████╗░░██████╔╝██████╔╝
░╚═══██╗╚██████╔╝██║░░░░░██║╚██╔╝██║██╔══╝░░██╔══██╗██╔══██╗
██████╔╝░╚═██╔═╝░███████╗██║░╚═╝░██║███████╗██║░░██║██║░░██║
╚═════╝░░░░╚═╝░░░╚══════╝╚═╝░░░░░╚═╝╚══════╝╚═╝░░╚═╝╚═╝░░╚═╝
"""
# 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": "<emoji document_id=5210952531676504517>❌</emoji> <b>Error in api!</b>",
"person_text": (
"<b>{emoji} Person:</b>\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": (
"<b>💳 Credit card:</b>\n"
" type - {type}\n"
" number - {number}\n"
" expiration - {expiration}"
),
}
strings_ru = {
"error": "<emoji document_id=5210952531676504517>❌</emoji> <b>Ошибка в апи!</b>",
"person_text": (
"<b>{emoji} Человек:</b>\n"
" имя - {name}\n"
" почта - {email}\n"
" номер телефона - {phone}\n"
" дата рождения - {birthday}\n"
" пол - {gender}\n"
" айпи - {ip}\n"
" адресс - {address}\n\n"
),
"credit_card_text": (
"<b>💳 Кредитная карта:</b>\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)