feat: Added redis as storage for states, improvements in docker compose, added /cancel command, small improvements

This commit is contained in:
ITQ
2024-03-21 23:16:46 +03:00
parent 597d629954
commit b655adafe6
12 changed files with 282 additions and 135 deletions
+31 -14
View File
@@ -1,12 +1,13 @@
__all__ = ("RegistrationForm",)
from aiogram import Bot
from aiogram.exceptions import TelegramBadRequest
from aiogram.fsm.state import State, StatesGroup
from aiogram.fsm.context import FSMContext
from aiogram.fsm.state import State, StatesGroup
class RegistrationForm(StatesGroup):
previous_message = State()
previous_message_id = State()
username = State()
age = State()
bio = State()
@@ -15,34 +16,50 @@ class RegistrationForm(StatesGroup):
class UserAltering(StatesGroup):
successfully = State()
message_id = State()
input_message = State()
previous_message = State()
column = State()
value = State()
message_id = State()
input_message_id = State()
previous_message_id = State()
successfully = State()
async def delete_message_from_state(state: FSMContext) -> None:
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 "previous_message" in data and data["previous_message"] is not None:
if (
"previous_message_id" in data
and data["previous_message_id"] is not None
):
try:
await data["previous_message"].delete()
await bot.delete_message(
message_id=data["previous_message_id"],
chat_id=chat_id,
)
except TelegramBadRequest:
pass
await state.update_data(previous_message=None)
await state.update_data(previous_message_id=None)
if (
"input_message" in data
and data["input_message"] is not None
"input_message_id" in data
and data["input_message_id"] is not None
and "successfully" in data
and data["successfully"]
):
try:
await data["input_message"].delete()
await bot.delete_message(
message_id=data["input_message_id"],
chat_id=chat_id,
)
except TelegramBadRequest:
pass
await state.update_data(info_message=None)
await state.update_data(input_message_id=None)