Изменение фотографии в сообщении по нажатию inline кнопки Aiogram

Рейтинг: 0Ответов: 1Опубликовано: 08.01.2023

Только начал плотно заниматься языком программирования Python и решил попробовать создать бота, но очутился перед проблемой, которую не могу решить. Пробовал через цикл for перебирать, но выходит как-то плохо, по нажатию все фотографии быстро меняются до последней из списка.

Бот парсит данные с сайта и записывает все в список. Мне нужно что бы при каждом нажатии кнопки "next" выводилась следующая фотография из вышеупомянутого списка.

from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton, InputMedia


poster = ['any url photo', 'any url photo', 'any url photo']


next_btn = InlineKeyboardButton(text='next', callback_data='next')

neBTN = InlineKeyboardMarkup()
neBTN.add(next_btn)


@dp.message_handler(commands=["start"])
async def photo(message: types.Message):
    file_path = poster[1]
    reply_markup = neBTN

    await bot.send_photo(
        message.chat.id,
        photo=file_path,
        reply_markup=reply_markup,
        caption="Test caption!",
    )


@dp.callback_query_handler(text="next")
async def photo_update(query: types.CallbackQuery):
    file_path = poster[2]
    reply_markup = neBTN
    file = InputMedia(media=file_path, caption="Updated caption :)")

    await query.message.edit_media(file, reply_markup=reply_markup)

Ответы

▲ 0Принят

Для этого необходимо использовать пагинацию, подобное делал при помощи aiogram_dialog