В телеботе, при тапе на одну кнопку - выводится еще кнопка, и при нажатии - финишный текст, а на другую кнопку - цепочку сообщений как реализовать?
помогите новичку с телеботом
import telebot
from telebot import types
bot = telebot.TeleBot("токен")
@bot.message_handler(commands=["start"])
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
btn1 = types.KeyboardButton("Хочу поговорить")
btn2 = types.KeyboardButton("Часто задаваемые вопросы")
markup.add(btn1, btn2)
send_mess = f"<b>Привет, {message.from_user.first_name}</b>. Чем тебе помочь?"
bot.send_message(message.chat.id, send_mess, parse_mode="html", reply_markup=markup)
@bot.message_handler(content_types=["text"])
def mess(message):
get_message_bot = message.text.strip()
if get_message_bot == "Часто задаваемые вопросы":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
btn1 = types.KeyboardButton("Как настроение?")
btn2 = types.KeyboardButton("Ты сегодня выходил гулять или сидел весь день за компьютером?")
markup.add(btn1, btn2)
final_message = f"<b>{message.from_user.first_name}</b>, выбери вопрос который интересует, и получи ответ!"
elif get_message_bot == "Как настроение?":
markup = types.InlineKeyboardMarkup()
final_message = "Отлично. Всего доброго!"
elif get_message_bot == "Ты сегодня выходил гулять или сидел весь день за компьютером?":
markup = types.InlineKeyboardMarkup()
final_message = """Надоели эти вопросы. До свидания!"""
else:
markup = types.InlineKeyboardMarkup()
final_message = f"<b>{message.from_user.first_name}</b>, нажми на кнопки, и получи ответ или напиши"
bot.send_message(message.chat.id, final_message, parse_mode="html", reply_markup=markup)
bot.polling(none_stop=True)
Как сделать так, чтобы при нажатию кнопки "Хочу поговорить", был ответ "О чем будем говорить?", потом после ввода любого текста пользователем, автоматический ответ от бота "Подождите на линии, сегодня или завтра позвоним!" ?
Создавал еще один хендлер, добавлял еще один метод send_message, всегда ловит
else:
markup = types.InlineKeyboardMarkup()
final_message = f"<b>{message.from_user.first_name}</b>, нажми на кнопки, и получи ответ или напиши"
или не работает.
Ответы (1 шт):
Автор решения: Сёгун Райдэн
→ Ссылка
Я тоже недавно начал изучать. Попробовал что-то написать, по крайней мере, у меня код работает))
Обновлено:
import telebot
from telebot import types
bot=telebot.TeleBot("token")
@bot.message_handler(commands=["start"])
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
btn1 = types.KeyboardButton("Хочу поговорить")
btn2 = types.KeyboardButton("Часто задаваемые вопросы")
markup.add(btn1, btn2)
send_mess = f"<b>Привет, {message.from_user.first_name}</b>. Чем тебе помочь?"
bot.send_message(message.chat.id, send_mess, parse_mode="html", reply_markup=markup)
def func2(message):
if message.text=="Да":
bot.send_message(message.chat.id, "Подождите на линии, сегодня или завтра позвоним!")
elif message.text=="Нет":
bot.send_message(message.chat.id, "Удачи! Если что, то связывайтесь с нами снова!")
def func(message):
if message.text=="Часто задаваемые вопросы":
mess(message)
else:
input=bot.send_message(message.chat.id, "Ты уверен?")
bot.register_next_step_handler(input, func2)
@bot.message_handler(content_types=["text"])
def mess(message):
get_message_bot = message.text.strip()
final_message=""
if get_message_bot == "Часто задаваемые вопросы":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
btn1 = types.KeyboardButton("Как настроение?")
btn2 = types.KeyboardButton("Ты сегодня выходил гулять или сидел весь день за компьютером?")
markup.add(btn1, btn2)
final_message = f"<b>{message.from_user.first_name}</b>, выбери вопрос который интересует, и получи ответ!"
elif get_message_bot == "Как настроение?":
markup = types.InlineKeyboardMarkup()
final_message = "Отлично. Всего доброго!"
elif get_message_bot == "Ты сегодня выходил гулять или сидел весь день за компьютером?":
markup = types.InlineKeyboardMarkup()
final_message = """Надоели эти вопросы. До свидания!"""
elif get_message_bot == "Хочу поговорить":
markup = types.InlineKeyboardMarkup()
input=bot.send_message(message.chat.id, "О чем поговорим?")
bot.register_next_step_handler(input, func)
else:
markup = types.InlineKeyboardMarkup()
final_message = f"<b>{message.from_user.first_name}</b>, нажми на кнопки, и получи ответ или напиши"
bot.send_message(message.chat.id, final_message, parse_mode="html", reply_markup=markup)
bot.polling(none_stop=True)