@Intowi

Как сделать переход к проверке пароля?

Решил сделать бота для телеги, аля таскменеджер и для проверки пароля пока ввел тестовый 'Pass', дабы проверить функционирование, но при выборе входа в систему и вводе любых данных(верных или нет) переходит на 'произошла непредвиденная ошибка'. Подскажите как пофиксить. Заранее спасибо

import telebot
import config
from telebot import types

bot = telebot.TeleBot(config.TOKEN)


@bot.message_handler(commands=['start'])
def welcome(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton('Вход в систему')
    item2 = types.KeyboardButton('Выход')

    markup.add(item1, item2)

    bot.send_message(message.chat.id, 'Добро пожаловать', reply_markup=markup)


@bot.message_handler(content_types=['text'])
def autorization(message):
    if message.text == 'Вход в систему':
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        exit = types.KeyboardButton('Выход')
        markup.add(exit)
        bot.send_message(message.chat.id, 'Введите ключ для входа в систему', reply_markup=markup)

        @bot.message_handler(content_types=['text'])
        def login(message):
            if message.text == 'Pass':
                bot.send_message(message.chat.id, 'Вход успешен')
            else:
                bot.send_message(message.chat.id, 'Пароль неверен')

    elif message.text == 'Выход':
        markup = types.ReplyKeyboardRemove()
        bot.send_message(message.chat.id, 'Всего хорошего', reply_markup=markup)
    else:
        bot.send_message(message.chat.id, 'Произошла непредвиденная ошибка')




if __name__ == "__main__":
    bot.polling(none_stop=True)
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ответы на вопрос 1
StellandYT
@StellandYT
Программист Python
Шалом
У Вас выдаёт "Произошла непредвиденная ошибка" тк, бот не ждёт пока вы введёте пароль, а он сразу же проходит по функции "login".

Вам нужно вместо "bot.send_message(message.chat.id, 'Введите ключ для входа в систему', reply_markup=markup)" прописать:
sent = bot.send_message(message.chat.id, 'Введите ключ для входа в систему')
bot.register_next_step_handler(sent, login)


В итоге у Вас получиться:
def autorization(message):
    if message.text == 'Вход в систему':
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        exit = types.KeyboardButton('Выход')
        markup.add(exit)
        sent = bot.send_message(message.chat.id, 'Введите ключ для входа в систему',  reply_markup=markup)
        bot.register_next_step_handler(sent, login)

def login(message):
        if message.text == 'Pass':
            bot.send_message(message.chat.id, 'Вход успешен')
        else:
            bot.send_message(message.chat.id, 'Пароль неверен')
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
iCode Москва
от 90 000 до 200 000 ₽
SwapZilla.co Сочи
от 200 000 ₽
SwapZilla.co Москва
от 200 000 ₽
06 июл. 2020, в 23:49
10000 руб./за проект
06 июл. 2020, в 23:32
35000 руб./за проект