Как сделать отправку фото вместе с текстом и кнопками в одном сообщение? библиотека 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 шт):
Хз, что вы там делаете ибо вы не показали как вы отправляете фото. Но вот рабочий способ.
@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)
