При реализации миграции между сессиями через QR-код в Telethon столкнулся с проблемой:
Создаю новую сессию через ExportLoginToken → AcceptLoginToken → ImportLoginToken
Новая сессия успешно авторизуется
При попытке закрыть старую сессию (любым способом: ResetAuthorizationRequest, LogOut, или ResetAuthorizations) новая сессия тоже становится невалидной
async def main():
# Авторизованный клиент (старая сессия)
await old_client.start()
# Новый клиент
await new_client.connect()
# 1. Экспорт токена
export = await new_client(functions.auth.ExportLoginTokenRequest(
api_id=api_id,
api_hash=api_hash
))
# 2. Подтверждение на старом клиенте
await old_client(functions.auth.AcceptLoginTokenRequest(export.token))
# 3. Импорт токена
await new_client(functions.auth.ImportLoginTokenRequest(export.token))
# 4. Проверка новой сессии (успешно)
me = await new_client.get_me()
print(f"Новая сессия: {me.phone}")
# 5. Проблема: закрытие старой сессии убивает новую
await old_client(functions.auth.ResetAuthorizationsRequest())
# Теперь new_client тоже не авторизован
Как правильно закрыть только старую сессию после миграции через QR-код, чтобы новая осталась активной?
Есть ли рабочие примеры реализации такого сценария?