Как вариант, можно реализовать что-то на подобии этого. Оно не идеально, но полностью расскрывает Ваш вопрос и является рабочим. В целом, если варианты есть ограниченными, то лучше будет использовать кнопки для пользователей.
Вот код решения.
import telebot
bot = telebot.TeleBot('{Ваш токен}')
# Списки с возможными "правильными ответами" на Ваши вопросы
gender_list = ['мужской', 'женский', 'боевой вертолет']
hair_color_list = ['белый', 'черный', 'рыжий']
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, "Привет! Какой у тебя пол?")
@bot.message_handler(func=lambda message: True)
def echo_all(message):
if message.text.lower() in gender_list:
bot.reply_to(message, "Вы выбрали пол: {}".format(message.text))
bot.send_message(message.chat.id, "А какой у тебя цвет волос?")
elif message.text.lower() in hair_color_list:
bot.reply_to(message, "Вы выбрали цвет волос: {}".format(message.text))
# тут можно выполнить какие-то действия с выбранными параметрами
else:
bot.reply_to(message, "Я не понимаю, что ты написал. Попробуй еще раз.")
bot.polling()
Еще один вариант, с использованием состояния диалога в переменной user_dict
import telebot
bot = telebot.TeleBot('{Ваш токен}')
# Списки с возможными "правильными ответами" на Ваши вопросы
gender_options = ['мужской', 'женский', 'боевой вертолет']
hair_color_options = ['белый', 'черный', 'рыжий']
user_dict = {}
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, "Привет! Какой у тебя пол? Варианты ответа: {}".format(', '.join(gender_options)))
user_dict[message.chat.id] = 'gender'
@bot.message_handler(func=lambda message: True)
def echo_all(message):
if user_dict.get(message.chat.id) == 'gender':
if message.text.lower() in gender_options:
bot.reply_to(message, "Вы выбрали пол: {}".format(message.text))
bot.send_message(message.chat.id, "А какой у тебя цвет волос? Варианты ответа: {}".format(', '.join(hair_color_options)))
user_dict[message.chat.id] = 'hair_color'
else:
bot.reply_to(message, "Я не понимаю, что ты написал. Попробуй еще раз. Варианты ответа: {}".format(', '.join(gender_options)))
elif user_dict.get(message.chat.id) == 'hair_color':
if message.text.lower() in hair_color_options:
bot.reply_to(message, "Вы выбрали цвет волос: {}".format(message.text))
# тут можно выполнить какие-то действия с выбранными параметрами
else:
bot.reply_to(message, "Я не понимаю, что ты написал. Попробуй еще раз. Варианты ответа: {}".format(', '.join(hair_color_options)))
user_dict[message.chat.id] = None
bot.polling()