Точка входа - файл 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'",)
как исправить ошибку?