Advertisement
Guest User

Untitled

a guest
Jan 20th, 2023
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.81 KB | Source Code | 0 0
  1. from aiogram import Router, types, filters
  2. from aiogram.utils.keyboard import InlineKeyboardBuilder
  3. from contextlib import suppress
  4. from aiogram.exceptions import TelegramBadRequest
  5.  
  6. echo_router = Router()
  7.  
  8. class NumbersCallbackFactory(filters.callback_data.CallbackData, prefix="fabnum"):
  9.     action: str
  10.     value: int | None
  11.  
  12. def get_keyboard_fab():
  13.     builder = InlineKeyboardBuilder()
  14.     builder.button(
  15.         text="-2", callback_data=NumbersCallbackFactory(action="change", value=-2)
  16.     )
  17.     builder.button(
  18.         text="-1", callback_data=NumbersCallbackFactory(action="change", value=-1)
  19.     )
  20.     builder.button(
  21.         text="+1", callback_data=NumbersCallbackFactory(action="change", value=1)
  22.     )
  23.     builder.button(
  24.         text="+2", callback_data=NumbersCallbackFactory(action="change", value=2)
  25.     )
  26.     builder.button(
  27.         text="Подтвердить", callback_data=NumbersCallbackFactory(action="finish")
  28.     )
  29.     builder.adjust(4)
  30.     # -2 -1 +1 +2
  31.     # Подтвердить
  32.     return builder.as_markup()
  33.  
  34. @echo_router.callback_query(NumbersCallbackFactory.filter())
  35. async def update_num_text(callback: types.CallbackQuery,
  36.                           callback_data: NumbersCallbackFactory):
  37.     new_value = int(callback.message.text)
  38.  
  39.     if callback_data.action == 'change':
  40.         new_value += callback_data.value
  41.  
  42.         with suppress(TelegramBadRequest):
  43.             await callback.message.edit_text(
  44.                 f"{new_value}",
  45.                 reply_markup=get_keyboard_fab()
  46.             )
  47.     elif callback_data.action == 'finish':
  48.         await callback.answer('Подтверждено')
  49.  
  50. @echo_router.message(filters.Command(commands=['numbers']))
  51. async def echo(message: types.Message):
  52.     await message.answer('0', reply_markup=get_keyboard_fab())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement