Bobik4556Ttft
@Bobik4556Ttft
Тот ещё Мухтар

Как исправить ошибку бота, связанную с отстутсвием атрибута user_name?

Точка входа - файл main.py - https://pastebin.com/vEwg4MxF
db.py - https://pastebin.com/VwAuu2pi
User.py - https://pastebin.com/PzLMkVjq
При команде /start ,
Выполнение приходит в main, идет в start.
@bot.message_handler(commands=["start"])
def start(m, res=False):
    user = User(m.from_user.id)
    try:
        if user.is_confirm_user:
            bot.clear_step_handler_by_chat_id(chat_id=m.chat.id)
            if user.has_no_reg_data():
                new_user.init(m, user)
            else:
                helpers.bot_message_send(user, m, scenary_main.get_hello(user.user_info.name),
                                         keyboards.main_menu(), 'html')
                helpers.bot_message_send(user, m, scenary_main.get_menu_text(user), keyboards.menu(), "html")
        else:
            user.new_user(bot, m.chat.id, m.from_user.id, m.from_user.username, m.from_user.language_code, m.text)
            new_user.init(m, user)

    except Exception as e:
        helpers.logs('start:\nПользователь:' + str(user.id) + ' ' + user.user_info.user_name + '\n' + str(e.args))

В результате обнаруживается, что пользователя не существует, происходит попытка создать нового пользователя. С помощью метода класса new_user()

Вызывается метод класса user.new_user(...)
Выполнение заходит в метод new_user(...)
def new_user(self, bot, chat_id, user_tg_id, user_name, language_code, link):
        self._model.chat_id = chat_id
        self._model.user_tg_id = user_tg_id

        result = asyncio.run(db.insert_user(self._model))
        self._model = result._data[0]

        self.user_info = User_info(self._model, user_name, language_code, True)

        self.status = enums.user_status.user
        self.checkReferal(bot, link)

там доходит до result = asyncio.run(db.insert_user(self._model)), insert эта метод файла db.
Заходит в insert_user()
и там на инструкции response = await session.execute(...)
response = await session.execute(
                sa.insert(Users).values(
                    user_tg_id=obj.user_tg_id,
                    chat_id=obj.chat_id,
                    balance=obj.balance,
                    referer_id=obj.referer_id,
                    registration_date=datetime.now(),
                    referer_link=obj.referer_link,
                    last_update=datetime.now(),
                    scenary_id=obj.scenary_id,
                    is_solvent=obj.is_solvent,
                    is_banned=obj.is_banned,
                    last_step_handler=obj.last_step_handler,
                    last_anoncement_id=obj.last_anoncement_id,
                )
            )

всё ломится, заходит в except и в логах бота выдаёт.
Poller:("'NoneType' object has no attribute 'user_name'",)


как исправить ошибку?
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
21 мая 2024, в 08:34
2000 руб./в час
21 мая 2024, в 08:31
20000 руб./за проект
21 мая 2024, в 04:44
500 руб./за проект