При нажатии на кнопку "все" выходят кнопки, типо на 1 будут первые 10 фильмов, на 2 20 фильмов и тд
@dp.callback_query_handler(lambda c: c.data == 'все')
async def callback_inline(callback_query: types.CallbackQuery):
await bot.answer_callback_query(callback_query.id)
key1 = InlineKeyboardMarkup() # тут будут кнопки в зависимости от колва фильмов
for key in handlers.user_films_all():
rele1 = InlineKeyboardButton(text=f"{key}", callback_data=f"{key}")
key1.row(rele1)
await bot.edit_message_text(chat_id=callback_query.from_user.id, message_id=callback_query.message.message_id,
text=f'На цифраx будут фильмы', reply_markup=key1)
Тут я создаю словарь с "цифрой" и значением - списком фильмов
def user_films_all():
db = sql.connect('TGusers_films.db')
cur = db.cursor()
array = list(cur.execute('SELECT name_film, year_films FROM user_films'))
result = list(chunks(3, array))# для примера тут по 3
ord_dict = OrderedDict()
for i in enumerate(result, 1):
ord_dict[f'{i[0]}'] = i[1]
return ord_dict
Вот как нужно написать код, чтобы он подхватил цифры из callback_data и выводил список фильмов а не писать для цифер в ручную?
@dp.callback_query_handler(lambda c: c.data == '1') # потом 2, 3, 4 и тд
async def process_callback_button1(callback_query: types.CallbackQuery):
number = callback_query.data
await bot.answer_callback_query(callback_query.id)
keys = InlineKeyboardMarkup(resize_keyboard=True)
for key in handlers.user_films_all().keys():
rele1 = InlineKeyboardButton(text=f"{key}", callback_data=f"{key}")
keys.row(rele1)
await bot.edit_message_text(chat_id=callback_query.from_user.id, message_id=callback_query.message.message_id,
text=f'{handlers.nubmer_exit(number)}',
reply_markup=keys)
то есть чтобы не нужно было писать каждому коллбеку кусок кода?