feat(bot): add online/offline wizard locations
PR Checks / test-and-build (pull_request) Successful in 15m52s

Add format and location steps to the Telegram /newsession wizard, persist offline addresses in sessions.location_address, and render online links/offline addresses in schedule messages.

Bump version to 3.10.0.
This commit is contained in:
2026-06-10 11:29:25 +03:00
parent bbd58142db
commit 014b5edd31
36 changed files with 460 additions and 49 deletions
@@ -82,7 +82,7 @@
</button>
</form>
<div class="nav-version">v3.9.9</div>
<div class="nav-version">v3.10.0</div>
</div>
</Authorized>
<NotAuthorized>
+1 -1
View File
@@ -1897,7 +1897,7 @@ public sealed class SessionService(
await using var conn = await dataSource.OpenConnectionAsync();
var sessions = (await conn.QueryAsync<SessionBatchDto>(
"SELECT id AS SessionId, scheduled_at AS ScheduledAt, status AS Status, max_players AS MaxPlayers, join_link AS JoinLink FROM sessions WHERE batch_id = @BatchId ORDER BY scheduled_at",
"SELECT id AS SessionId, scheduled_at AS ScheduledAt, status AS Status, max_players AS MaxPlayers, join_link AS JoinLink, format AS Format, location_address AS LocationAddress FROM sessions WHERE batch_id = @BatchId ORDER BY scheduled_at",
new { BatchId = batchId })).ToList();
var participants = (await conn.QueryAsync<ParticipantBatchDto>(
@@ -22,7 +22,14 @@ public static class TelegramSessionBatchRenderer
if (!string.IsNullOrEmpty(session.JoinLink))
{
messageText += $"🔗 <a href=\"{System.Net.WebUtility.HtmlEncode(session.JoinLink)}\">Ссылка на игру</a>\n";
var encodedLink = System.Net.WebUtility.HtmlEncode(session.JoinLink);
messageText += $"🔗 Ссылка на игру: <a href=\"{encodedLink}\">{encodedLink}</a>\n";
}
if (string.Equals(session.Format, "Offline", StringComparison.OrdinalIgnoreCase) &&
!string.IsNullOrWhiteSpace(session.LocationAddress))
{
messageText += $"📍 Адрес: {System.Net.WebUtility.HtmlEncode(session.LocationAddress)}\n";
}
if (session.ActivePlayers.Count > 0)