Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать кнопку назад в telebot

Арсений Земляков Ученик (68), на голосовании 1 год назад
Помогите сделать кнопку Назад в моём коде

import telebot
import config
import random

from telebot import types

bot = telebot.TeleBot(config.token)


@bot.message_handler(commands=['start'])
def welcome(message):
sti = open('V:\PyProject/tgbot/stikers/sticker.webp', 'rb')

# keyboard
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("? Рандомное число")
item2 = types.KeyboardButton("? Как дела?")
item3 = types.KeyboardButton('? Прочее:', callback_data='proche')

markup.add(item1, item2, item3)

bot.send_message(message.chat.id,
"Добро пожаловать, **{0.first_name}!**\nЯ - <b>{1.first_name}</b>, бот созданный .".format(
message.from_user, bot.get_me()),
parse_mode='html', reply_markup=markup)

bot.send_sticker(message.chat.id, sti)


@bot.message_handler(content_types=['text'])
def lalala(message):
if message.chat.type == 'private':
if message.text == '? Рандомное число':
bot.send_message(message.chat.id, str(random.randint(0, 100)))

elif message.text == '? Как дела?':

markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("Хорошо", callback_data='good')
item2 = types.InlineKeyboardButton("Не очень", callback_data='bad')

markup.add(item1, item2)

bot.send_message(message.chat.id, 'Отлично, сам как?', reply_markup=markup)

elif message.text == '? Прочее:':

markup2 = types.ReplyKeyboardMarkup(resize_keyboard=True)
item4 = types.KeyboardButton('?YouTube автора бота')
item5 = types.KeyboardButton('?Телеграм автора бота')
item6 = types.KeyboardButton('?Твич автора бота')

markup2.add(item4, item5, item6)

bot.send_message(message.chat.id, 'Выбери нужный пункт:', reply_markup=markup2)

elif message.text == '?Телеграм автора бота':
bot.send_message(message.chat.id, 'Лови: ')

elif message.text == '?YouTube автора бота':
bot.send_message(message.chat.id, 'Лови: ')

elif message.text == '?Твич автора бота':
bot.send_message(message.chat.id, 'Лови: ')

else:
bot.send_message(message.chat.id, 'Я не знаю что ответить ?')


@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
try:
if call.message:
if call.data == 'good':
bot.send_message(call.message.chat.id, 'Вот и отличненько ?')
elif call.data == 'bad':
bot.send_message(call.message.chat.id, 'Бывает ?')

# remove inline buttons
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="? Как дела?",
reply_markup=None)

except Exception as e:
print(repr(e))


# RUN
bot.polling(none_stop=True)
Голосование за лучший ответ
Даниил Профи (953) 1 год назад
Чтобы добавить кнопку "Назад" в ваш код, вы можете добавить KeyboardButton для "Назад" в объект разметки, а затем использовать метод bot.send_message() для отправки пользователю сообщения, содержащего кнопку "Назад".

Например, в представленном вами коде вы можете добавить следующий код в оператор elif для сообщения "? Прочее":
 elif message.text == '? Прочее:': 
markup2 = types.ReplyKeyboardMarkup(resize_keyboard=True)
item4 = types.KeyboardButton('?YouTube автора бота')
item5 = types.KeyboardButton('?Телеграм автора бота')
item6 = types.KeyboardButton('?Твич автора бота')
item7 = types.KeyboardButton('Назад') # добавлена строка для кнопки "Назад"

markup2.add(item4, item5, item6, item7)

bot.send_message(message.chat.id, 'Выбери нужный пункт:', reply_markup=markup2)
Затем в главной функции можно добавить еще один оператор if для обработки кнопки "Назад":
 @bot.message_handler(content_types=['text']) 
def lalala(message):
if message.chat.type == 'private':
if message.text == '? Рандомное число':
bot.send_message(message.chat.id, str(random.randint(0, 100)))

elif message.text == '? Как дела?':
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("Хорошо", callback_data='good')
item2 = types.InlineKeyboardButton("Не очень", callback_data='bad')
markup.add(item1, item2)
bot.send_message(message.chat.id, 'Отлично, сам как?', reply_markup=markup)

elif message.text == 'Назад': # добавлена строка для обработки кнопки "Назад"
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("? Рандомное число")
item2 = types.KeyboardButton("? Как дела?")
item3 = types.KeyboardButton('? Прочее:', callback_data='proche')
markup.add(item1, item2, item3)
bot.send_message(message.chat.id, "Добро пожаловать обратно в главное меню!", reply_markup=markup)

# остальная часть кода ...
Похожие вопросы