Как создать кнопку в телеграмм-боте?

Ссылка скопирована
1 ответ

Я делаю Телеграмм бота в пайчарм через telebot: с помощью команду старт выводится приветствие и некоторые кнопки, а при нажатии на некоторую кнопку вылетает текст. Я хочу, чтобы вместе с этим текстом в конце появлялась кнопка "Вернуться в меню", и чтобы кнопка появлялась сама после текста без всяких команд и сообщений. Как это можно сделать?

import telebot from telebot import types  bot = telebot.TeleBot('6586235154:AAEkapGqH9Cm2xTHbCxYE7w0zoL_56SAQMM') @bot.message_handler(commands=['start']) def send_welcome(message):     markup = types.InlineKeyboardMarkup()     button1 = types.InlineKeyboardButton("1.1. Строение органических соединений", callback_data='1')     button2 = types.InlineKeyboardButton("1.2. Изомерия и Гомология", callback_data='2')       for n in (button1,button2):         markup.row(n)     bot.send_message(message.chat.id, "<b>Привет, {0.first_name}!</b> Выбери раздел органики, а я пришлю тебе всю нужную теорию! ".format(message.from_user), parse_mode='html', reply_markup=markup)  @bot.callback_query_handler(func=lambda callback: True) def callback_query(callback):     if callback.data == '17': ????????????????????         send_welcome(message)     if callback.data == '1':         bot.send_message(callback.message.chat.id, '<b>Органическая химия</b> — раздел химии, в котором изучают соединения углерода, их строение, свойства.......          @bot.????????????         def send_welcom(message):             markup = types.InlineKeyboardMarkup()             button17 = types.InlineKeyboardButton("Назад", callback_data='17')             markup.add(button17)             bot.send_message(message.chat.id, 'Назад?', reply_markup=markup)

import telebot from telebot import types bot = telebot.TeleBot('6586235154:AAEkapGqH9Cm2xTHbCxYE7w0zoL_56SAQMM') @bot.message_handler(commands=['start']) def send_welcome(message): markup = types.InlineKeyboardMarkup() button1 = types.InlineKeyboardButton("1.1. Строение органических соединений", callback_data='1') button2 = types.InlineKeyboardButton("1.2. Изомерия и Гомология", callback_data='2') for n in (button1,button2): markup.row(n) bot.send_message(message.chat.id, "<b>Привет, {0.first_name}!</b> Выбери раздел органики, а я пришлю тебе всю нужную теорию! ".format(message.from_user), parse_mode='html', reply_markup=markup) @bot.callback_query_handler(func=lambda callback: True) def callback_query(callback): if callback.data == '17': ???????????????????? send_welcome(message) if callback.data == '1': bot.send_message(callback.message.chat.id, '<b>Органическая химия</b> — раздел химии, в котором изучают соединения углерода, их строение, свойства....... @bot.???????????? def send_welcom(message): markup = types.InlineKeyboardMarkup() button17 = types.InlineKeyboardButton("Назад", callback_data='17') markup.add(button17) bot.send_message(message.chat.id, 'Назад?', reply_markup=markup)

Дополнительно:

стоит посмотреть документацию, раздел с клавиатурами

  • Вопрос не понятно задан, если вы хотите кнопку под текстом то, у вас уже есть код который использует такие кнопки(id 1, 2), если вы про такие то, напишу ответ с подробными объяснениями
  • Ответы:

    телеграМ. Приложение называется "телеграМ". также как и инстаграМ

    Вот так будет выглядеть ваш код, я изменил кое-что и сделал так чтобы текущее сообщение редактировалось и кнопка назад работает, если что-то не понятно напишите комментарий

    import telebot from telebot import types  bot = telebot.TeleBot('6586235154:AAEkapGqH9Cm2xTHbCxYE7w0zoL_56SAQMM') @bot.message_handler(commands=['start']) def send_welcome(message):     markup = types.InlineKeyboardMarkup()     button1 = types.InlineKeyboardButton("1.1. Строение органических соединений", callback_data='1')     button2 = types.InlineKeyboardButton("1.2. Изомерия и Гомология", callback_data='2')       for n in (button1,button2):         markup.row(n)     bot.send_message(message.chat.id, "<b>Привет, {0.first_name}!</b> Выбери раздел органики, а я пришлю тебе всю нужную теорию! ".format(message.from_user), parse_mode='html', reply_markup=markup)  @bot.callback_query_handler(func=lambda callback: True) # Поменял callback на call для удобности  def callback_query(call):     if call.data == '17':         # Каждый раз пересоздаём переменную для сброса предыдущих кнопок         markup = types.InlineKeyboardMarkup()         button1 = types.InlineKeyboardButton("1.1. Строение органических соединений", callback_data='1')         button2 = types.InlineKeyboardButton("1.2. Изомерия и Гомология", callback_data='2')         for n in (button1,button2):             markup.row(n)         # Используем edit_message_text для смены текущего сообщения, это удобно и красиво          bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="<b>Привет, {0.first_name}!</b> Выбери раздел органики, а я пришлю тебе всю нужную теорию! ".format(call.message.from_user), parse_mode='html', reply_markup=markup)     if call.data == '1':         # Так будет выглядеть ваш каждый блок с текстом         markup = types.InlineKeyboardMarkup()         button17 = types.InlineKeyboardButton("Назад", callback_data='17')         markup.row(button17)         # Используем edit_message_text для смены текущего сообщения, это удобно и красиво          bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='<b>Органическая химия</b> — раздел химии, в котором изучают соединения углерода, их строение, свойства.......'.format(call.message.from_user), parse_mode='html', reply_markup=markup)   bot.polling(none_stop=True)

    import telebot from telebot import types bot = telebot.TeleBot('6586235154:AAEkapGqH9Cm2xTHbCxYE7w0zoL_56SAQMM') @bot.message_handler(commands=['start']) def send_welcome(message): markup = types.InlineKeyboardMarkup() button1 = types.InlineKeyboardButton("1.1. Строение органических соединений", callback_data='1') button2 = types.InlineKeyboardButton("1.2. Изомерия и Гомология", callback_data='2') for n in (button1,button2): markup.row(n) bot.send_message(message.chat.id, "<b>Привет, {0.first_name}!</b> Выбери раздел органики, а я пришлю тебе всю нужную теорию! ".format(message.from_user), parse_mode='html', reply_markup=markup) @bot.callback_query_handler(func=lambda callback: True) # Поменял callback на call для удобности def callback_query(call): if call.data == '17': # Каждый раз пересоздаём переменную для сброса предыдущих кнопок markup = types.InlineKeyboardMarkup() button1 = types.InlineKeyboardButton("1.1. Строение органических соединений", callback_data='1') button2 = types.InlineKeyboardButton("1.2. Изомерия и Гомология", callback_data='2') for n in (button1,button2): markup.row(n) # Используем edit_message_text для смены текущего сообщения, это удобно и красиво bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="<b>Привет, {0.first_name}!</b> Выбери раздел органики, а я пришлю тебе всю нужную теорию! ".format(call.message.from_user), parse_mode='html', reply_markup=markup) if call.data == '1': # Так будет выглядеть ваш каждый блок с текстом markup = types.InlineKeyboardMarkup() button17 = types.InlineKeyboardButton("Назад", callback_data='17') markup.row(button17) # Используем edit_message_text для смены текущего сообщения, это удобно и красиво bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='<b>Органическая химия</b> — раздел химии, в котором изучают соединения углерода, их строение, свойства.......'.format(call.message.from_user), parse_mode='html', reply_markup=markup) bot.polling(none_stop=True)

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Павел Админов Ответ

    Для создания кнопки в телеграмм-боте необходимо использовать Telegram Bot API, который предоставляет разработчикам возможность создавать интерактивные элементы, такие как кнопки. Вот пример кода на PHP, который позволяет создать кнопку в телеграмм-боте:

    $botToken = 'YOUR_BOT_TOKEN';
    $chatId = 'YOUR_CHAT_ID';
    $message = 'Нажмите на кнопку:';
    $keyboard = [
        'keyboard' => [
            [['text' => 'Название кнопки 1']],
            [['text' => 'Название кнопки 2']],
        ],
        'resize_keyboard' => true,
        'one_time_keyboard' => true,
    ];
     
    $parameters = [
        'chat_id' => $chatId,
        'text' => $message,
        'reply_markup' => json_encode($keyboard),
    ];
     
    $url = 'https://api.telegram.org/bot' . $botToken . '/sendMessage?' . http_build_query($parameters);
    file_get_contents($url);

    $botToken = 'YOUR_BOT_TOKEN'; $chatId = 'YOUR_CHAT_ID'; $message = 'Нажмите на кнопку:'; $keyboard = [ 'keyboard' => [ [['text' => 'Название кнопки 1']], [['text' => 'Название кнопки 2']], ], 'resize_keyboard' => true, 'one_time_keyboard' => true, ]; $parameters = [ 'chat_id' => $chatId, 'text' => $message, 'reply_markup' => json_encode($keyboard), ]; $url = 'https://api.telegram.org/bot' . $botToken . '/sendMessage?' . http_build_query($parameters); file_get_contents($url);

    В этом коде переменная $botToken должна содержать токен вашего телеграмм-бота, а переменная $chatId - идентификатор чата, куда будет отправлено сообщение с кнопкой. Затем создается массив $keyboard, который содержит массивы с текстом кнопок. Параметр 'resize_keyboard' указывает, что клавиатура должна занимать всю ширину экрана, а 'one_time_keyboard' - что клавиатура должна исчезнуть после нажатия на кнопку.

    Далее формируется массив $parameters с необходимыми параметрами для отправки сообщения с кнопкой через Telegram Bot API. И, наконец, отправляется запрос к API с помощью функции file_get_contents, передавая URL с параметрами.

    После выполнения этого кода в указанном чате должно появиться сообщение с кнопками, которые пользователь может нажимать для выполнения определенных действий.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно