You've already forked Travel-Agent
feat: Added travel models, travel creation command, travels list command with pagination, set help message, improvements and fixes
This commit is contained in:
+60
-1
@@ -3,18 +3,25 @@ __all__ = ()
|
||||
|
||||
from aiogram import F, Router
|
||||
from aiogram.exceptions import TelegramBadRequest
|
||||
from aiogram.filters import StateFilter
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from aiogram.types import CallbackQuery
|
||||
|
||||
from app import messages
|
||||
from app.config import Config
|
||||
from app.filters.user import RegisteredCallback
|
||||
from app.keyboards.builders import travels_keyboard
|
||||
from app.keyboards.profile import get
|
||||
from app.models.user import User
|
||||
from app.states.travel import TravelCreationState
|
||||
|
||||
|
||||
router = Router(name="menu_callback")
|
||||
|
||||
|
||||
@router.callback_query(F.data == "menu_profile", RegisteredCallback())
|
||||
@router.callback_query(
|
||||
F.data == "menu_profile", RegisteredCallback(), StateFilter(None),
|
||||
)
|
||||
async def profile_callback(callback: CallbackQuery) -> None:
|
||||
if callback.data is None or callback.message is None:
|
||||
return
|
||||
@@ -39,3 +46,55 @@ async def profile_callback(callback: CallbackQuery) -> None:
|
||||
await callback.message.delete()
|
||||
except TelegramBadRequest:
|
||||
pass
|
||||
|
||||
|
||||
@router.callback_query(
|
||||
F.data == "menu_create_travel", RegisteredCallback(), StateFilter(None),
|
||||
)
|
||||
async def create_travel_callback(
|
||||
callback: CallbackQuery,
|
||||
state: FSMContext,
|
||||
) -> None:
|
||||
if callback.data is None or callback.message is None:
|
||||
return
|
||||
|
||||
await callback.message.answer(
|
||||
messages.CREATE_TRAVEL,
|
||||
)
|
||||
await callback.message.answer(
|
||||
messages.INPUT_TRAVEL_TITLE,
|
||||
)
|
||||
await state.set_state(TravelCreationState.title)
|
||||
|
||||
await callback.answer()
|
||||
|
||||
try:
|
||||
await callback.message.delete()
|
||||
except TelegramBadRequest:
|
||||
pass
|
||||
|
||||
|
||||
@router.callback_query(
|
||||
F.data == "menu_travels", RegisteredCallback(), StateFilter(None),
|
||||
)
|
||||
async def travels_callback(
|
||||
callback: CallbackQuery,
|
||||
) -> None:
|
||||
page = 0
|
||||
|
||||
user = User().get_user_by_telegram_id(callback.from_user.id)
|
||||
|
||||
travels = user.get_user_travels()
|
||||
|
||||
if not travels or travels == []:
|
||||
await callback.message.answer(messages.NO_TRAVELS)
|
||||
else:
|
||||
pages = (len(travels) + Config.PAGE_SIZE - 1) // Config.PAGE_SIZE
|
||||
|
||||
await callback.message.answer(
|
||||
messages.TRAVELS,
|
||||
reply_markup=travels_keyboard(travels, page, pages),
|
||||
)
|
||||
|
||||
await callback.message.delete()
|
||||
await callback.answer()
|
||||
|
||||
Reference in New Issue
Block a user