Не выводится список с сайтами после выбора категории
Всем доброго времени суток, только начал изучать Python и Aiogram. Сделал вывод категоий:
@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
await bot.send_message(message.chat.id, text=f'? Добро пожаловать ?', reply_markup=kb.show_categories(), parse_mode='html')
Сама функция:
def show_categories():
categories = db.get_categories()
if categories is None:
return InlineKeyboardMarkup([[InlineKeyboardButton("Ошибка базы данных", callback_data="error")]])
keyboard = []
for category_id, category_name in categories:
keyboard.append([InlineKeyboardButton(text=category_name, callback_data=f"category:{str(category_id)}")])
reply_markup = InlineKeyboardMarkup(inline_keyboard=keyboard, resize_keyboard=True)
return reply_markup
print(reply_markup)
Из db:
def get_categories():
try:
cursor.execute(f'SELECT id, name FROM categories')
categories = cursor.fetchall()
print(categories)
return categories
except sqlite3.Error as e:
print(f"Ошибка при работе с базой данных: {e}")
return None
Категории вылазят и отображаются. После нажатия на категорию, должны вывестись сайты из данной категории, но ничего не происходит.
Вот код:
@dp.callback_query_handler()
async def main(call: types.`CallbackQuery`):
if 'category' == call.data.split(':')[0]:
ids = call.data.split(':')[0]
try:
await call.message.answer(text='Выберите нужныйсайт: ', reply_markup=kb.get_sites(ids), parse_mode='html')
except Exception as e:
print(e)
await call.message.answer(chat_id=chat_id, text='❗️ Произошла ошибка', reply_markup=None)
Функция get_sities:
def get_sites(ids, page=0):
# Получаем список сайтов из базы данных
sites = db.get_sites(ids)
if sites is None:
return InlineKeyboardMarkup([[InlineKeyboardButton("Ошибка базы данных", callback_data="error")]])
# Разделяем сайты на страницы по 10 элементов на каждой
sities_per_page = 10
total_pages = (len(sites) + sities_per_page - 1) // sities_per_page
start = page * sities_per_page
end = start + sities_per_page
sities_page = sites[start:end]
# Создаем кнопки для сайтов текущей страницы
keyboard = []
for site_id, site_name in sities_page:
keyboard.append([InlineKeyboardButton(text=site_name, callback_data=f"site-{str(site_id)}")])
# Добавляем кнопки навигации
navigation_buttons = []
if page > 0:
navigation_buttons.append(InlineKeyboardButton(text="⬅️ Назад", callback_data=f"page-{page-1}"))
if page < total_pages - 1:
navigation_buttons.append(InlineKeyboardButton(text="Вперед ➡️", callback_data=f"page-{page+1}"))
if navigation_buttons:
keyboard.append(navigation_buttons)
# Добавляем текст текущей страницы
keyboard.append([InlineKeyboardButton(text=f"Страница {page + 1} из {total_pages}", callback_data="current_page")])
reply_markup = InlineKeyboardMarkup(inline_keyboard=keyboard)
return reply_markup
get_sites в db:
def get_sites(ids):
try:
cursor.execute(f'SELECT id, name, FROM sites WHERE category_id = {ids}')
sites = cursor.fetchall()
print(sites)
return sites
except sqlite3.Error as e:
print(f"Ошибка при работе с базой данных: {e}")
return None
Но ничего не выходит. При этом сообщение "Выберите нужный сайт" выходит, а кнопки нет. Помогите разобраться. БД заполнена.