mirror of
https://github.com/MuRuLOSE/limoka.git
synced 2026-06-16 22:34:19 +02:00
212 lines
7.6 KiB
Python
212 lines
7.6 KiB
Python
version = (0, 0, 1)
|
|
# _ _ _ _
|
|
# | | | | (_) |
|
|
# | | _ | |_ _ _ _| |
|
|
# | | / _ \| / _ \/ | | |/ /
|
|
# | |_| (_) | || (_) \ \ | <
|
|
# \_/\_/ \\_/|_/_|_|\_\
|
|
#
|
|
# © Copyright 2022
|
|
#
|
|
# developed by @lotosiiik, @byateblan
|
|
# █ █ ▀ █▄▀ ▄▀█ █▀█ ▀
|
|
# █▀█ █ █ █ █▀█ █▀▄ █
|
|
# © Copyright 2022
|
|
# https://t.me/hikariatama
|
|
#
|
|
# 🔒 Licensed under the GNU AGPLv3
|
|
# 🌐 https://www.gnu.org/licenses/agpl-3.0.html
|
|
|
|
# meta developer: @hikkaftgmods
|
|
# meta banner: https://i.imgur.com/BtmS5QF.jpeg
|
|
# meta pic: https://i.imgur.com/wB0SFBi.jpeg
|
|
|
|
import logging
|
|
|
|
import git
|
|
from telethon.tl.types import Message
|
|
from telethon.utils import get_display_name
|
|
|
|
from .. import loader, utils, main
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
@loader.tds
|
|
class HFInfoMod(loader.Module):
|
|
"""Show userbot info"""
|
|
strings = {
|
|
"name": "HFInfo",
|
|
"owner": "Owner",
|
|
"version": "Version",
|
|
"build": "Build",
|
|
"Uptime": "Uptime",
|
|
"prefix": "Prefix",
|
|
"up-to-date": "😌 Up-to-date",
|
|
"update_required": "😕 Update required </b><code>.update</code><b>",
|
|
"_cfg_cst_msg": (
|
|
"Custom message for info. May contain {me}, {version}, {build}, {prefix},"
|
|
" {platform}, {upd}, {uptime} keywords"
|
|
),
|
|
"_cfg_cst_btn": "Custom button for info. Leave empty to remove button",
|
|
"_cfg_cst_frmt": "Custom fileformat for Banner info.",
|
|
"_cfg_banner": "URL to image banner",
|
|
}
|
|
|
|
strings_ru = {
|
|
"owner": "Владелец",
|
|
"version": "Версия",
|
|
"build": "Сборка",
|
|
"prefix": "Префикс",
|
|
"uptime": "Аптайм",
|
|
"up-to-date": "<b>😌 Актуальная версия</b>",
|
|
"update_required": "<b>😕 Требуется обновление </b><code>.update</code>",
|
|
"_cfg_cst_msg": (
|
|
"Кастомный текст сообщения в info. Может содержать ключевые слова {me},"
|
|
" {version}, {build}, {prefix}, {platform}, {upd}, {uptime}"
|
|
),
|
|
"_cfg_cst_btn": (
|
|
"Кастомная кнопка в сообщении в info. Оставь пустым, чтобы убрать кнопку"
|
|
),
|
|
"_cfg_banner": "Ссылка на баннер-картинку",
|
|
"_cfg_cst_frmt": "Кастомный формат файла для информации баннера",
|
|
}
|
|
def __init__(self):
|
|
self.config = loader.ModuleConfig(
|
|
loader.ConfigValue(
|
|
"custom_message",
|
|
doc=lambda: self.strings("_cfg_cst_msg"),
|
|
),
|
|
loader.ConfigValue(
|
|
"custom_banner",
|
|
"https://i.imgur.com/jJwhJkK.jpeg",
|
|
doc=lambda: self.strings("_cfg_banner")
|
|
),
|
|
loader.ConfigValue(
|
|
"custom_format",
|
|
"photo",
|
|
lambda: self.strings("_cfg_cst_frmt"),
|
|
validator=loader.validators.Choice(["photo", "video", "audio", "gif"]),
|
|
),
|
|
loader.ConfigValue(
|
|
"disable_banner",
|
|
False,
|
|
lambda: self.strings("_cfg_banner"),
|
|
validator=loader.validators.Boolean(),
|
|
),
|
|
loader.ConfigValue(
|
|
"custom_button1",
|
|
[],
|
|
lambda: self.strings("_cfg_cst_btn"),
|
|
validator=loader.validators.Series(min_len=0, max_len=2),
|
|
),
|
|
loader.ConfigValue(
|
|
"custom_button2",
|
|
[],
|
|
lambda: self.strings("_cfg_cst_btn"),
|
|
validator=loader.validators.Series(min_len=0, max_len=2),
|
|
),
|
|
loader.ConfigValue(
|
|
"custom_button3",
|
|
[],
|
|
lambda: self.strings("_cfg_cst_btn"),
|
|
validator=loader.validators.Series(min_len=0, max_len=2),
|
|
),
|
|
loader.ConfigValue(
|
|
"custom_button4",
|
|
[],
|
|
lambda: self.strings("_cfg_cst_btn"),
|
|
validator=loader.validators.Series(min_len=0, max_len=2),
|
|
),
|
|
loader.ConfigValue(
|
|
"custom_button5",
|
|
[],
|
|
lambda: self.strings("_cfg_cst_btn"),
|
|
validator=loader.validators.Series(min_len=0, max_len=2),
|
|
),
|
|
loader.ConfigValue(
|
|
"custom_button6",
|
|
[],
|
|
lambda: self.strings("_cfg_cst_btn"),
|
|
validator=loader.validators.Series(min_len=0, max_len=2),
|
|
),
|
|
)
|
|
|
|
async def client_ready(self, client, db):
|
|
self._me = await client.get_me()
|
|
|
|
def _render_info(self) -> str:
|
|
ver = utils.get_git_hash() or "Unknown"
|
|
|
|
try:
|
|
repo = git.Repo(search_parent_directories=True)
|
|
diff = repo.git.log(["HEAD..origin/master", "--oneline"])
|
|
upd = (
|
|
self.strings("update_required") if diff else self.strings("up-to-date")
|
|
)
|
|
except Exception:
|
|
upd = ""
|
|
|
|
me = f'<b><a href="tg://user?id={self._me.id}">{utils.escape_html(get_display_name(self._me))}</a></b>'
|
|
version = f'<i>{".".join(list(map(str, list(main.__version__))))}</i>'
|
|
build = (
|
|
f'<a href="https://github.com/hikariatama/Hikka/commit/{ver}">#{ver[:8]}</a>'
|
|
)
|
|
prefix = f"«<code>{utils.escape_html(self.get_prefix())}</code>»"
|
|
platform = utils.get_named_platform()
|
|
|
|
return (
|
|
self.config["custom_message"].format(
|
|
me=me,
|
|
version=version,
|
|
build=build,
|
|
prefix=prefix,
|
|
platform=platform,
|
|
upd=upd,
|
|
uptime=utils.formatted_uptime(),
|
|
)
|
|
if self.config["custom_message"] and self.config["custom_message"] != "no"
|
|
else (
|
|
"<b>🌚 HF Info</b>\n"
|
|
f'<b>🤴 {self.strings("owner")}: </b>{me}\n\n'
|
|
f"<b>🔮 {self.strings('version')}: </b>{version} {build}\n"
|
|
f"<b>{upd}</b>\n\n"
|
|
f"<b>📼 {self.strings('prefix')}: </b>{prefix}\n"
|
|
f"<b>⌚️ {self.strings('uptime')}: </b>{utils.formatted_uptime()}\n"
|
|
f"<b>{platform}</b>\n"
|
|
)
|
|
)
|
|
|
|
def _get_mark(self, btn_count):
|
|
btn_count = str(btn_count)
|
|
return (
|
|
{
|
|
"text": self.config[f"custom_button{btn_count}"][0],
|
|
"url": self.config[f"custom_button{btn_count}"][1],
|
|
}
|
|
if self.config[f"custom_button{btn_count}"]
|
|
else None
|
|
)
|
|
|
|
@loader.unrestricted
|
|
async def hfinfocmd(self, message: Message):
|
|
"""Send userbot info"""
|
|
m = {x: self._get_mark(x) for x in range(13)}
|
|
await self.inline.form(
|
|
message=message,
|
|
text=self._render_info(),
|
|
reply_markup=[
|
|
[
|
|
*([m[1]] if m[1] else []),
|
|
*([m[2]] if m[2] else []),
|
|
*([m[3]] if m[3] else []),
|
|
],
|
|
[
|
|
*([m[4]] if m[4] else []),
|
|
*([m[5]] if m[5] else []),
|
|
*([m[6]] if m[6] else []),
|
|
],
|
|
],
|
|
**{}
|
|
if self.config["disable_banner"]
|
|
else {self.config["custom_format"]: self.config["custom_banner"]},
|
|
) |