#!/usr/bin/env python3 """ Миграция токенов из старой таблицы gamers в новую таблицу user_gamers """ import sqlite3 import sys def migrate_tokens(): """Migrate tokens from gamers table to user_gamers table""" db_path = "/app/data/lichess_bot.db" try: with sqlite3.connect(db_path) as conn: cursor = conn.cursor() # Проверяем есть ли токены в gamers cursor.execute("SELECT id, username, token FROM gamers WHERE token IS NOT NULL") gamers_with_tokens = cursor.fetchall() if not gamers_with_tokens: print("В базе нет токенов для миграции") return print(f"Найдено {len(gamers_with_tokens)} игроков с токенами") migrated = 0 for gamer_id, gamer_username, token in gamers_with_tokens: # Находим всех пользователей, отслеживающих этого игрока cursor.execute("SELECT user_id FROM user_gamers WHERE gamer_id = ?", (gamer_id,)) users = cursor.fetchall() for (user_id,) in users: # Проверяем есть ли уже токен у этого пользователя для этого игрока cursor.execute( "SELECT token FROM user_gamers WHERE user_id = ? AND gamer_id = ?", (user_id, gamer_id) ) existing_token = cursor.fetchone() if existing_token and existing_token[0]: # Токен уже есть, пропускаем continue # Переносим токен cursor.execute( "UPDATE user_gamers SET token = ? WHERE user_id = ? AND gamer_id = ?", (token, user_id, gamer_id) ) cursor.execute("SELECT username FROM telegram_users WHERE user_id = ?", (user_id,)) user_data = cursor.fetchone() user_name = user_data[0] if user_data else f"ID:{user_id}" print(f" - Перенесен токен для {gamer_username} -> пользователю @{user_name}") migrated += 1 conn.commit() print(f"\n✅ Миграция завершена. Перенесено {migrated} токенов") except Exception as e: print(f"❌ Ошибка при миграции: {e}") sys.exit(1) if __name__ == "__main__": migrate_tokens()