[+] Fix database conversion | Auto-converting old-type config after update

pull/142/head
ZetGo | Aleksej K. 2025-06-05 20:47:38 +03:00
parent f88c2e0e1b
commit 3ffe206314
2 changed files with 13 additions and 6 deletions

View File

@ -15,6 +15,7 @@ import collections
import json
import logging
import os
import re
import time
import typing
@ -143,7 +144,9 @@ class Database(dict):
return
try:
self.update(**json.loads(self._db_file.read_text()))
db = self._db_file.read_text()
db = re.sub(r'(hikka\.)(\S+\":)', lambda m: 'heroku.' + m.group(2), db)
self.update(**json.loads(db))
except json.decoder.JSONDecodeError:
logger.warning("Database read failed! Creating new one...")
except FileNotFoundError:

View File

@ -233,18 +233,22 @@ class HerokuBackupMod(loader.Module):
logger.exception("Restore from backupall failed")
await call.answer(self.strings("reply_to_file"), show_alert=True)
def _convert(self, backup):
fixed = re.sub(r'(hikka\.)(\S+\":)', lambda m: 'heroku.' + m.group(2), backup)
txt = io.BytesIO(fixed.encode())
txt.name = f"db-converted-{datetime.datetime.now():%d-%m-%Y-%H-%M}.json"
return txt
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"
backup = self._convert(file)
await utils.answer_file(
call,
txt,
backup,
caption=self.strings("backup_caption").format(
prefix=utils.escape_html(self.get_prefix())
),
@ -288,7 +292,7 @@ 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 re.search(r'"(hikka\.)(\S+\":)', file.decode()):
await utils.answer(message,
self.strings["db_warning"],
reply_markup=