Как сделать кнопки в Telegram боте на Python

Создание кнопок в Telegram боте на Python включает несколько основных шагов.

Для начала вам потребуется установленная библиотека python-telegram-bot. Если у вас её еще нет, установите её через pip:

pip install python-telegram-bot

Шаг 1: Импортировать необходимые модули

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

Шаг 2: Создать обработчики команд

Например, создадим команду /start, которая будет показывать кнопки.

def start(update: Update, context: CallbackContext) -> None:
    keyboard = [
         [InlineKeyboardButton("Опция 1", callback_data='1'),
          InlineKeyboardButton("Опция 2", callback_data='2')],
         ] 
    reply_markup = InlineKeyboardMarkup(keyboard) 
    update.message.reply_text('Пожалуйста, выберите:', reply_markup=reply_markup)

Шаг 3: Добавить обработчик для кнопок

Когда пользователь нажимает на кнопку, должен сработать специальный обработчик.

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

Шаг 4: Основная функция для запуска бота

def main() -> None:
     updater = Updater("ВАШ_ТОКЕН", use_context=True) 
     dispatcher = updater.dispatcher
     dispatcher.add_handler(CommandHandler('start', start))
     dispatcher.add_handler(CallbackQueryHandler(button))
     updater.start_polling() 
     updater.idle()

Не забудьте заменить "ВАШ_ТОКЕН" на токен вашего бота, полученный от BotFather.

Шаг 5: Запуск бота

Теперь, когда вы написали весь код, запустите скрипт, и ваш бот должен начать работу. При отправке команды /start бот предложит вам кнопки для выбора, и вы увидите ответ в зависимости от выбранной кнопки.

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

Полный код:

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')],
    ]

    reply_markup = InlineKeyboardMarkup(keyboard)

    # Отправка сообщения с кнопками
    update.message.reply_text('Пожалуйста, выберите:', reply_markup=reply_markup)

def button(update: Update, context: CallbackContext) -> None:
    # Обработка нажатия кнопки
    query = update.callback_query
    query.answer()

    # Редактирование сообщения с выбранной опцией
    query.edit_message_text(text=f"Выбрана опция: {query.data}")

def main():
    # Замените 'ВАШ_ТОКЕН' на токен вашего бота
    updater = Updater("ВАШ_ТОКЕН", use_context=True)

    dispatcher = updater.dispatcher

    # Добавление обработчиков для команд и кнопок
    dispatcher.add_handler(CommandHandler('start', start))
    dispatcher.add_handler(CallbackQueryHandler(button))

    # Запуск бота
    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

Оцените статью
CONFF.ORG
Добавить комментарий