Задать вопрос
@ssofya_m

Дана строка из слова и перевода. Бот спрашивает слово, а мы должны написать перевод. Но бот не ждет нашего ответа и двигается по коду дальше.?

У нас строка, в которой записано слово и через пробел перевод, затем следующее и тд. Этот фрагмент кода - это мини-игра, бот должен отправить в диалоге слово, а нам нужно написать перевод. Но он не ждет нашего ответа и сразу отправляет в ветку else. Как это можно исправить?

def slovar(message):
    f =  open('read.txt', 'r+', encoding='utf-8') 
    fun = f.readline()
    fun = fun.split()
    while len(fun) != 0:
        sent = bot.send_message(message.chat.id, 'Переведи слово {word}'.format(word=fun[0]))
        bot.register_next_step_hundler(sent, slovar1)
        if sent.text == fun[1]:
            bot.send_message(message.chat.id, 'Верно')
        else: 
            bot.send_message(message.chat.id, 'Не верно! Правильный ответ: {word}'.format(word = fun[1]))
        fun = fun[2:]


6093efb538256046766866.jpeg
  • Вопрос задан
  • 97 просмотров
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@Alexa2007
# -*- coding: utf-8 -*-
import telebot

bot = telebot.TeleBot('11111111111')

en = ['one','two','three']
ru = ['один','два','три']

@bot.message_handler(commands=[ 'start'])
def send_welcome(message):
    msg = bot.send_message(message.chat.id,f'Переведи слово {ru[0]}')
    bot.register_next_step_handler(msg, process_name_step, 0 )


def process_name_step(message, count=0):
    print(message.text, count, len(en))
    if message.text == en[count]:
        if count<len(en)-1:
            msg = bot.send_message(message.chat.id,f'Молодец,\nПереведи слово {ru[count+1]}')
            bot.register_next_step_handler(msg, process_name_step, count+1)
        else:
            bot.send_message(message.chat.id,'Вопросы закончились')
            count=0
    else:
        if count<len(en)-1:
            msg = bot.send_message(message.chat.id,f'Неугадал,\nПереведи слово {ru[count+1]}')
            bot.register_next_step_handler(msg, process_name_step, count+1)
        else:
            bot.send_message(message.chat.id,'Вопросы закончились')
            count = 0
    

bot.enable_save_next_step_handlers(delay=2)
bot.load_next_step_handlers()

bot.polling()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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