@bot.message_handler

Хотел написать телеграм бота с викториной, но почему-то, когда ввожу вариант ответа, он присваевает его переменной name и цик начинается заново. Изучаю python пару дней. Помогите плиз

import telebot
bot = telebot.TeleBot("токен", parse_mode=None)


@bot.message_handler(commands=['start'])
def send_message(message):
    bot.reply_to(message, "Ведите фамилию!")
    
@bot.message_handler(content_types=["text"])
def send_message(message):  

    name = (message.text)

    answer = " Привет! " + name

    bot.send_message(message.chat.id, answer)

    print(name + " в игре!")

    bot.send_message(message.chat.id, "окей, первый вопрос:")

    bot.send_message(message.chat.id, "тут должен быть вопрос")

    bot.send_message(message.chat.id, "тут 3 варианта ответов")
    
@bot.message_handler(content_types=["text"])
def send_message(message):
    
    bot.send_message(message.chat.id, "окей, дальше")
    if message.text == 3:
        score + 1
        print(name + "получает 1 балл!")

    bot.send_message(message.chat.id, "окей, дальше")     
        

bot.polling()

Ответы (1 шт):

Автор решения: Violet

Дело в том, что вы используете два handler (обработчика) с одним типом - text. После ввода ответа у вас срабатывает первый (верхний) из-за этого ответ и присваивается переменной name.

На скорую руку я прикинул код:

@bot.message_handler(commands=['start'])
def start(message):
    msg = bot.reply_to(message, "Ведите фамилию!")
    bot.register_next_step_handler(msg, start_2)


def start_2(message):
    msg = bot.send_message(message.chat.id, 'Привет! {}\nпервый вопрос:'.format(message.text))
    bot.register_next_step_handler(msg, answer)


def answer(message):
    score = 0
    if message.text == '3':
        score += 1
        bot.send_message(message.chat.id, 'получаете {} балл!\nокей, дальше'.format(score))


bot.polling(none_stop=True, interval=0)

Здесь используется bot.register_next_step_handler для ожидания ввода от пользователя с переходом на другой шаг. https://ru.stackoverflow.com/a/1254764/234134

→ Ссылка