Не понимаю как здесь это исправить, через if не хватает мозгов сделать(то, что пробовал, не помогло), понимаю что в функции отправляется сообщение каждый раз когда вызывается Функция отображения, но сообщение остается наверху ( вроде как получается неправильно написана show_page) там как раз каждый раз при вызове колбека он отправляет сообщение.
В общем для меня пока логика выявления ошибок сложная, первый проект, извините
async def pages(message: types.Message):
await show_pages(message.chat.id, page=0)
# Функция отображения
async def show_pages(chat_id, page):
start_index = page * numbers_per_page
end_index = (page + 1) * numbers_per_page
# Создаем клавиатуру для пагинации
keyboard = InlineKeyboardMarkup(row_width=2)
for items in pages_list[start_index:end_index]:
keyboard.insert(InlineKeyboardButton(items, callback_data=','))
if start_index > 0:
keyboard.insert(InlineKeyboardButton('⬅ Назад', callback_data=f'paginate:{page-1}'))
if end_index < len(pages_list):
keyboard.insert(InlineKeyboardButton('Вперед ➡', callback_data=f'paginate:{page+1}'))
sent_message = await bot.send_message(chat_id, text='Выберите страницу:', reply_markup=keyboard)
return sent_message.message_id
# Обработчик кнопок
async def callback_handler(query: types.CallbackQuery):
current_page = int(query.data.split(':')[1])
message_id = await show_page(query.message.chat.id, page=current_page)
# Редактируем сообщение вместо отправки нового
await bot.edit_message_text(chat_id=query.message.chat.id, message_id=query.message.message_id, text='Выберите страницу:',
reply_markup=InlineKeyboardMarkup())
# Не забываем подтвердить получение callback
await query.answer()