mirror of
https://github.com/MuRuLOSE/limoka.git
synced 2026-06-17 14:54:18 +02:00
Commited backup
This commit is contained in:
108
vsecoder/hikka_modules/profile.py
Normal file
108
vsecoder/hikka_modules/profile.py
Normal file
@@ -0,0 +1,108 @@
|
||||
"""
|
||||
_
|
||||
__ _____ ___ ___ ___ __| | ___ _ __
|
||||
\ \ / / __|/ _ \/ __/ _ \ / _` |/ _ \ '__|
|
||||
\ V /\__ \ __/ (_| (_) | (_| | __/ |
|
||||
\_/ |___/\___|\___\___/ \__,_|\___|_|
|
||||
|
||||
Copyleft 2022 t.me/vsecoder
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
||||
"""
|
||||
# meta developer: @vsecoder_m
|
||||
# meta pic: https://img.icons8.com/office/344/administrator-male--v1.png
|
||||
# meta banner: https://chojuu.vercel.app/api/banner?img=https://img.icons8.com/office/344/administrator-male--v1.png&title=Profilemod&description=Telegram%20Profile%20Statistic
|
||||
|
||||
__version__ = (0, 0, 1)
|
||||
|
||||
import logging
|
||||
from .. import loader, utils # type: ignore
|
||||
from telethon import functions
|
||||
import imgkit # type: ignore
|
||||
import base64
|
||||
import requests
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@loader.tds
|
||||
class Profilemod(loader.Module):
|
||||
"""Module for get beautiful picture profile statistic"""
|
||||
|
||||
strings = {"name": "Profilemod"}
|
||||
|
||||
def __init__(self):
|
||||
self.config = loader.ModuleConfig(
|
||||
loader.ConfigValue(
|
||||
"background",
|
||||
"https://chojuu.vercel.app/api/banner?img=https://img.icons8.com/office/344/administrator-male--v1.png&title=.&description=.",
|
||||
"Url to background (540x220 is perfect)",
|
||||
validator=loader.validators.Link(),
|
||||
),
|
||||
loader.ConfigValue(
|
||||
"html_template",
|
||||
"https://raw.githubusercontent.com/vsecoder/hikka_modules/main/assets/profile.html",
|
||||
"link to html template (if you don't know how, don't touch!)",
|
||||
validator=loader.validators.Link(),
|
||||
),
|
||||
)
|
||||
self.name = self.strings["name"]
|
||||
|
||||
async def client_ready(self, client, db):
|
||||
self.client = client
|
||||
self.db = db
|
||||
|
||||
@loader.unrestricted
|
||||
@loader.ratelimit
|
||||
async def profilecmd(self, message):
|
||||
"""
|
||||
- get
|
||||
"""
|
||||
chats, channels, bots, users = 0, 0, 0, 0
|
||||
message = await utils.answer(message, "Geting profile info...")
|
||||
async for dialog in self._client.iter_dialogs(ignore_migrated=True):
|
||||
if dialog.is_group:
|
||||
chats += 1
|
||||
elif dialog.is_channel:
|
||||
channels += 1
|
||||
elif dialog.entity.bot:
|
||||
bots += 1
|
||||
else:
|
||||
users += 1
|
||||
|
||||
options = {"crop-w": 540, "crop-h": 220, "encoding": "UTF-8"}
|
||||
|
||||
me = await self._client.get_me()
|
||||
desc = await self._client(functions.users.GetFullUserRequest(me.id))
|
||||
|
||||
message = await utils.answer(message, "Downloading profile photo...")
|
||||
await self._client.download_profile_photo("me", "profile.jpg")
|
||||
message = await utils.answer(message, "Converting profile photo...")
|
||||
base64EncodedStr = base64.b64encode(open("profile.jpg", "rb").read()).decode(
|
||||
"utf-8"
|
||||
)
|
||||
|
||||
message = await utils.answer(message, "Formating info to template...")
|
||||
with open("profile.html", "w") as f:
|
||||
template = requests.get(self.config["html_template"]).text
|
||||
f.write(
|
||||
template.format(
|
||||
self.config["background"],
|
||||
base64EncodedStr,
|
||||
f"@{me.username}",
|
||||
chats,
|
||||
channels,
|
||||
users,
|
||||
bots,
|
||||
desc.full_user.about,
|
||||
)
|
||||
)
|
||||
|
||||
message = await utils.answer(message, "Converting to image...")
|
||||
imgkit.from_file("profile.html", "profile.jpg", options=options)
|
||||
message = await utils.answer(message, "Complete:")
|
||||
|
||||
await self._client.send_file(
|
||||
utils.get_chat_id(message),
|
||||
open("profile.jpg", "rb"),
|
||||
)
|
||||
Reference in New Issue
Block a user