Ошибка регистрации в боте telegram. ОШИБКА - TeleBot: «Произошла ключевая ошибка, args = (user_id,) - PullRequest
0 голосов
/ 15 марта 2020

Существует регистрация для бота-телеграммы, но после ввода первого значения (имени) произошла ошибка "ОШИБКА - TeleBot:" KeyError, args = (75 ******* (здесь указан user_id) ), залито в него раньше)) все работало хорошо, но после расширения входного значения все умерло. Я был бы рад услышать, что не так с кодом, так как я пишу всего 3 дня.

import requests, telebot, logging
from telebot import types, apihelper
from telegram import Update
from telegram.ext import Updater, CommandHandler
from telegram import ReplyKeyboardMarkup

import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    passwd="0000",
    port="3306",
    database="work_bot_telegram"
)

@bot.message_handler(commands=['help'])
def help_list(message):
    a = ['/start', '/reg_employer', '/help', '/url', "/switch"]
    for i in a:
        bot.send_message(message.chat.id, i)


class User:
    def __init__(self, first_name):
        self.first_name = first_name
        self.last_name = None
        self.middle_name = None
        self.phone_number = None
        self.subjects_civil_law = None
        self.region = None
        self.services_provided = None


@bot.message_handler(commands=['reg_employer'])  # получение команды
def send_welcome(message):
    msg = bot.send_message(message.chat.id, "Введите Ваше имя: ")
    bot.register_next_step_handler(msg, process_lastname_step)


def process_lastname_step(message):
    user_id = message.from_user.id
    user_data[user_id] = User(message.text)
    msg = bot.send_message(message.chat.id, "Введите Вашу фамилию: ")
    bot.register_next_step_handler(msg, process_middlename_step)


def process_middlename_step(message):
    user_id = message.from_user.id
    user_data[user_id] = User(message.text)
    msg = bot.send_message(message.chat.id, "Введите Вашу отчество: ")
    bot.register_next_step_handler(msg, process_phonenumber_step)


def process_phonenumber_step(message):
    user_id = message.from_user.id
    user_data[user_id] = User(message.text)
    msg = bot.send_message(message.chat.id, "Введите Вашу номер телефона: ")
    bot.register_next_step_handler(msg, process_subjects_civil_law_step)


def process_subjects_civil_law_step(message):
    user_id = message.from_user.id
    user_data[user_id] = User(message.text)
    msg = bot.send_message(message.chat.id, "Укажите вы являетесь юридическим или физическим лицом: ")
    bot.register_next_step_handler(msg, process_region_step)


def process_region_step(message):
    user_id = message.from_user.id
    user_data[user_id] = User(message.text)
    msg = bot.send_message(message.chat.id, "Укажите Ваш город: ")
    bot.register_next_step_handler(msg, process_services_provided_step)


def process_services_provided_step(message):
    user_id = message.from_user.id
    user_data[user_id] = User(message.text)
    msg = bot.send_message(message.chat.id,
                           "Каким видом деятельности вы занимаетесь (стройка, программирования, разработка систем, оказание услуг): ")
    bot.register_next_step_handler(msg, process_lastname_step)


def process_lastname_step(message):
    #try:
        user_id = message.from_user.id
        user = user_data[user_id]

        sql = "INSERT INTO users_employer (first_name, last_name, middle_name, phone_number, subjects_civil_law, region, services_provided, user_id) " \
              "VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"
        val = (
        user.first_name, user.last_name, user.middle_name, user.phone_number, user.subjects_civil_law, user.region,
        user.services_provided, user.user_id)
        mycursor.execute(sql, val)
        mydb.commit()
        bot.send_message(message.chat.id, "Вы зарегистрированы")
    #except Exception as e: \
            #bot.send_message(message.chat.id, "Вы уже зарегистрированы")


@bot.message_handler(content_types=['text'])
def get_text_messages(message):
    if message.text == "Привет":
        bot.send_message(message.from_user.id, "Привет, чем я могу тебе помочь?")
    else:
        bot.send_message(message.from_user.id, "Я тебя не понимаю.")


bot.polling()
...