Added conformation for deleting all, added cacel command for the case, when there is no active action

This commit is contained in:
StNicolay 2022-10-30 16:24:32 +03:00
parent 731893ad33
commit 88d51785ed
2 changed files with 33 additions and 8 deletions

View File

@ -38,4 +38,7 @@ def create_bot(token: str, engine: mariadb.Connection) -> telebot.TeleBot:
bot.register_message_handler( bot.register_message_handler(
functools.partial(handlers.help, bot), commands=["help", "start"] functools.partial(handlers.help, bot), commands=["help", "start"]
) )
bot.register_message_handler(
functools.partial(handlers.cancel, bot), commands=["cancel"]
)
return bot return bot

View File

@ -32,20 +32,38 @@ def get_accounts(
) )
def delete_all(
bot: telebot.TeleBot, engine: Engine, mes: telebot.types.Message
) -> None:
database.delete.purge_accounts(engine, mes.from_user.id)
database.delete.delete_master_pass(engine, mes.from_user.id)
bot.send_message(mes.chat.id, "Все ваши данные удалены из базы данных")
def _base(bot: telebot.TeleBot, mes: Message, prev_mes: Message | None = None) -> None: def _base(bot: telebot.TeleBot, mes: Message, prev_mes: Message | None = None) -> None:
bot.delete_message(mes.chat.id, mes.id) bot.delete_message(mes.chat.id, mes.id)
if prev_mes is not None: if prev_mes is not None:
bot.delete_message(prev_mes.chat.id, prev_mes.id) bot.delete_message(prev_mes.chat.id, prev_mes.id)
def delete_all(
bot: telebot.TeleBot, engine: Engine, mes: telebot.types.Message
) -> None:
_base(bot, mes)
bot_mes = bot.send_message(
mes.chat.id,
"Вы действительно хотите удалить все ваши аккаунты? Это действие нельзя отменить. Отправьте YES для подтверждения",
)
bot.register_next_step_handler(
mes, functools.partial(_delete_all, bot, engine, bot_mes)
)
def _delete_all(
bot: telebot.TeleBot, engine: Engine, prev_mes: Message, mes: Message
) -> None:
_base(bot, mes, prev_mes)
text = mes.text.strip()
if text == "YES":
database.delete.purge_accounts(engine, mes.from_user.id)
database.delete.delete_master_pass(engine, mes.from_user.id)
_send_tmp_message(bot, mes.chat.id, "Всё успешно удалено", timeout=10)
else:
_send_tmp_message(bot, mes.chat.id, "Вы отправили не YES, ничего не удалено")
def set_master_password(bot: telebot.TeleBot, engine: Engine, mes: Message) -> None: def set_master_password(bot: telebot.TeleBot, engine: Engine, mes: Message) -> None:
_base(bot, mes, None) _base(bot, mes, None)
if database.get.get_master_pass(engine, mes.from_user.id) is not None: if database.get.get_master_pass(engine, mes.from_user.id) is not None:
@ -298,3 +316,7 @@ def help(bot: telebot.TeleBot, mes: telebot.types.Message) -> None:
/reset_master_pass - удалить все аккаунты и изменить мастер пароль /reset_master_pass - удалить все аккаунты и изменить мастер пароль
/cancel - отмена текущего действия""" /cancel - отмена текущего действия"""
bot.send_message(mes.chat.id, message) bot.send_message(mes.chat.id, message)
def cancel(bot: telebot.TeleBot, mes: Message) -> None:
_send_tmp_message(bot, mes.chat.id, "Нет активного действия")