using dotenv.net; using GmRelay.E2E.Runner; DotEnv.Load(new DotEnvOptions(envFilePaths: [".env"], ignoreExceptions: false)); var config = new RunnerConfig { ApiId = int.Parse(Environment.GetEnvironmentVariable("api_id")!), ApiHash = Environment.GetEnvironmentVariable("api_hash")!, PhoneNumber = Environment.GetEnvironmentVariable("phone_number")!, BotUsername = Environment.GetEnvironmentVariable("TELEGRAM_BOT_USERNAME")!, BotToken = Environment.GetEnvironmentVariable("TELEGRAM_BOT_TOKEN")!, }; using var client = new TelegramUserClient(config); await client.ConnectAsync(); var setup = new GroupSetupScenario(client, config); ScenarioResult? result = null; try { result = await setup.RunAsync(); var newSession = new NewSessionScenario(client, config); var inputs = new NewSessionInputs( Title: "E2E One-Shot Adventure", ScheduledAtMoscow: DateTime.UtcNow.AddDays(7).AddHours(3).ToString("dd.MM.yyyy HH:mm", System.Globalization.CultureInfo.InvariantCulture), MaxPlayers: 5, JoinLink: "https://example.com/join-e2e"); await newSession.RunAsync(result.Group, inputs); Console.WriteLine("Full scenario completed successfully."); } catch (Exception ex) { Console.WriteLine($"Scenario failed: {ex.Message}"); throw; } finally { if (result is not null) { await setup.CleanupAsync(result); } await Task.Delay(TimeSpan.FromSeconds(2)); }