Для отправки фото и текста с использованием фреймворка 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 и запустите его. Теперь ваш бот будет принимать и обрабатывать сообщения с фото и текстом.