892f39401c
- Add NewSessionScenario that walks the Telegram wizard: single game, title, skip description/cover, D&D 5e, 4h, datetime, capacity, online format, join link, public visibility, publish, confirm - Add ClickInlineButtonAsync / ClickInlineButtonByTextAsync to TelegramUserClient - Add local WizardCallback/Step constants mirroring GmRelay.Shared wizard wire format - Program.cs now runs full flow: group setup + /newsession + cleanup Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
49 lines
1.4 KiB
C#
49 lines
1.4 KiB
C#
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));
|
|
}
|