mirror of
https://github.com/FerraSoft/bottohelp.git
synced 2026-08-06 21:55:03 +00:00
102 lines
3.9 KiB
Python
102 lines
3.9 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Отладка сервиса пользователей для выявления причины возврата None
|
|
"""
|
|
|
|
import asyncio
|
|
import sys
|
|
import os
|
|
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
from services.user_service import UserService
|
|
from database.repository import UserRepository, ScoreRepository
|
|
|
|
async def debug_user_service():
|
|
"""Отладка сервиса пользователей"""
|
|
print("НАЧАЛО ОТЛАДКИ СЕРВИСА ПОЛЬЗОВАТЕЛЕЙ")
|
|
print("=" * 50)
|
|
|
|
try:
|
|
# Создаем репозитории
|
|
user_repo = UserRepository("telegram_bot.db")
|
|
score_repo = ScoreRepository("telegram_bot.db")
|
|
|
|
# Создаем сервис
|
|
user_service = UserService(user_repo, score_repo)
|
|
|
|
print("1. Тестируем репозиторий пользователей напрямую...")
|
|
|
|
# Тестируем репозиторий напрямую
|
|
user_data = user_repo.get_by_id(123456789)
|
|
print(f" Прямой запрос пользователя 123456789: {user_data}")
|
|
|
|
if user_data:
|
|
print(" Найденные колонки:")
|
|
for key, value in user_data.items():
|
|
print(f" {key}: {value}")
|
|
else:
|
|
print(" Пользователь не найден, создаем нового...")
|
|
|
|
# Создаем пользователя напрямую через репозиторий
|
|
user_data_to_create = {
|
|
'telegram_id': 123456789,
|
|
'username': 'debug_user',
|
|
'first_name': 'Debug',
|
|
'last_name': 'User',
|
|
'joined_date': None,
|
|
'last_activity': None
|
|
}
|
|
|
|
print(" Создание пользователя через репозиторий...")
|
|
created_data = user_repo.create_user(user_data_to_create)
|
|
print(f" Результат создания: {created_data}")
|
|
|
|
# Пробуем получить пользователя снова
|
|
user_data = user_repo.get_by_id(123456789)
|
|
print(f" Повторный запрос пользователя: {user_data}")
|
|
|
|
print("\n2. Тестируем сервис пользователей...")
|
|
|
|
# Тестируем сервис пользователей
|
|
user_profile = await user_service.get_or_create_user(
|
|
123456789, "debug_user", "Debug", "User"
|
|
)
|
|
|
|
print(f" Результат сервиса: {user_profile}")
|
|
|
|
if user_profile:
|
|
print(" Профиль создан успешно!")
|
|
print(f" ID: {user_profile.user_id}")
|
|
print(f" Имя: {user_profile.first_name}")
|
|
print(f" Репутация: {user_profile.reputation}")
|
|
else:
|
|
print(" Профиль не создан (None)")
|
|
|
|
print("\n3. Проверяем таблицу пользователей...")
|
|
|
|
# Проверяем таблицу напрямую
|
|
connection = user_repo._get_connection()
|
|
cursor = connection.cursor()
|
|
|
|
cursor.execute("SELECT * FROM users WHERE telegram_id = ?", (123456789,))
|
|
direct_result = cursor.fetchone()
|
|
|
|
print(f" Прямой SQL запрос: {direct_result}")
|
|
|
|
if direct_result:
|
|
print(" Колонки в таблице:")
|
|
for i, column in enumerate(cursor.description):
|
|
print(f" {column[0]}: {direct_result[i]}")
|
|
|
|
connection.close()
|
|
|
|
except Exception as e:
|
|
print(f"[ERROR] Ошибка при отладке: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
|
|
print(f"\n{'='*50}")
|
|
print("ОТЛАДКА ЗАВЕРШЕНА")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(debug_user_service()) |