Как отправить фотографию в бота телеграмм aiogram
Дело в том что есть генератор qr кода, он генерирует код сохраняет его в папку, но как сделать чтобы он отправлялся в сообщение боту
Ответы (7 шт):
Держи
photo = open('Путь к фото', 'rb')
await bot.send_photo(chat_id, photo)
Создайте объект InputFile, в котором хранится путь к файлу и воспользуйтесь методом send_photo():
photo = InputFile("files/test.png")
await bot.send_photo(chat_id=message.chat.id, photo=photo)
with open('Путь к фото', 'rb') as photo:
await bot.send_photo(chat_id=message.chat.id, photo)
Нужно экспортировать InputFile
from aiogram.types import InputFile
Затем создать переменную, через которую указываем путь к фото и указываем нашу переменную photo при отправке через bot.send_photo()
photo = InputFile("files/any_picture.png")
await bot.send_photo(chat_id=message.chat.id, photo=photo)
Покажу самый лёгкий путь. (aiogram v3.x >)
Если используеться Bot то:
await bot.send_photo(msg.chat.id, photo=types.FSInputFile(photo_path))
Если через Router то (@router.message):
await message.answer(reply)_photo(photo=types.FSInputFile(photo_path))
aiogram 3.x Мне такой способ помог. Написал функцию
@router.message(F.photo)
async def get_photo(msg: Message):
await msg.answer(f'ID фото: {msg.photo[-1].file_id}')
Дальше в бота в телеге отправил фото с компа, получил id Дальше написал так
await bot.send_photo('-id канала', photo='id фото которое отдаст бот в предыдущей функции',
caption='здесь какой то текст', reply_markup=инлайн_кнпока)
на этом все, бот отправляет сообщение в канал, снизу под постом кнопка для перехода на рекламируемый ресурс.
from aiogram.types import FSInputFile
@dp.message(Command("picture"))
async def get_qr_function(message: Message):
chat_id = message.chat.id
photo = "User/photo/img.png" # Путь к фото
await bot.send_photo(chat_id=chat_id, photo=FSInputFile(path=photo))