Как в aiogram3 отправить фото

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

Пишу бота на aiogram3, столкнулся с такой проблемой - бот не отправляет фото. Читал документацию и написал так же, но безуспешно. Этот код работает только с ссылкой на фото из интернета, а фото из папки не отправляет, писал разный путь до фото, но ошибка всегда одна и та же.

from aiogram import Bot
from aiogram.types import Message, FSInputFile

photo = FSInputFile("photo_2020-09-03_03-42-41.jpg")


async def menu(message: Message):
    await message.answer_photo(photo=photo, caption="hi")

Выдаёт следующую ошибку

aiogram.exceptions.TelegramNetworkError: ClientOSError: [Errno 2] Can not write request body for https://api.telegram.org/bot{тут токен}/sendPhoto

Ответы

▲ 0

Попробуйте заменить photo = FSInputFile("photo_2020-09-03_03-42-41.jpg") на photo = open('photo_2020-09-03_03-42-41.jpg', 'rb') Я не уверен что это поможет, но с PyTelegramBotApi я делаю только так.

▲ 0
photo = InputFile("files/test.png")

await bot.send_photo(chat_id=message.chat.id, photo=photo)

ИЛИ вы можете отправлять фото по file_id

@dp.message_handler(content_types=['photo'])
async def photo_handler(msg: types.Message):
    await msg.answer(msg.photo[-1].file_id)

просто отправьте боту фото и вы получите file_id фото

async def photo_handler(msg: types.Message):
    await msg.answer_photo(FILE_ID)