Remove redundant backuper as it is available in classic repo, add okteto badge in info

pull/1/head
hikari.ftg 2022-03-22 17:51:55 +00:00
parent ea2b95affe
commit 53791435e3
3 changed files with 21 additions and 160 deletions

View File

@ -1,144 +0,0 @@
"""
Copyright 2022 t.me/hikariatama
Licensed under the GNU GPLv3
"""
# meta pic: https://img.icons8.com/fluency/48/000000/sync-settings.png
from .. import loader, utils
import asyncio
import datetime
import io
import json
from telethon.tl.types import Message
@loader.tds
class BackuperMod(loader.Module):
"""Backup everything and anything"""
strings = {
"name": "Backuper",
"backup_caption": "☝️ <b>This is your database backup. Do not give it to anyone, it contains personal info.</b>",
"reply_to_file": "🚫 <b>Reply to .{} file</b>",
"db_restored": "🔄 <b>Database updated, restarting...</b>",
"modules_backup": "🗃 <b>Backup mods ({})</b>",
"notes_backup": "🗃 <b>Backup notes ({})</b>",
"mods_restored": "✅ <b>Modes restored, restarting</b>",
"notes_restored": "✅ <b>Notes restored</b>",
}
async def client_ready(self, client, db):
self._db = db
self._client = client
async def backupdbcmd(self, message: Message) -> None:
"""Create database backup [will be sent in pm]"""
txt = io.BytesIO(json.dumps(self._db).encode("utf-8"))
txt.name = f"ftg-db-backup-{getattr(datetime, 'datetime', datetime).now().strftime('%d-%m-%Y-%H-%M')}.db"
await self._client.send_file("me", txt, caption=self.strings("backup_caption"))
await message.delete()
async def restoredbcmd(self, message: Message) -> None:
"""Restore database from file"""
reply = await message.get_reply_message()
if not reply or not reply.media:
await utils.answer(
message, self.strings("reply_to_file", message).format("db")
)
await asyncio.sleep(3)
await message.delete()
return
file = await message.client.download_file(reply.media)
decoded_text = json.loads(file.decode("utf-8"))
self._db.clear()
self._db.update(**decoded_text)
self._db.save()
await utils.answer(message, self.strings("db_restored", message))
await self.allmodules.commands["restart"](await message.respond("_"))
async def backupmodscmd(self, message: Message) -> None:
"""Create backup of mods"""
data = json.dumps(
{
"loaded": self._db.get(
"friendly-telegram.modules.loader", "loaded_modules", []
),
"unloaded": [],
}
)
txt = io.BytesIO(data.encode("utf-8"))
txt.name = f"ftg-mods-{getattr(datetime, 'datetime', datetime).now().strftime('%d-%m-%Y-%H-%M')}.mods"
await self._client.send_file(
utils.get_chat_id(message),
txt,
caption=self.strings("modules_backup", message).format(
len(
self._db.get(
"friendly-telegram.modules.loader", "loaded_modules", []
)
)
),
)
await message.delete()
async def restoremodscmd(self, message: Message) -> None:
"""<reply to file> - Restore mods from backup"""
reply = await message.get_reply_message()
if not reply or not reply.media:
await utils.answer(
message, self.strings("reply_to_file", message).format("mods")
)
await asyncio.sleep(3)
await message.delete()
return
file = await message.client.download_file(reply.media)
decoded_text = json.loads(file.decode("utf-8"))
self._db.set(
"friendly-telegram.modules.loader", "loaded_modules", decoded_text["loaded"]
)
self._db.set(
"friendly-telegram.modules.loader",
"unloaded_modules",
decoded_text["unloaded"],
)
self._db.save()
await utils.answer(message, self.strings("mods_restored", message))
await self.allmodules.commands["restart"](await message.respond("_"))
async def backupnotescmd(self, message: Message) -> None:
"""Create the backup of notes"""
data = json.dumps(self._db.get("friendly-telegram.modules.notes", "notes", []))
txt = io.BytesIO(data.encode("utf-8"))
txt.name = f"ftg-notes-{getattr(datetime, 'datetime', datetime).now().strftime('%d-%m-%Y-%H-%M')}.notes"
await self._client.send_file(
utils.get_chat_id(message),
txt,
caption=self.strings("notes_backup", message).format(
len(self._db.get("friendly-telegram.modules.notes", "notes", []))
),
)
await message.delete()
async def restorenotescmd(self, message: Message) -> None:
"""<reply to file> - Restore notes from backup"""
reply = await message.get_reply_message()
if not reply or not reply.media:
await utils.answer(
message, self.strings("reply_to_file", message).format("notes")
)
await asyncio.sleep(3)
await message.delete()
return
file = await message.client.download_file(reply.media)
decoded_text = json.loads(file.decode("utf-8"))
self._db.set("friendly-telegram.modules.notes", "notes", decoded_text)
self._db.save()
await utils.answer(message, self.strings("notes_restored", message))

View File

@ -53,7 +53,10 @@ class HikkaInfoMod(loader.Module):
try:
repo = git.Repo()
ver = repo.heads[0].commit.hexsha
except Exception:
ver = "unknown"
try:
diff = repo.git.log(["HEAD..origin/alpha", "--oneline"])
upd = (
"⚠️ Update required </b><code>.update</code><b>"
@ -61,25 +64,20 @@ class HikkaInfoMod(loader.Module):
else "✅ Up-to-date"
)
except Exception:
ver = "unknown"
upd = ""
termux = bool(os.popen('echo $PREFIX | grep -o "com.termux"').read()) # skipcq: BAN-B605, BAN-B607
heroku = os.environ.get("DYNO", False)
is_termux = bool(os.popen('echo $PREFIX | grep -o "com.termux"').read()) # skipcq: BAN-B605, BAN-B607
is_okteto = "OKTETO" in os.environ
is_lavhost = "LAVHOST" in os.environ
platform = (
"🕶 Termux"
if termux
else (
"⛎ Heroku"
if heroku
else (
f"✌️ lavHost {os.environ['LAVHOST']}"
if "LAVHOST" in os.environ
else "📻 VDS"
)
)
)
if is_termux:
platform = "🕶 Termux"
elif is_okteto:
platform = "☁️ Okteto"
elif is_lavhost:
platform = f"✌️ lavHost {os.environ['LAVHOST']}"
else:
platform = "📻 VDS"
await query.answer(
[

View File

@ -14,6 +14,13 @@
<script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<link rel="stylesheet" href="{{ static("base.css") }}">
<style>
.bg {
animation: floating 5s infinite ease-in-out;
filter: hue-rotate(286deg);
}
</style>
{% endblock %}
{% block content %}