Как создать кнопки в Telegram-боте?

Как можно настроить отправку команды <br/>?
  • 9 января 2025 г. 20:43
Ответы на вопрос 2
Создание кнопок в Telegram-боте можно реализовать с помощью встроенных средств API Telegram, таких как `InlineKeyboardMarkup` и `ReplyKeyboardMarkup`. Рассмотрим оба варианта.

### 1. Создание кнопок с помощью ReplyKeyboardMarkup

Этот метод позволяет показать клавиатуру с кнопками, которые будут отображаться под полем ввода сообщения.

```python
from telegram import Update, ReplyKeyboardMarkup
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext

def start(update: Update, context: CallbackContext) -> None:
    keyboard = [
        ['Кнопка 1', 'Кнопка 2'],
        ['Кнопка 3']
    ]
    reply_markup = ReplyKeyboardMarkup(keyboard, resize_keyboard=True)
    update.message.reply_text('Выберите опцию:', reply_markup=reply_markup)

def button_handler(update: Update, context: CallbackContext) -> None:
    update.message.reply_text(f'Вы нажали: {update.message.text}')

def main() -> None:
    updater = Updater("Ваш_Telegram_Bot_Token")

    updater.dispatcher.add_handler(CommandHandler('start', start))
    updater.dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, button_handler))

    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()
```

### 2. Создание кнопок с помощью InlineKeyboardMarkup

Этот метод позволяет создавать кнопки, которые могут выполнять действия при нажимании.

```python
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler, CallbackContext

def start(update: Update, context: CallbackContext) -> None:
    keyboard = [
        [InlineKeyboardButton("Кнопка 1", callback_data='1'),
         InlineKeyboardButton("Кнопка 2", callback_data='2')],
        [InlineKeyboardButton("Кнопка 3", callback_data='3')]
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)
    update.message.reply_text('Выберите опцию:', reply_markup=reply_markup)

def button_handler(update: Update, context: CallbackContext) -> None:
    query = update.callback_query
    query.answer()
    query.edit_message_text(text=f"Вы выбрали кнопку: {query.data}")

def main() -> None:
    updater = Updater("Ваш_Telegram_Bot_Token")

    updater.dispatcher.add_handler(CommandHandler('start', start))
    updater.dispatcher.add_handler(CallbackQueryHandler(button_handler))

    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()
```

### Настройка отправки команды

Для настройки отправки команды, можно использовать `CommandHandler`. Например, если вы хотите, чтобы команда `/help` отправляла сообщение:

```python
def help_command(update: Update, context: CallbackContext) -> None:
    update.message.reply_text('Это сообщение помощи.')

# Добавьте этот обработчик в main
updater.dispatcher.add_handler(CommandHandler('help', help_command))
```

Теперь, когда пользователь введет `/help`, бот ответит соответствующим сообщением.

### Заключение

Эти примеры демонстрируют, как создать кнопки и обрабатывать команды в Telegram-боте на Python с помощью библиотеки `python-telegram-bot`. Не забудьте установить библиотеку через pip:

```bash
pip install python-telegram-bot
```

После этого вы сможете настроить своего Telegram-бота с необходимыми функциональными возможностями.
Inline-кнопки называется. Читайте документацию
Похожие вопросы