Программа не ждет ответа пользователя
Делаю бота который отправляет пользователю текст на присланном боту фото. Столкнулся с тем что нужно сделать выбор языка и решил решить проблему с помощью next step handler, но программа не ждет, чтобы пользователь отправил сообщение (например rus) и сразу пытается преоброзовать текст на фото в обычный текст из-за этого возникает ошибка и программа прекращает работу
import telebot
import pytesseract
Bot_token = МОЙ ТОКЕН
bot = telebot.TeleBot(Bot_token, parse_mode= None, skip_pending=True)
tconfig = r'--oem 3 --psm 6'
def imgtotext(message, language):
image = "img.png"
result = pytesseract.image_to_string(image, config=tconfig, lang= language)
bot.send_message(message.chat.id, "".join(result))
print(message.chat.username + " | " + str(
message.chat.id) + " использовал комманду /image\n Результат: " + "".join(result))
@bot.message_handler(content_types="photo")
def asklang(message):
fi = file_info = bot.get_file(message.photo[len(message.photo) - 1].file_id)
send = bot.send_message(message.chat.id, 'language')
bot.register_next_step_handler(send, img(message, file_info=fi))
def img(message, file_info):
downloaded_file = bot.download_file(file_info.file_path)
bot.send_message(message.chat.id, "изображение обрабатывается")
msglang = str(message.text)
with open("img.png", 'wb') as new_file:
new_file.write(downloaded_file)
imgtotext(message=message, language=msglang)
bot.polling(none_stop=True)
Ответы (1 шт):
Автор решения: Ян Морозов
→ Ссылка
def imgtotext(message, language):
image = "img.png"
result = pytesseract.image_to_string(image, config=tconfig, lang=language)
bot.send_message(message.chat.id, "".join(result))
print(message.chat.username + " | " + str(
message.chat.id) + " использовал комманду /image\n Результат: " + "".join(result))
@bot.message_handler(content_types="photo")
def asklang(message):
global file_info #добавляем глобальную переменную
file_info = bot.get_file(message.photo[len(message.photo) - 1].file_id)
send = bot.send_message(message.chat.id, 'language')
bot.register_next_step_handler(send, img) # Вызываем функцию без аргументов
def img(message):
downloaded_file = bot.download_file(file_info.file_path)
bot.send_message(message.chat.id, "изображение обрабатывается")
msglang = str(message.text)
print(msglang)
with open("img.png", 'wb') as new_file:
new_file.write(downloaded_file)
imgtotext(message=message, language=msglang)
В bot.register_next_step_handler второй аргумент в виде функции не должен вызываться