@Far-man

Как написать опросник с вариантами ответа от 0 до 5, что бы условие выполнялось корректно?

Пытаюсь создать телеграмм бота который проводит опрос. Столкнулся с проблемой, что не могу настроить условие в функции таким образом, что бы выполнялись разные части кода(условия), так как вводимые переменные (пользователями) одинаковые, и все время выполнялся первый участок кода(elif), дале нашел способ для переходи дальше по условию, добавив переменную х и увеличивая ее на 1 на каждом этапе. Сам мой вопрос заключается в том, что пользователь если не доделывает тест, то программа не сбрасывает переменную Х, и другой пользователь при вводе ответа от 0 до 5, уже попадает не в начало выполнения кода, а туда где остановился предыдущий пользователь. Как можно сделать что бы для каждого отдельно отрабатывался код или как поступить?

import telebot
from telebot import types # для указание типов
import config

bot = telebot.TeleBot('Token');

x = 0

@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("Да")
    btn2 = types.KeyboardButton("Нет")
    
    markup.add(btn1, btn2)
    
    bot.send_message(message.chat.id, text="Здравствуйте, {0.first_name}! \
Я  бот из компании CHARUEL и я собираю информацию для оценки компании бывшими сотрудниками. \
Компания CHARUEL благодарит Вас за работу и просит ответить на несколько вопросов. \
Готовы ли Вы ответить на вопросы?".format(message.from_user), reply_markup=markup)
    
    



@bot.message_handler(content_types=['text'])
def func(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("0")
    btn2 = types.KeyboardButton("1")
    btn3 = types.KeyboardButton("2")
    btn4 = types.KeyboardButton("3")
    btn5 = types.KeyboardButton("4")
    btn6 = types.KeyboardButton("5")
    markup.add(btn1, btn2, btn3,btn4,btn5,btn6)
    global x
    if message.text == "Нет":
        bot.send_message(message.from_user.id,"Компания CHARUEL выражает Вам свою признательность и желает дальнейших успехов!")
    elif message.text == "Да":
        bot.send_message(message.chat.id, text="Оцените условие труда от 0 до 5", reply_markup=markup)
    elif message.text == "0" and x ==0:
        bot.send_message(message.chat.id, text="Оцените уровень заработной платы от 0 до 5")
        x = x + 1
    elif message.text == "1"and x ==0:
        bot.send_message(message.chat.id, text="Оцените уровень заработной платы от 0 до 5")
        x = x + 1
    elif message.text == "2"and x ==0:
        bot.send_message(message.chat.id, text="Оцените уровень заработной платы от 0 до 5")
        x = x + 1
    elif message.text == "3"and x ==0:
        bot.send_message(message.chat.id, text="Оцените уровень заработной платы от 0 до 5")
        x = x + 1
    elif message.text == "4"and x ==0:
        bot.send_message(message.chat.id, text="Оцените уровень заработной платы от 0 до 5")
        x = x + 1
    elif message.text == "5"and x ==0:
        bot.send_message(message.chat.id, text="Оцените уровень заработной платы от 0 до 5")
        x = x + 1
    elif message.text == "0" and x ==1:
        bot.send_message(message.chat.id, text="Оцените уровень социального пакета от 0 до 5")
        x = x + 1
    elif message.text == "1"and x ==1:
        bot.send_message(message.chat.id, text="Оцените уровень социального пакета от 0 до 5")
        x = x + 1
    elif message.text == "2"and x ==1:
        bot.send_message(message.chat.id, text="Оцените уровень социального пакета от 0 до 5")
        x = x + 1
    elif message.text == "3"and x ==1:
        bot.send_message(message.chat.id, text="Оцените уровень социального пакета от 0 до 5")
        x = x + 1
    elif message.text == "4"and x ==1:
        bot.send_message(message.chat.id, text="Оцените уровень социального пакета от 0 до 5")
        x = x + 1
    elif message.text == "5"and x ==1:
        bot.send_message(message.chat.id, text="Оцените уровень социального пакета от 0 до 5")
        x = x + 1
    elif message.text == "0" and x ==2:
        bot.send_message(message.chat.id, text="Оцените взаимоотношения с руководством от 0 до 5")
        x = x + 1
    elif message.text == "1"and x ==2:
        bot.send_message(message.chat.id, text="Оцените взаимоотношения с руководством от 0 до 5")
        x = x + 1
    elif message.text == "2"and x ==2:
        bot.send_message(message.chat.id, text="Оцените взаимоотношения с руководством от 0 до 5")
        x = x + 1
    elif message.text == "3"and x ==2:
        bot.send_message(message.chat.id, text="Оцените взаимоотношения с руководством от 0 до 5")
        x = x + 1
    elif message.text == "4"and x ==2:
        bot.send_message(message.chat.id, text="Оцените взаимоотношения с руководством от 0 до 5")
        x = x + 1
    elif message.text == "5"and x ==2:
        bot.send_message(message.chat.id, text="Оцените взаимоотношения с руководством от 0 до 5")
        x = x + 1
    else:
        bot.send_message(message.from_user.id, "Компания Charuel благодарит Вас за уделенное время и желает Вам успехов!")
        x = 0
      

bot.polling(none_stop=True)
  • Вопрос задан
  • 284 просмотра
Пригласить эксперта
Ответы на вопрос 1
Wispik
@Wispik
Надо использовать register_next_step_handler() , вот почитай хотя бы это
https://habr.com/ru/post/350648/

Ну и выкинуть глобал из кода куда подальше
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы