Как сделать отправку фото вместе с текстом и кнопками в одном сообщение? библиотека aiogram | python

Цель: Отвечать пользователю в одном сообщение: фотографией, текстом, кнопками при этом выводить информацию из базы данных

Имеется: Функция, обрабатывающая начальную команду /start.

На данный момент в ней подключен только вывод текста и кнопок

async def cmd_menu(msg: types.Message, user: User):
    await msg.answer(
    '? Привет, {}\nВаш скрытый id для решения споров: {}'.format(user.username, user.hidden_id),
    reply_markup=(await get_menu(user, msg.bot)))

Попытки следовать документации привели к провалу, а так же к ряду ошибок, получилось сделать вывод фото и кнопок но увы без текста т.к записи из базы данных (user.username, user.hidden_id) не отображались.

Ошибки:

await bot.send_photo(user, types.InputFile('src/bo.png'))
NameError: name 'bot' is not defined

await Bot.send_photo(photo=types.InputFile.from_url(URL))
TypeError: send_photo() missing 2 required positional arguments: 'self' and 'chat_id'

AttributeError: 'int' object has no attribute 'parse_mode'

  File "/root/bot/handlers/user/menu.py", line 2068, in cmd_menu
    await Bot.send_photo(msg.from_user.id, MAIN_PHOTO, caption, reply_markup=(await get_menu(user, msg.bot)))

Думаю что проблема в самом методе который я использую.

Если кто-то знает как делается вывод: фото, текста, кнопок и записей из базы данных буду рад любому предположению


Ответы (1 шт):

Автор решения: oleksandrigo

Хз, что вы там делаете ибо вы не показали как вы отправляете фото. Но вот рабочий способ.

@dp.message_handler(content_types=['photo'])
async def start(msg: types.Message):
    markup = InlineKeyboardMarkup().add(InlineKeyboardButton("text", callback_data="cd"))
    await msg.answer_photo(photo=msg.photo[-1].file_id, caption="caption", reply_markup=markup)

Вариант через экземпляр класса бот.

bot = Bot(token=...)

await bot.send_photo(chat_id=msg.chat.id, photo=msg.photo[-1].file_id, caption="caption", reply_markup=markup)

Результат
введите сюда описание изображения

→ Ссылка