diff --git a/hikka/langpacks/de.yml b/hikka/langpacks/de.yml index b6cba1b..b514b31 100644 --- a/hikka/langpacks/de.yml +++ b/hikka/langpacks/de.yml @@ -348,6 +348,9 @@ updater: cancel: "🚫 Abbrechen" _cls_doc: "Aktualisiert den Userbot" lavhost_update: "✌️ Dein {} wird aktualisiert..." + invalid_args: "🚫 Sie müssen die Anzahl der Commits angeben, die zurückgesetzt werden sollen!" + rollback_too_far: "🚫 Du rollst zu weit zurück!" + rollback_confirm: "❓ Sind Sie sicher, dass Sie {num} Commit(s) zurücksetzen möchten?" _cmd_doc_restart: "Startet den Userbot neu" _cmd_doc_source: "Zeigt den Link zum Quellcode des Projekts" _cmd_doc_update: "Lädt Updates für den Userbot herunter" diff --git a/hikka/langpacks/en.yml b/hikka/langpacks/en.yml index cab2546..b0fd102 100644 --- a/hikka/langpacks/en.yml +++ b/hikka/langpacks/en.yml @@ -370,6 +370,9 @@ updater: lavhost_update: "✌️ Your {} is updating..." full_success: "👍 Userbot is fully loaded! {}\nFull restart took {}s" secure_boot_complete: "🔐 Secure boot completed! {}\nRestart took {}s" + invalid_args: "🚫 You must provide number of commits to rollback!" + rollback_too_far: "🚫 You're rolling back too far!" + rollback_confirm: "❓ Are you sure you want to rollback {num} commit(-s)?" _cmd_doc_restart: "Restarts the userbot" _cmd_doc_source: "Links the source code of this project" _cmd_doc_update: "Downloads userbot updates" diff --git a/hikka/langpacks/ru.yml b/hikka/langpacks/ru.yml index becc0ab..c76dd40 100644 --- a/hikka/langpacks/ru.yml +++ b/hikka/langpacks/ru.yml @@ -339,6 +339,9 @@ updater: cancel: "🚫 Отмена" _cls_doc: "Обновляет юзербот" lavhost_update: "✌️ Твой {} обновляется..." + invalid_args: "🚫 Вы должны указать количество коммитов для отката!" + rollback_too_far: "🚫 Вы откатываетесь слишком далеко!" + rollback_confirm: "❓ Вы уверены, что хотите откатить {num} коммит(-а,-ов)?" _cmd_doc_restart: "Перезагружает юзербот" _cmd_doc_source: "Показать ссылку на исходный код проекта" _cmd_doc_update: "Скачивает обновления юзербота" diff --git a/hikka/langpacks/ua.yml b/hikka/langpacks/ua.yml index 607c8b2..ac36d68 100644 --- a/hikka/langpacks/ua.yml +++ b/hikka/langpacks/ua.yml @@ -348,6 +348,9 @@ updater: cancel: "🚫 Скасувати" _cls_doc: "Оновлює юзербот" lavhost_update: "✌️ Твій {} оновлюється..." + invalid_args: "🚫 Вы должны указать количество коммитов для отката!" + rollback_too_far: "🚫 Ви відкочуєтесь занадто далеко!" + rollback_confirm: "❓ Вы уверены, что хотите откатить {num} коммит(-а,-ов)?" _cmd_doc_restart: "Перезавантажує юзербот" _cmd_doc_source: "Показати посилання на вихідний код проекту" _cmd_doc_update: "Завантажує оновлення юзербота" diff --git a/hikka/modules/updater.py b/hikka/modules/updater.py index c137c77..8295b5a 100644 --- a/hikka/modules/updater.py +++ b/hikka/modules/updater.py @@ -430,3 +430,37 @@ class UpdaterMod(loader.Module): inline_message_id=ms, text=self.inline.sanitise_text(msg), ) + + @loader.command() + async def rollback(self, message: Message): + if not (args := utils.get_args_raw(message)).isdigit(): + await utils.answer(message, self.strings('invalid_args')) + return + if int(args) > 10: + await utils.answer(message, self.strings('rollback_too_far')) + return + form = await self.inline.form( + message=message, + text=self.strings('rollback_confirm').format(num=args), + reply_markup=[ + [ + { + "text": "✅", + "callback": self.rollback_confirm, + "args": [args], + } + ], + [ + { + "text": "❌", + "action": "close", + } + ] + ] + ) + + async def rollback_confirm(self, call: InlineCall, number: int): + await utils.answer(call, self.strings('rollback_process').format(num=number)) + await asyncio.create_subprocess_shell(f'git reset --hard HEAD~{number}', stdout=asyncio.subprocess.PIPE) + await self.restart_common(call) +