Как отправить фото и текст aiogram?

Для отправки фото и текста с использованием фреймворка aiogram вам потребуется выполнить несколько шагов.

1. Установите библиотеку aiogram, если еще не сделали этого:

   pip install aiogram

2. Импортируйте необходимые классы и функции:

   from aiogram import Bot, types
   from aiogram.dispatcher import Dispatcher
   from aiogram.utils import executor

3. Создайте объекты классов Bot и Dispatcher. Bot позволяет взаимодействовать с самим Telegram Bot API, а Dispatcher используется для обработки входящих сообщений и команд от пользователя:

   bot = Bot(token="YOUR_BOT_TOKEN")
   dp = Dispatcher(bot)

Вместо YOUR_BOT_TOKEN вставьте токен вашего бота, который вы получили от BotFather.

4. Определите функцию-обработчик, которая будет вызываться при получении команды /start:

   @dp.message_handler(commands=['start'])
   async def start(message: types.Message):
       text = "Привет! Отправьте мне фото и текст, и я их отправлю обратно."
       await message.reply(text)

5. Определите функцию-обработчик, которая будет вызываться при получении фото:

   @dp.message_handler(content_types=types.ContentTypes.PHOTO)
   async def handle_photo(message: types.Message):
       photo_id = message.photo[-1].file_id
       caption = f"Вы отправили фото с заголовком: {message.caption}"
       await bot.send_photo(message.chat.id, photo=photo_id, caption=caption)

В данном примере мы получаем последнюю фотографию из списка, устанавливаем заголовок фото и отправляем его обратно пользователю с помощью метода send_photo бота.

6. Определите функцию-обработчик, которая будет вызываться при получении текста:

   @dp.message_handler(content_types=types.ContentTypes.TEXT)
   async def handle_text(message: types.Message):
       text = f"Вы отправили текст: {message.text}"
       await message.reply(text)

В данном примере мы просто отправляем обратно пользователю текстовое сообщение с тем же содержимым.

7. Наконец, запустите бота с помощью функции executor:

   if __name__ == '__main__':
       executor.start_polling(dp)

Теперь ваш бот готов принимать сообщения с фото и текстом и отправлять их обратно.

Вот полный пример кода:

from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor

bot = Bot(token="YOUR_BOT_TOKEN")
dp = Dispatcher(bot)

@dp.message_handler(commands=['start'])
async def start(message: types.Message):
    text = "Привет! Отправьте мне фото и текст, и я их отправлю обратно."
    await message.reply(text)

@dp.message_handler(content_types=types.ContentTypes.PHOTO)
async def handle_photo(message: types.Message):
    photo_id = message.photo[-1].file_id
    caption = f"Вы отправили фото с заголовком: {message.caption}"
    await bot.send_photo(message.chat.id, photo=photo_id, caption=caption)

@dp.message_handler(content_types=types.ContentTypes.TEXT)
async def handle_text(message: types.Message):
    text = f"Вы отправили текст: {message.text}"
    await message.reply(text)

if __name__ == '__main__':
    executor.start_polling(dp)

Замените YOUR_BOT_TOKEN на актуальный токен вашего бота, сохраните код в файле с расширением .py и запустите его. Теперь ваш бот будет принимать и обрабатывать сообщения с фото и текстом.