Ожидание ответа от пользователя (Telegram Bot)
Нужно, чтобы бот ждал, пока пользователь не напишет ответ на свой вопрос
Программа работает, но при запуске , она просто проскакивает все вопросы (все сообщения идут разом)
fap="logs.json"
bot=telebot.TeleBot(TOKEN)
@bot.edited_message_handler(content_types=["text"])
@bot.message_handler(content_types=["text"]) #Бот ждет сообщение и если происходит событие - текст, он выполняет функцию
def echo_digits(message:Message):
def task_0(message): # эта часть не доделана
answer.append(message.text)
def task_1(message): # эта часть не доделана
answer.append(message.text)
def task_2 (message):
answer.append(message.text)
def task_23 (message):
pass
def test(task):
if task==0:
msg= bot.send_message (message.chat.id, "dummy text here")
bot.register_next_step_handler(msg,task_0) # должен перекидывать пользователю к след вопросу и ждать его ответа (что он и не делает)
task+=1
test(task)
elif task==1:
msg = bot.reply_to(message, "And here too.")
bot.register_next_step_handler(msg,task_1)
task+=1
test(task)
elif task==2:
markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
markup.add('Да', 'Нет')
msg = bot.reply_to(message, "Tri-Dva-Odin", reply_markup=markup)
bot.register_next_step_handler(msg, task_2)
task+=1
test(task)
elif task==3:
markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
markup.add('Да', 'Нет')
msg = bot.reply_to(message, "Raz-Dva-Tri", reply_markup=markup)
bot.register_next_step_handler(msg, task_2)
task+=1
test(task)
elif task==23: # эта часть еще не готова
msg = bot.send_message(message.chat.id, "Давай узнаем твои результаты")
bot.register_next_step_handler(msg, task_23)
else :
bot.send_message(message.chat.id, "sorry snake")
ID= str(message.from_user.id) # ID пользователя
if message.from_user:
with open (fap, "r") as f:
firs=json.load(f)
if ID in firs:
pass # думаю здесь ничего не надо вкючать
else:
with open (fap, "w") as f: #идет запись пользователя в файл
firs[ID]["task"]=0
firs[ID]["answers"]=[]
json.dump(firs,f)
task=firs[ID]["task"] # нужен для номера задания
answer=firs[ID]["answers"]
if task==23:
pass
else:
test(task)