Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from aiogram import Router, types, filters
- from aiogram.utils.keyboard import InlineKeyboardBuilder
- from contextlib import suppress
- from aiogram.exceptions import TelegramBadRequest
- echo_router = Router()
- class NumbersCallbackFactory(filters.callback_data.CallbackData, prefix="fabnum"):
- action: str
- value: int | None
- def get_keyboard_fab():
- builder = InlineKeyboardBuilder()
- builder.button(
- text="-2", callback_data=NumbersCallbackFactory(action="change", value=-2)
- )
- builder.button(
- text="-1", callback_data=NumbersCallbackFactory(action="change", value=-1)
- )
- builder.button(
- text="+1", callback_data=NumbersCallbackFactory(action="change", value=1)
- )
- builder.button(
- text="+2", callback_data=NumbersCallbackFactory(action="change", value=2)
- )
- builder.button(
- text="Подтвердить", callback_data=NumbersCallbackFactory(action="finish")
- )
- builder.adjust(4)
- # -2 -1 +1 +2
- # Подтвердить
- return builder.as_markup()
- @echo_router.callback_query(NumbersCallbackFactory.filter())
- async def update_num_text(callback: types.CallbackQuery,
- callback_data: NumbersCallbackFactory):
- new_value = int(callback.message.text)
- if callback_data.action == 'change':
- new_value += callback_data.value
- with suppress(TelegramBadRequest):
- await callback.message.edit_text(
- f"{new_value}",
- reply_markup=get_keyboard_fab()
- )
- elif callback_data.action == 'finish':
- await callback.answer('Подтверждено')
- @echo_router.message(filters.Command(commands=['numbers']))
- async def echo(message: types.Message):
- await message.answer('0', reply_markup=get_keyboard_fab())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement