Who? 2025-06-10 11:11:29 +00:00
parent 032e2b5ad2
commit cfa92de7c2
10 changed files with 59 additions and 77 deletions

View File

@ -15,7 +15,7 @@
- Telethon has been completely updated, moving to heroku-tl
- update heroku-tl to 1.0.6
- added prefix to ping
- removed official support serv00, tothost, goorm, railway
- removed official support serv00, tothost, goorm, railway, termux
- rename folder "hikka" to "heroku"
- fix close btn
- fix native imports

View File

@ -129,11 +129,4 @@ Check out <a href="https://heroku.codrago.top/">heroku.codrago.top</a> for users
<li><a href="https://t.me/GunyaKshin">Codwiz</a> for Ukrainian translation pack</li>
<li><a href="https://t.me/thisLyomi">Lyomi</a> for German translation pack</li>
<li><a href="https://t.me/lonami">Lonami</a> for Telethon, which is the base of Heroku-TL</li>
</ul>
<hr>
<h2>Sponsors: </h2>
<p align="center">
<img src="assets/aeza.svg" width="300" height="60">
</p>
<p align="center">Developed with support of <a href="https://aeza.net/?ref=herokugh">aeza.net</a></p>
</ul>

View File

@ -203,7 +203,7 @@ heroku_backup:
backupall_sent: "<emoji document_id=5431736674147114227>🗂</emoji> <b>Sicherung der Datenbank und der an gespeicherte Nachrichten gesendeten Module</b>"
db_warning: "❗️ Hikka-Backup erkannt. Wenn Sie fortfahren, <b>versucht</b> der Userbot, es in ein für Heroku geeignetes Format zu konvertieren. Möglicherweise treten Fehler bei der Konvertierung auf. Fortfahren?"
advice_converting: "Sie können <a>'hikka.'</a> im Backup-Inhalt manuell durch <a>'heroku.'</a> ersetzen. Dies ist zum Laden erforderlich."
db_converting: "🔄 Konvertierung läuft …"
converting_db: "🔄 Konvertierung läuft …"
_cls_doc: "Verarbeitet Datenbank- und Modulsicherungen"
_cmd_doc_backupdb: "Datenbanksicherung erstellen [wird per PN gesendet]"
_cmd_doc_backupmods: "Erstelle ein Backup der Mods [wird per PN gesendet]"
@ -213,6 +213,15 @@ heroku_backup:
_cmd_doc_backupall: "Erstellt eine allgemeine Sicherungskopie (Module + Datenbank)"
_cmd_doc_restoreall: "Stellt ein gemeinsames Backup wieder her (Basis + Module)"
executor:
no_code: "<emoji document_id=5854929766146118183>❌</emoji> <b>Es sollte </b><code>{}exec [Python-Code]</code><b> sein</b>"
executing: "<b><emoji document_id=5332600281970517875>🔄</emoji> Code wird ausgeführt...</b>"
no_phone: "Versteckt deine Telefonnummer in der Ausgabe"
result: "<b>\n<emoji document_id=5431376038628171216>💻</emoji> Code:\n<pre><code class=\"language-python\">{code}</code></pre>\n{result}\n<emoji document_id=5451732530048802485>⏳</emoji> Ausgeführt in {time} Sekunden</b>"
result_no_error: "<emoji document_id=6334758581832779720>✅</emoji> Ergebnis\n<pre><code class=\"language-python\">{result}</code></pre>"
result_error: "<emoji document_id=5440381017384822513>🚫</emoji> Fehler\n<pre><code class=\"language-python\">{result}</code></pre>"
res_return: "<emoji document_id=6334778871258286021>💾</emoji> Code hat zurückgegeben:\n<pre><code class=\"language-python\">{res}</code></pre>"
presets:
_fun_title: "🪩 Unterhaltsame Module"
_fun_desc: "Lustige Module Animationen, Spam, Spiele und mehr."

View File

@ -217,7 +217,7 @@ heroku_backup:
backupall_sent: "<emoji document_id=5431736674147114227>🗂</emoji> <b>Backup of database and modules sent to saved messages</b>"
db_warning: "❗️ Hikka backup detected. If you continue, the userbot will <b>try</b> to convert it to a format suitable for Heroku.\nThere may be some errors in the conversion. Continue?"
advice_converting: "You can manually replace <a>'hikka.'</a> with <a>'heroku.'</a> in the backup content. This is necessary for loading it."
db_converting: "🔄 Converting..."
converting_db: "🔄 Converting..."
_cls_doc: "Processes database and module backups"
_cmd_doc_backupdb: "Create a database backup [will be sent to PM]"
_cmd_doc_backupmods: "Create a backup of mods [will be sent to PM]"
@ -227,6 +227,15 @@ heroku_backup:
_cmd_doc_backupall: "Creates a general backup copy (modules + database)"
_cmd_doc_restoreall: "Restores a common backup (base + modules)"
executor:
no_code: "<emoji document_id=5854929766146118183>❌</emoji> <b>Should be </b><code>{}exec [python code]</code>"
executing: "<b><emoji document_id=5332600281970517875>🔄</emoji> Executing code...</b>"
no_phone: "Hides your phone number in the output"
result: "<b>\n<emoji document_id=5431376038628171216>💻</emoji> Code:\n<pre><code class=\"language-python\">{code}</code></pre>\n{result}\n<emoji document_id=5451732530048802485>⏳</emoji> Executed in {time} seconds</b>"
result_no_error: "<emoji document_id=6334758581832779720>✅</emoji> Result\n<pre><code class=\"language-python\">{result}</code></pre>"
result_error: "<emoji document_id=5440381017384822513>🚫</emoji> Error\n<pre><code class=\"language-python\">{result}</code></pre>"
res_return: "<emoji document_id=6334778871258286021>💾</emoji> Code returned:\n<pre><code class=\"language-python\">{res}</code></pre>"
presets:
name: "Presets"
_fun_title: "🪩 Entertainment modules"

View File

@ -203,7 +203,7 @@ heroku_backup:
backupall_sent: "<emoji document_id=5431736674147114227>🗂</emoji> <b>Резервная копия базы и модулей отправлена в сохраненные сообщения</b>"
db_warning: "❗️ Обнаружен бекап из Hikka. Если продолжить — юзербот <b>попробует</b> преобразовать его в подходящий формат для Heroku.\nВозможны некоторые ошибки в преобразовании. Продолжить?"
advice_converting: "Вы можете вручную заменить <a>'hikka.'</a> на <a>'heroku.'</a> в содержимом бекапа. Это необходимо для его загрузки."
db_converting: "🔄 Конвертирую..."
converting_db: "🔄 Конвертирую..."
_cls_doc: "Обрабатывает резервные копии базы данных и модулей"
_cmd_doc_backupdb: "Создать бэкап базы данных [будет отправлено в лс]"
_cmd_doc_backupmods: "Создать бэкап модов [будет отправлено в лс]"
@ -213,6 +213,15 @@ heroku_backup:
_cmd_doc_backupall: "Создаёт общую резервную копию (модули + база)"
_cmd_doc_restoreall: "Восстанавливает общую резервную копию (база + модули)"
executor:
no_code: "<emoji document_id=5854929766146118183>❌</emoji> <b>Должно быть </b><code>{}exec [python код]</code>"
executing: "<b><emoji document_id=5332600281970517875>🔄</emoji> Выполняю код...</b>"
no_phone: "Скрывает твой номер телефона при выводе"
result: "<b>\n<emoji document_id=5431376038628171216>💻</emoji> Код:\n<pre><code class=\"language-python\">{code}</code></pre>\n{result}\n<emoji document_id=5451732530048802485>⏳</emoji> Выполнен за {time} секунд</b>"
result_no_error: "<emoji document_id=6334758581832779720>✅</emoji> Результат\n<pre><code class=\"language-python\">{result}</code></pre>"
result_error: "<emoji document_id=5440381017384822513>🚫</emoji> Ошибка\n<pre><code class=\"language-python\">{result}</code></pre>"
res_return: "<emoji document_id=6334778871258286021>💾</emoji> Код вернул:\n<pre><code class=\"language-python\">{res}</code></pre>"
presets:
_fun_title: "🪩 Развлекательные модули"
_fun_desc: "Забавные модули — анимации, спам, игры, и др."

View File

@ -203,7 +203,7 @@ heroku_backup:
backupall_sent: "<emoji document_id=5431736674147114227>🗂</emoji> <b>Резервна копія бази даних і модулів, надісланих у збережені повідомлення</b>"
db_warning: "❗️ Виявлено резервну копію Hikka. Якщо ви продовжите, користувач-бот <b>спробує</b> конвертувати її у формат, придатний для Heroku.\nПід час конвертації можуть бути деякі помилки. Продовжити?"
advice_converting: "Ви можете вручну замінити <a>'hikka.'</a> на <a>'heroku.'</a> у вмісті резервної копії. Це необхідно для її завантаження."
db_converting: "🔄 Конвертування..."
converting_db: "🔄 Конвертування..."
_cls_doc: "Обробляє резервні копії бази даних і модулів"
_cmd_doc_backupdb: "Створити резервну копію бази даних [буде надіслано на PM]"
_cmd_doc_backupmods: "Створити резервну копію модів [буде надіслано в личку]"
@ -213,6 +213,14 @@ heroku_backup:
_cmd_doc_backupall: "Створює загальну резервну копію (модулі + база)"
_cmd_doc_restoreall: "Відновлює загальну резервну копію (база + модулі)"
executor:
no_code: "<emoji document_id=5854929766146118183>❌</emoji> <b>Повинно бути </b><code>{}exec [python код]</code>"
executing: "<b><emoji document_id=5332600281970517875>🔄</emoji> Виконую код...</b>"
no_phone: "Приховує ваш номер телефону у виводі"
result: "<b>\n<emoji document_id=5431376038628171216>💻</emoji> Код:\n<pre><code class=\"language-python\">{code}</code></pre>\n{result}\n<emoji document_id=5451732530048802485>⏳</emoji> Виконано за {time} секунд</b>"
result_no_error: "<emoji document_id=6334758581832779720>✅</emoji> Результат\n<pre><code class=\"language-python\">{result}</code></pre>"
result_error: "<emoji document_id=5440381017384822513>🚫</emoji> Помилка\n<pre><code class=\"language-python\">{result}</code></pre>"
res_return: "<emoji document_id=6334778871258286021>💾</emoji> Код повернув:\n<pre><code class=\"language-python\">{res}</code></pre>"
presets:
_fun_title: "🪩 Розважальні модулі"

View File

@ -91,7 +91,6 @@ BASE_DIR = (
BASE_PATH = Path(BASE_DIR)
CONFIG_PATH = BASE_PATH / "config.json"
IS_TERMUX = "com.termux" in os.environ.get("PREFIX", "")
IS_DOCKER = "DOCKER" in os.environ
IS_LAVHOST = "LAVHOST" in os.environ
IS_HIKKAHOST = "HIKKAHOST" in os.environ
@ -212,7 +211,7 @@ def run_config():
"""Load configurator.py"""
from . import configurator
return configurator.api_config(IS_TERMUX or None)
return configurator.api_config(None)
def get_config_key(key: str) -> typing.Union[str, bool]:
@ -497,7 +496,6 @@ class Heroku:
if (
not web_available
or getattr(self.arguments, "disable_web", False)
or IS_TERMUX
):
self.web = None
return
@ -597,7 +595,7 @@ class Heroku:
async def _phone_login(self, client: CustomTelegramClient) -> bool:
phone = input(
"\033[0;96mEnter phone: \033[0m"
if IS_TERMUX or self.arguments.tty
if self.arguments.tty
else "Enter phone: "
)
@ -630,7 +628,7 @@ class Heroku:
print(
(
"\033[0;96m{}\033[0m" if IS_TERMUX or self.arguments.tty else "{}"
"\033[0;96m{}\033[0m" if self.arguments.tty else "{}"
).format(
"You can use QR-code to login from another device (your friend's"
" phone, for example)."
@ -640,7 +638,7 @@ class Heroku:
if (
input(
"\033[0;96mUse QR code? [y/N]: \033[0m"
if IS_TERMUX or self.arguments.tty
if self.arguments.tty
else "Use QR code? [y/N]: "
).lower()
!= "y"
@ -686,7 +684,7 @@ class Heroku:
while True:
_2fa = getpass(
f"\033[0;96mEnter 2FA password ({password.hint}): \033[0m"
if IS_TERMUX or self.arguments.tty
if self.arguments.tty
else f"Enter 2FA password ({password.hint}): "
)
try:

View File

@ -34,11 +34,7 @@ class Executor(loader.Module):
"""Выполнение python кода"""
strings = {
"name": "Executor",
"no_code": "<emoji document_id=5854929766146118183>❌</emoji> <b>Должно быть </b><code>{}exec [python код]</code>",
"executing": "<b><emoji document_id=5332600281970517875>🔄</emoji> Выполняю код...</b>"
"name": "Executor"
}
def __init__(self):
@ -46,7 +42,7 @@ class Executor(loader.Module):
loader.ConfigValue(
"hide_phone",
True,
lambda: "Скрывает твой номер телефона при выводе",
lambda: self.strings["no_phone"],
validator=loader.validators.Boolean()
),
)
@ -120,16 +116,12 @@ class Executor(loader.Module):
res = res.replace("+"+me.phone, t_h).replace(me.phone, t_h)
if result:
result = f"""{'<emoji document_id=6334758581832779720>✅</emoji> Результат' if not cerr else '<emoji document_id=5440381017384822513>🚫</emoji> Ошибка'}:
<pre><code class="language-python">{result}</code></pre>
"""
if res or res == 0 or res == False and res is not None:
result += f"""<emoji document_id=6334778871258286021>💾</emoji> Код вернул:
<pre><code class="language-python">{res}</code></pre>
"""
if not cerr:
result = self.strings["result_no_error"].format(result={result})
else:
result = self.strings["result_error"].format(result={result})
return await utils.answer(message, f"""<b>
<emoji document_id=5431376038628171216>💻</emoji> Код:
<pre><code class="language-python">{code}</code></pre>
{result}
<emoji document_id=5451732530048802485></emoji> Выполнен за {round(stop_time - start_time, 5)} секунд</b>""")
if res or res == 0 or res == False and res is not None:
result += self.string["res_return"].format(res={res})
return await utils.answer(message, self.strings["result"].format(code={code}, result={result}, time=round({stop_time} - {start_time}, 5)))

View File

@ -46,6 +46,7 @@ PRESETS = {
"https://github.com/amm1edev/ame_repo/raw/refs/heads/main/Compliments.py",
"https://github.com/amm1edev/ame_repo/raw/refs/heads/main/mazemod.py",
"https://mods.codrago.life/dice.py",
"https://mods.codrago.life/randnum.py",
"https://mods.codrago.life/loli.py",
"https://mods.codrago.life/DoxTool.py",
"https://mods.codrago.life/randomizer.py",
@ -64,6 +65,7 @@ PRESETS = {
"https://github.com/amm1edev/ame_repo/raw/refs/heads/main/filter.py",
"https://mods.codrago.life/id.py",
"https://mods.codrago.life/clickon.py",
"https://mods.codrago.life/autoclicker.py",
],
"service": [
"https://github.com/amm1edev/ame_repo/raw/refs/heads/main/account_switcher.py",
@ -81,7 +83,6 @@ PRESETS = {
"https://mods.codrago.life/modlist.py",
],
"downloaders": [
"https://heta.dan.tatar/musicdl.py",
"https://github.com/amm1edev/ame_repo/raw/refs/heads/main/uploader.py",
"https://github.com/amm1edev/ame_repo/raw/refs/heads/main/porn.py",
"https://github.com/amm1edev/ame_repo/raw/refs/heads/main/web2file.py",
@ -166,7 +167,7 @@ class Presets(loader.Module):
)
async def _preset(self, call: InlineCall, preset: str):
await call.edit(
await self.inline.bot(call.edit)(
self.strings("preset").format(
self.strings(f"_{preset}_title"),
self.strings(f"_{preset}_desc"),

View File

@ -936,9 +936,6 @@ def get_named_platform() -> str:
if main.IS_DOCKER:
return "🐳 Docker"
if main.IS_TERMUX:
return "🕶 Termux"
return f"✌️ lavHost {os.environ['LAVHOST']}" if main.IS_LAVHOST else "💎 VDS"
@ -970,16 +967,11 @@ def get_platform_emoji() -> str:
if main.IS_LAVHOST:
return BASE.format(5352753797531721191)
if main.IS_TERMUX:
return BASE.format(5350588498359377932)
if main.IS_DOCKER:
return BASE.format(5352678227582152630)
return BASE.format(5393588431026674882)
allowed_ids = [1714120111, 1655585249]
def uptime() -> int:
"""
Returns userbot uptime in seconds
@ -1000,35 +992,6 @@ def formatted_uptime() -> str:
return f"{days} day(s), {time_formatted}"
return time_formatted
async def add_uptime(client: CustomTelegramClient, minutes: int) -> str:
"""
Adds a custom uptime in minutes to the current uptime.
:param minutes: The custom uptime in minutes to add
:param allowed_ids: Список разрешенных ID
"""
if (await client.get_me()).id not in allowed_ids:
return "You are not allowed to add uptime."
global init_ts
seconds = minutes * 60
init_ts -= seconds
return "Added uptime!"
async def set_uptime(client: CustomTelegramClient, minutes: int) -> str:
"""
Sets a custom uptime in minutes. This will adjust the init_ts accordingly.
:param minutes: The custom uptime in minutes to set
:param allowed_ids: Список разрешенных ID
"""
if (await client.get_me()).id not in allowed_ids:
return "You are not allowed to added uptime."
global init_ts
seconds = minutes * 60
init_ts = time.perf_counter() - seconds
return " Uptime is on offer!"
def ascii_face() -> str:
"""
Returnes cute ASCII-art face