Как сделать так чтобы бот отобразил сообщения пользователя у себя в сообщение?

Рейтинг: 0Ответов: 1Опубликовано: 18.02.2023

То есть я бы хотел это сделать так:

Пользователь отправил пол "Мужской", а так же к примеру цвет волос "Белый". И я хочу чтобы бот это отобразил как список, то есть: "Вы выбрали: пол: мужской; цвет волос: белый", то есть то, что написал пользователь.

Ответы

▲ 0

Как вариант, можно реализовать что-то на подобии этого. Оно не идеально, но полностью расскрывает Ваш вопрос и является рабочим. В целом, если варианты есть ограниченными, то лучше будет использовать кнопки для пользователей.

Вот код решения.

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()