Отправка медиафайлов ботом ТГ
Занялся изучением процесса написания ботов в ТГ. Пишу пока самое простой, просто эхобот который отвечает на сообщения. Сделал кнопочки меню при нажатии на которые присылается разный текст или открываются подменю и спокнулся на таком вопросе. Как сделать так, что бы бот кроме текста отправлял изображение.
async def text_button (message: types.Message):
await message.answer('подменю', reply_markup=keyboard2)
await message.answer_photo(InputFile('media/1.jpg'))
пишет
await message.answer_photo(InputFile('media/1.jpg'))
TypeError: Can't instantiate abstract class InputFile with abstract method read
Если
async def text_button (message: types.Message):
await message.answer('подменю', reply_markup=keyboard2)
await message.answer_photo('media/1.jpg')
то требует ссылку на фото в интернете.
await Bot.send_photo(chat_id=message.from_user.id, photo=open('media/1.jpg', 'rb'))
не видит файл
FileNotFoundError: [Errno 2] No such file or directory: 'media/1.jpg'
А как сделать что бы он брал фото из папки media? Что я не так делаю? Куда в интернете не смотрел, все учат отправлять текст, а вот с картинками не могу разобраться...
Ответы (1 шт):
Возможные причины: **Неправильная передача данных через BytesIO. Ограничения на размер изображения. **Проблемы с внутренней реализацией сетевых запросов в aiogram (например, сессия может быть завершена или возникли внутренние проблемы с подключением). Возможное решение: Перейти на сохранение изображения во временный файл. Это позволит точно убедиться, что проблема не связана с использованием BytesIO, так как временный файл точно поддерживается Telegram API.
Использовать явное управление сессиями для сетевых запросов в aiogram.
Решение: сохранение во временный файл и его передача: Попробуй сохранить изображение во временный файл и передать его через путь к файлу.