You've already forked Travel-Agent
63 lines
1.5 KiB
Python
63 lines
1.5 KiB
Python
__all__ = ("delete_message_from_state", "handle_validation_error")
|
|
|
|
from aiogram import Bot
|
|
from aiogram.exceptions import TelegramBadRequest
|
|
from aiogram.fsm.context import FSMContext
|
|
from aiogram.types import Message
|
|
|
|
|
|
async def delete_message_from_state(
|
|
state: FSMContext,
|
|
chat_id: int,
|
|
bot: Bot | None,
|
|
) -> None:
|
|
if bot is None:
|
|
return
|
|
|
|
data = await state.get_data()
|
|
|
|
if "error_message_id" in data and data["error_message_id"] is not None:
|
|
try:
|
|
await bot.delete_message(
|
|
message_id=data["error_message_id"],
|
|
chat_id=chat_id,
|
|
)
|
|
except TelegramBadRequest:
|
|
pass
|
|
|
|
await state.update_data(error_message_id=None)
|
|
|
|
if (
|
|
"input_message_id" in data
|
|
and data["input_message_id"] is not None
|
|
and "successfully" in data
|
|
and data["successfully"]
|
|
):
|
|
try:
|
|
await bot.delete_message(
|
|
message_id=data["input_message_id"],
|
|
chat_id=chat_id,
|
|
)
|
|
except TelegramBadRequest:
|
|
pass
|
|
|
|
await state.update_data(input_message_id=None)
|
|
|
|
|
|
async def handle_validation_error(
|
|
message: Message,
|
|
state: FSMContext,
|
|
e: AssertionError | str,
|
|
) -> None:
|
|
await message.delete()
|
|
await delete_message_from_state(
|
|
state,
|
|
message.chat.id,
|
|
message.bot,
|
|
)
|
|
|
|
error_message = await message.answer("❌ " + str(e))
|
|
await state.update_data(
|
|
error_message_id=error_message.message_id,
|
|
)
|