diff --git a/README.md b/README.md index 88d70f2..cb116b7 100644 --- a/README.md +++ b/README.md @@ -31,3 +31,4 @@ - DB_PASS - пароль пользователя базы данных - DB_NAME - название базы данных - TG_TOKEN - токен телеграма, его следует указать в файле .env в формате TG_TOKEN={токен} +- /cancel - отмена текущего действия diff --git a/src/bot/handlers.py b/src/bot/handlers.py index 872dc9e..76cbac3 100644 --- a/src/bot/handlers.py +++ b/src/bot/handlers.py @@ -60,10 +60,14 @@ def _set_master_pass2( bot: telebot.TeleBot, engine: Engine, prev_mes: Message, mes: Message ) -> None: _base(bot, mes, prev_mes) - hash_, salt = cryptography.master_pass.encrypt_master_pass(mes.text.strip()) + text = mes.text.strip() + if text == "/cancel": + return _send_tmp_message(bot, mes.chat.id, "Успешная отмена") + + hash_, salt = cryptography.master_pass.encrypt_master_pass(text) database.add.add_master_pass(engine, mes.from_user.id, salt, hash_) _send_tmp_message(bot, mes.chat.id, "Успех") - del mes + del mes, text gc.collect() @@ -81,13 +85,17 @@ def _reset_master_pass2( bot: telebot.TeleBot, engine: Engine, prev_mes: Message, mes: Message ) -> None: _base(bot, mes, prev_mes) - hash_, salt = cryptography.master_pass.encrypt_master_pass(mes.text.strip()) + text = mes.text.strip() + if text == "/cancel": + return _send_tmp_message(bot, mes.chat.id, "Успешная отмена") + + hash_, salt = cryptography.master_pass.encrypt_master_pass(text) database.delete.purge_accounts(engine, mes.from_user.id) database.change.change_master_pass(engine, mes.from_user.id, salt, hash_) _send_tmp_message( bot, mes.chat.id, "Все ваши аккаунты удалены, а мастер пароль изменён" ) - del mes + del mes, text gc.collect() @@ -109,17 +117,17 @@ def _add_account2( bot: telebot.TeleBot, engine: Engine, prev_mes: Message, mes: Message ) -> None: _base(bot, mes, prev_mes) + text = mes.text.strip() + if text == "/cancel": + return _send_tmp_message(bot, mes.chat.id, "Успешная отмена") - if ( - database.get.get_account_info(engine, mes.from_user.id, mes.text.strip()) - is not None - ): + if text in database.get.get_accounts(engine, mes.from_user.id): return _send_tmp_message( bot, mes.chat.id, "Аккаунт с таким именем уже существует" ) bot_mes = bot.send_message(mes.chat.id, "Отправьте логин") - data = {"name": mes.text.strip()} + data = {"name": text} bot.register_next_step_handler( mes, functools.partial(_add_account3, bot, engine, bot_mes, data) @@ -134,7 +142,11 @@ def _add_account3( mes: Message, ) -> None: _base(bot, mes, prev_mes) - data["login"] = mes.text.strip() + text = mes.text.strip() + if text == "/cancel": + return _send_tmp_message(bot, mes.chat.id, "Успешная отмена") + + data["login"] = text bot_mes = bot.send_message(mes.chat.id, "Отправьте пароль от аккаунта") @@ -151,7 +163,11 @@ def _add_account4( mes: Message, ) -> None: _base(bot, mes, prev_mes) - data["passwd"] = mes.text.strip() + text = mes.text.strip() + if text == "/cancel": + return _send_tmp_message(bot, mes.chat.id, "Успешная отмена") + + data["passwd"] = text bot_mes = bot.send_message(mes.chat.id, "Отправьте мастер пароль") @@ -169,6 +185,8 @@ def _add_account5( ) -> None: _base(bot, mes, prev_mes) text = mes.text.strip() + if text == "/cancel": + return _send_tmp_message(bot, mes.chat.id, "Успешная отмена") salt, hash_ = database.get.get_master_pass(engine, mes.from_user.id) if cryptography.master_pass.encrypt_master_pass(text, salt) != hash_: @@ -202,6 +220,8 @@ def _get_account2( ) -> None: _base(bot, mes, prev_mes) text = mes.text.strip() + if text == "/cancel": + return _send_tmp_message(bot, mes.chat.id, "Успешная отмена") if text not in database.get.get_accounts(engine, mes.from_user.id): return _send_tmp_message(bot, mes.chat.id, "Нет такого аккаунта") @@ -217,6 +237,8 @@ def _get_account3( ) -> None: _base(bot, mes, prev_mes) text = mes.text.strip() + if text == "/cancel": + return _send_tmp_message(bot, mes.chat.id, "Успешная отмена") master_pass = database.get.get_master_pass(engine, mes.from_user.id) if master_pass is None: @@ -255,6 +277,8 @@ def _delete_account2( ) -> None: _base(bot, mes, prev_mes) text = mes.text.strip() + if text == "/cancel": + return _send_tmp_message(bot, mes.chat.id, "Успешная отмена") if text not in database.get.get_accounts(engine, mes.from_user.id): return _send_tmp_message(bot, mes.chat.id, "Нет такого аккаунта") @@ -271,5 +295,6 @@ def help(bot: telebot.TeleBot, mes: telebot.types.Message) -> None: /get_account - получить логин и пароль аккаунта /delete_account - удалить аккаунт /delete_all - удалить все аккаунты и мастер пароль (Спать хочу -> подтверждения нету) -/reset_master_pass- удалить все аккаунты и изменить мастер пароль""" +/reset_master_pass - удалить все аккаунты и изменить мастер пароль +/cancel - отмена текущего действия""" bot.send_message(mes.chat.id, message)