Создание кнопок в 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-бота с необходимыми функциональными возможностями.