Задать вопрос
@gamolle

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

Я делаю Телеграмм бота в пайчарм через 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)
  • Вопрос задан
  • 1232 просмотра
Подписаться 2 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@SAAAS
Вот так будет выглядеть ваш код, я изменил кое-что и сделал так чтобы текущее сообщение редактировалось и кнопка назад работает, если что-то не понятно напишите комментарий
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)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы