update heroku_backup.py

pull/144/head
Who? 2025-05-28 09:36:08 +00:00
parent 0fbdba8a9c
commit 9bd6aa32e0
4 changed files with 55 additions and 4 deletions

View File

@ -17,6 +17,7 @@ import io
import json
import logging
import os
import re
import time
import zipfile
from pathlib import Path
@ -232,6 +233,37 @@ class HerokuBackupMod(loader.Module):
logger.exception("Restore from backupall failed")
await call.answer(self.strings("reply_to_file"), show_alert=True)
async def convert(self, call: BotInlineCall, ans, file):
if ans == "y":
await utils.answer(
call,
self.strings["converting_db"]
)
fixed = re.sub(r'(hikka.)(\S+\":)', lambda m: 'heroku.' + m.group(2), file)
txt = io.BytesIO(fixed.encode())
txt.name = f"db-converted-{datetime.datetime.now():%d-%m-%Y-%H-%M}.json"
await utils.answer_file(
call,
txt,
caption=self.strings("backup_caption").format(
prefix=utils.escape_html(self.get_prefix())
),
)
else:
await utils.answer(
call,
self.strings["advice_converting"],
reply_markup=
[
[
{
"text": self.strings["close_btn"],
"action": "close"
}
]
]
)
@loader.command()
async def backupdb(self, message: Message):
txt = io.BytesIO(json.dumps(self._db).encode())
@ -256,6 +288,25 @@ class HerokuBackupMod(loader.Module):
file = await reply.download_media(bytes)
decoded_text = json.loads(file.decode())
if re.match(r'(hikka.)(\S+\":)', file.decode()):
if self.strings.get("warn") is not None:
await utils.answer(message,
self.strings["db_warning"],
reply_markup=
[
{
"text": "",
"callback": self.convert,
"args": ("n", file.decode(),),
},
{
"text": "",
"callback": self.convert,
"args": ("y", file.decode(),),
}
]
)
return
with contextlib.suppress(KeyError):
decoded_text["heroku.inline"].pop("bot_token")

View File

@ -142,7 +142,7 @@ class HerokuInfoMod(loader.Module):
platform = platform.replace(emoji, icon)
return (
(
"<b>🪐 Heroku</b>\n"
"🪐 Heroku\n"
if self.config["show_heroku"]
else ""
)

View File

@ -11,7 +11,7 @@
# You can redistribute it and/or modify it under the terms of the GNU AGPLv3
# 🔑 https://www.gnu.org/licenses/agpl-3.0.html
__version__ = (1, 6, 9)
__version__ = (1, 7, 0)
import os

View File

@ -254,7 +254,7 @@ class Web:
return web.Response(status=403, body="Forbidden by JamHost EULA")
if "HIKKAHOST" in os.environ:
return web.Response(status=403, body="Forbidden by HerokuHost EULA")
return web.Response(status=403, body="Forbidden by HikkaHost EULA")
if not self._check_session(request):
return web.Response(status=401)
@ -335,7 +335,7 @@ class Web:
return web.Response(status=403, body="Forbidden by JamHost EULA")
if "HIKKAHOST" in os.environ:
return web.Response(status=403, body="Forbidden by HerokuHost EULA")
return web.Response(status=403, body="Forbidden by HikkaHost EULA")
if self._pending_client:
return web.Response(status=208, body="Already pending")