我有一个循环,它可以从我从一个网站上下载的视频中创建卡片,我在这些卡片上添加了内联按钮,让你可以观看视频、评论我需要为每个内联按钮创建一个callback_handler(我已经解决了“Пере гляд”-“查看”按钮现在),然后捕捉状态中的选择,然后选择一个可能的视频播放器和质量.由于id是自动创建的,手动为一百万个可能的视频编写处理程序是不现实的,所以我想知道是否有可能以某种方式自动化这个过程,或者请提供一个更简洁的解决方案。我试图在另一个处理程序中创建一个callback_handler,但是当我试图点击查看按钮时,我只得到了最后一张卡的响应。
example
很抱歉,如果我提交了一个错误的问题。写,我会解释更好的想法。
from aiogram import types
from loader import dp
from states import Search
from aiogram.dispatcher import FSMContext
from keyboards.inline_commands.inline_commands import get_video_from_site
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
@dp.callback_query_handler(text='search')
async def send_message(call: types.CallbackQuery):
await call.message.answer(f'Введи назву аніме, наприклад: \"Сайтама\" 🦸')
await Search.name.set()
@dp.message_handler(state=Search.name)
async def state1(message: types.Message, state: FSMContext):
# name_anime = call.message.text
name_anime = message.text
await state.update_data(name=name_anime)
data = await state.get_data()
videocards = await get_video_from_site(data.get('name'))
for i in range(0, len(videocards['img'])):
link_id = videocards["link"][i].split("/")[3].split("-")[0]
await message.answer_photo(photo=videocards['img'][i],
caption=f'<b>{videocards["name"][i]}</b>'
f'\n\n'
f'{"".join(videocards["desc"][i][0:170])}....',
reply_markup=InlineKeyboardMarkup(row_width=2,
inline_keyboard=[
[
InlineKeyboardButton(text=f'Перегляд id={link_id}',
callback_data=f'{link_id}-watch'),
InlineKeyboardButton(text='Коменти',
callback_data=f'{link_id}-comm')
],
[
InlineKeyboardButton(text='Більше',
callback_data=f'{link_id}-more')
]
]))
# await message.answer('Тепер вибери аніме, яке хочеш')
# await Search.choose_button.set()
@dp.callback_query_handler(text=f'{link_id}-watch')
async def get_video(call: types.CallbackQuery, state: FSMContext):
await call.message.answer(videocards["link"][i])
await state.finish()
1条答案
按热度按时间vecaoik11#
该方法是将10个样品分别进行10次旋转,每次旋转10次。
data_city = types.InlineKeyboardMarkup(row_width=1) result = await sel.select_name_city() в результате я: data_city.row(types.InlineKeyboardButton(text=i[0], callback_data=i[0])) await callback_query.message.answer("Choose video:", reply_markup=data_city)