Advertisement
enkryptor

Untitled

Mar 30th, 2023
423
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.42 KB | None | 0 0
  1. @dp.callback_query_handler(text='menu')
  2. async def process_menu_callback(callback_query: types.CallbackQuery):
  3.     # Удаляем кнопки
  4.     await bot.answer_callback_query(callback_query.id)
  5.     await bot.delete_message(callback_query.message.chat.id, callback_query.message.message_id)
  6.  
  7.     # Получаем список товаров из базы данных
  8.     conn = sqlite3.connect('menu.db')
  9.     cursor = conn.cursor()
  10.  
  11.     # Вычисляем значения offset и limit на основе номера страницы и размера страницы
  12.     page_size = 3
  13.     page_number = 0
  14.     if 'page_number' in callback_query.data:
  15.         page_number = int(callback_query.data.split('_')[2])
  16.     elif 'prev' in callback_query.data:
  17.         page_number = int(callback_query.data.split('_')[2]) - 1
  18.     elif 'next' in callback_query.data:
  19.         page_number = int(callback_query.data.split('_')[2]) + 1
  20.     offset = page_size * page_number
  21.     limit = page_size
  22.  
  23.     cursor.execute(f'SELECT * FROM menu LIMIT {limit} OFFSET {offset}')
  24.     item = cursor.fetchone()
  25.     conn.close()
  26.  
  27.     # Создаем сообщение с товаром и кнопками
  28.     message_text = f'<b>{item[1]}</b>\n{item[2]}\n{item[3]} руб.\n\n'
  29.     keyboard_markup = InlineKeyboardMarkup()
  30.     add_to_cart_button = InlineKeyboardButton('В корзину', callback_data=f'add_to_cart_{item[0]}')
  31.     prev_button = InlineKeyboardButton('<< Назад', callback_data=f'menu_prev_{page_number}')
  32.     next_button = InlineKeyboardButton('Вперед >>', callback_data=f'menu_next_{page_number}')
  33.     keyboard_markup.row(prev_button, add_to_cart_button, next_button)
  34.     await bot.send_photo(callback_query.message.chat.id, photo=InputFile(item[4]), caption=message_text,
  35.                          reply_markup=keyboard_markup)
  36.  
  37.     # Создаем кнопки "назад" и "вперед"
  38.     keyboard_markup = InlineKeyboardMarkup()
  39.     if page_number > 0:
  40.         prev_button = InlineKeyboardButton('<< Назад', callback_data=f'menu_prev_{page_number}')
  41.         keyboard_markup.add(prev_button)
  42.     if cursor.fetchone() is not None:
  43.         next_button = InlineKeyboardButton('Вперед >>', callback_data=f'menu_next_{page_number}')
  44.         keyboard_markup.add(next_button)
  45.  
  46.     await bot.send_message(callback_query.message.chat.id, 'Выберите товар', reply_markup=keyboard_markup)
  47.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement