mirror of https://github.com/coddrago/Heroku
Remove redundant backuper as it is available in classic repo, add okteto badge in info
parent
ea2b95affe
commit
53791435e3
|
@ -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))
|
|
@ -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(
|
||||
[
|
||||
|
|
|
@ -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 %}
|
||||
|
|
Loading…
Reference in New Issue