Telegram Bot используя Django 3.2.6, pyTelegramBotAPI 4.0.0. Apache 2.2.29. Проблема с register_next_step_handler

Cервер использует сертификат от Let’s Encrypt. Бот обрабатывает пошаговый обработчик, однако работоспособность заканчивается на первом шаге. По всей видимости это связанно с переменной:

user_dict = {}

После первого шага переменная становиться пустой и продолжение пошагового обработчика невозможно. Подскажите, пожалуйста как исправить это? Планирую пошаговый обработчик записывать в бд, однако как и запись в бд пошагово, также и отдельным классом не работает.

Файл views.py

from django.shortcuts import render
from django.conf import settings
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
import requests
import telebot
from telebot import apihelper, types
import logging
logger = logging.getLogger(__name__)

WEBHOOK = 'https://exemple.com'
bot = telebot.TeleBot(settings.TOKEN, threaded=False,  parse_mode='HTML')

@csrf_exempt
def index(request):
    if request.method != 'POST':
        return render(request, 'main/index.html')
    if request.META.get('CONTENT_TYPE') != 'application/json':
        return render(request, 'main/index.html')
    json_string = request.body.decode('utf-8')
    update = telebot.types.Update.de_json(json_string)
    logger.info('Update: %s', update)
    bot.process_new_updates([update])
    return HttpResponse(status=200)

text_messages = {
    'welcome':
        'Привет! Для использования бота, требуется зарегистрироваться.\n\n<b>Как вы хотите зарегистрироваться?</b>',
    'private_person':
        '<b>Вы будете зарегистрированы как физическое лицо.</b>\nСледуйте инструкции ниже.',
    'company':
        '<b>Вы будете зарегистрированы как юридическое лицо.</b>\n Следуйте инструкции ниже.',
}
registration_messages = {
    'first_name':
        'Введите ваше имя.',
    'last_name':
        'Введите вашу фамилию.',
}
user_dict = {}

class UserReg:
    def __init__(self, id_telegram):
        self.id_telegram = id_telegram
        self.first_name = None
        self.last_name = None

    def __repr__(self):
            return f'id_telegram: {self.id_telegram} first_name: {self.first_name} last_name: {self.last_name}'

btn_private_person = types.InlineKeyboardButton(text='Физическое лицо', callback_data='private_person')
btn_company = types.InlineKeyboardButton(text='Юридическое лицо', callback_data='company')



@bot.message_handler(commands=['start'])
def start(message):
    markup = types.InlineKeyboardMarkup()
    markup.add(btn_private_person, btn_company)
    bot.send_message(message.chat.id, text_messages['welcome'], reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def registration(call):
    bot.edit_message_reply_markup(call.message.chat.id, call.message.message_id, reply_markup='')
    if call.data == 'private_person':
        bot.send_message(call.message.chat.id, text_messages['private_person'])
    elif call.data == 'company':
        bot.send_message(call.message.chat.id, text_messages['company'])

    msg = bot.send_message(call.message.chat.id, registration_messages['first_name'])
    bot.register_next_step_handler(msg, first_step_reg_org)


def first_step_reg_org(message):
    try:
        chat_id = message.chat.id
        user = UserReg(message.chat.id)
        user_dict[chat_id] = user
        user.first_name = message.text
        msg = bot.send_message(message.chat.id, registration_messages['last_name'])
        logger.warning('FIRST: %s', user_dict[chat_id])
        bot.register_next_step_handler(msg, second_step_reg_org)

    except Exception as e:
        bot.reply_to(message, f'Что-то пошло не так! first\n{e}')


def second_step_reg_org(message):
    try:
        chat_id = message.chat.id
        logger.warning('SECOND: %s',user_dict[chat_id])
        user = user_dict[chat_id]
        user.last_name = message.text

        bot.send_message(message.chat.id, f'Результат: \n{user.first_name}\n{user.last_name}')
    except Exception as e:
        bot.reply_to(message, f'Что-то пошло не так! second\n{e}')

bot.enable_save_next_step_handlers(delay=1, filename="./.handlers-saves/step.save")
bot.load_next_step_handlers(filename="./.handlers-saves/step.save")

bot.set_webhook(url=WEBHOOK)

Файл logs.log

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: Starting new HTTPS connection (1): api.telegram.org:443 
DATE: 19/09/2021 TIME: 10:41:54 AM

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: https://api.telegram.org:443 "GET /BOT.TOKEN/getWebhookInfo HTTP/1.1" 200 266 
DATE: 19/09/2021 TIME: 10:41:54 AM

TYPE: INFO, LOCALIZATION: views 
MESSAGE: WebHookInfo: {'url': 'https://exemple.com', 'has_custom_certificate': False, 'pending_update_count': 1, 'ip_address': '00.000.00.0', 'last_error_date': 1632024887, 'last_error_message': 'Wrong response from the webhook: 500 Internal Server Error', 'max_connections': 40, 'allowed_updates': None} 
DATE: 19/09/2021 TIME: 10:41:54 AM

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: https://api.telegram.org:443 "POST /BOT.TOKEN/sendMessage?chat_id=ID_USER&text=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%21+%D0%94%D0%BB%D1%8F+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B1%D0%BE%D1%82%D0%B0%2C+%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82%D1%81%D1%8F+%D0%B7%D0%B0%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%D1%81%D1%8F.%0A%0A%3Cb%3E%D0%9A%D0%B0%D0%BA+%D0%B2%D1%8B+%D1%85%D0%BE%D1%82%D0%B8%D1%82%D0%B5+%D0%B7%D0%B0%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%D1%81%D1%8F%3F%3C%2Fb%3E&reply_markup=%7B%22inline_keyboard%22%3A+%5B%5B%7B%22text%22%3A+%22%5Cu0424%5Cu0438%5Cu0437%5Cu0438%5Cu0447%5Cu0435%5Cu0441%5Cu043a%5Cu043e%5Cu0435+%5Cu043b%5Cu0438%5Cu0446%5Cu043e%22%2C+%22callback_data%22%3A+%22private_person%22%7D%2C+%7B%22text%22%3A+%22%5Cu042e%5Cu0440%5Cu0438%5Cu0434%5Cu0438%5Cu0447%5Cu0435%5Cu0441%5Cu043a%5Cu043e%5Cu0435+%5Cu043b%5Cu0438%5Cu0446%5Cu043e%22%2C+%22callback_data%22%3A+%22company%22%7D%5D%5D%7D&parse_mode=HTML HTTP/1.1" 200 1319 
DATE: 19/09/2021 TIME: 10:41:54 AM

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: Starting new HTTPS connection (1): api.telegram.org:443 
DATE: 19/09/2021 TIME: 10:41:57 AM

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: https://api.telegram.org:443 "GET /BOT.TOKEN/getWebhookInfo HTTP/1.1" 200 266 
DATE: 19/09/2021 TIME: 10:41:57 AM

TYPE: INFO, LOCALIZATION: views 
MESSAGE: WebHookInfo: {'url': 'https://exemple.com', 'has_custom_certificate': False, 'pending_update_count': 1, 'ip_address': '00.000.00.0', 'last_error_date': 1632024887, 'last_error_message': 'Wrong response from the webhook: 500 Internal Server Error', 'max_connections': 40, 'allowed_updates': None} 
DATE: 19/09/2021 TIME: 10:41:57 AM

TYPE: INFO, LOCALIZATION: views 
MESSAGE: Update: {'update_id': 52392613, 'message': None, 'edited_message': None, 'channel_post': None, 'edited_channel_post': None, 'inline_query': None, 'chosen_inline_result': None, 'callback_query': {'id': '5231228019845620169', 'from_user': <telebot.types.User object at 0x7f4555420820>, 'message': <telebot.types.Message object at 0x7f455547b3d0>, 'inline_message_id': None, 'chat_instance': '-8056055160872487116', 'data': 'private_person', 'game_short_name': None}, 'shipping_query': None, 'pre_checkout_query': None, 'poll': None, 'poll_answer': None, 'my_chat_member': None, 'chat_member': None} 
DATE: 19/09/2021 TIME: 10:41:57 AM

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: https://api.telegram.org:443 "POST /BOT.TOKEN/editMessageReplyMarkup?chat_id=ID_USER&message_id=2483 HTTP/1.1" 200 1044 
DATE: 19/09/2021 TIME: 10:41:57 AM

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: https://api.telegram.org:443 "POST /BOT.TOKEN/sendMessage?chat_id=ID_USER&text=%3Cb%3E%D0%92%D1%8B+%D0%B1%D1%83%D0%B4%D0%B5%D1%82%D0%B5+%D0%B7%D0%B0%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D1%8B++%D0%BA%D0%B0%D0%BA+%D1%84%D0%B8%D0%B7%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5+%D0%BB%D0%B8%D1%86%D0%BE.%3C%2Fb%3E%0A%D0%A1%D0%BB%D0%B5%D0%B4%D1%83%D0%B9%D1%82%D0%B5+%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8+%D0%BD%D0%B8%D0%B6%D0%B5.&parse_mode=HTML HTTP/1.1" 200 902 
DATE: 19/09/2021 TIME: 10:41:57 AM

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: https://api.telegram.org:443 "POST /BOT.TOKEN/sendMessage?chat_id=ID_USER&text=%D0%92%D0%B2%D0%B5%D0%B4%D0%B8%D1%82%D0%B5+%D0%B2%D0%B0%D1%88%D0%B5+%D0%B8%D0%BC%D1%8F.&parse_mode=HTML HTTP/1.1" 200 547 
DATE: 19/09/2021 TIME: 10:41:57 AM

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: Starting new HTTPS connection (1): api.telegram.org:443 
DATE: 19/09/2021 TIME: 10:42:04 AM

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: https://api.telegram.org:443 "GET /BOT.TOKEN/getWebhookInfo HTTP/1.1" 200 266 
DATE: 19/09/2021 TIME: 10:42:05 AM

TYPE: INFO, LOCALIZATION: views 
MESSAGE: WebHookInfo: {'url': 'https://exemple.com', 'has_custom_certificate': False, 'pending_update_count': 1, 'ip_address': '00.000.00.0', 'last_error_date': 1632024887, 'last_error_message': 'Wrong response from the webhook: 500 Internal Server Error', 'max_connections': 40, 'allowed_updates': None} 
DATE: 19/09/2021 TIME: 10:42:05 AM

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: https://api.telegram.org:443 "POST /BOT.TOKEN/sendMessage?chat_id=ID_USER&text=%D0%92%D0%B2%D0%B5%D0%B4%D0%B8%D1%82%D0%B5+%D0%B2%D0%B0%D1%88%D1%83+%D1%84%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D1%8E.&parse_mode=HTML HTTP/1.1" 200 571 
DATE: 19/09/2021 TIME: 10:42:05 AM

TYPE: WARNING, LOCALIZATION: views 
MESSAGE: FIRST: id_telegram: ID_USER first_name: Andrey last_name: None 
DATE: 19/09/2021 TIME: 10:42:05 AM

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: Starting new HTTPS connection (1): api.telegram.org:443 
DATE: 19/09/2021 TIME: 10:42:10 AM

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: https://api.telegram.org:443 "GET /BOT.TOKEN/getWebhookInfo HTTP/1.1" 200 266 
DATE: 19/09/2021 TIME: 10:42:10 AM

TYPE: INFO, LOCALIZATION: views 
MESSAGE: WebHookInfo: {'url': 'https://exemple.com', 'has_custom_certificate': False, 'pending_update_count': 1, 'ip_address': '00.000.00.0', 'last_error_date': 1632024887, 'last_error_message': 'Wrong response from the webhook: 500 Internal Server Error', 'max_connections': 40, 'allowed_updates': None} 
DATE: 19/09/2021 TIME: 10:42:10 AM

TYPE: DEBUG, LOCALIZATION: connectionpool 
MESSAGE: https://api.telegram.org:443 "POST /BOT.TOKEN/sendMessage?chat_id=ID_USER&text=%D0%A7%D1%82%D0%BE-%D1%82%D0%BE+%D0%BF%D0%BE%D1%88%D0%BB%D0%BE+%D0%BD%D0%B5+%D1%82%D0%B0%D0%BA%21+second%0AID_USER&reply_to_message_id=2488&parse_mode=HTML HTTP/1.1" 200 958 
DATE: 19/09/2021 TIME: 10:42:10 AM

Telegram Bot интерфейс ошибки

Вернуться на верх