Как отправить фотографию с помощью кнопки Inline?

Как можно улучшить функцию `main_menu_markup` для формирования меню выбора с несколькими кнопками?
  • 20 июля 2024 г. 23:02
Ответы на вопрос 1
Для отправки фотографии с помощью кнопки Inline вам необходимо создать объект `InlineKeyboardMarkup` с кнопкой типа `InlineKeyboardButton`, на которой будет указан текст и callback_data для обработки нажатия на кнопку. Затем при отправке сообщения с картинкой добавить этот объект в параметры метода отправки сообщения.

Пример:

```
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton

bot = Bot(token='your_token')
dp = Dispatcher(bot)

@dp.message_handler(commands=['send_photo'])
async def send_photo(message: types.Message):
    photo = 'link_to_your_photo.jpg'
    markup = InlineKeyboardMarkup()
    button = InlineKeyboardButton('Send photo', callback_data='send_photo')
    markup.add(button)
    await bot.send_photo(message.chat.id, photo, reply_markup=markup)

if __name__ == '__main__':
    import asyncio
    from aiogram import executor

    executor.start_polling(dp, skip_updates=True)
```

Чтобы улучшить функцию `main_menu_markup` для формирования меню выбора с несколькими кнопками, вы можете добавить несколько кнопок в объект `InlineKeyboardMarkup` с помощью метода `add`. Например:

```
def main_menu_markup():
    markup = InlineKeyboardMarkup()
    markup.row(
        InlineKeyboardButton('Button 1', callback_data='button1'),
        InlineKeyboardButton('Button 2', callback_data='button2'),
    )
    markup.row(
        InlineKeyboardButton('Button 3', callback_data='button3'),
        InlineKeyboardButton('Button 4', callback_data='button4'),
    )
    return markup
```

Такой код создаст клавиатуру с двумя рядами кнопок, каждый из которых содержит по две кнопки.
Похожие вопросы