Let testers manage their participation through Telegram buttons #70

Open
opened 2026-11-01 20:12:37 +00:00 by viacheslavshuka · 0 comments

Outcome

Testers need basic participation actions without reopening the website. Connect Telegram buttons to the same application commands used by website registration.

Acceptance criteria

  • A verified tester can request firm or tentative participation, withdraw before start, and change commitment through buttons.
  • Responses distinguish confirmed, pending approval, tentative, waiting, offered, and inactive states. Tentative interest and pending approval do not promise a seat or count toward quorum.
  • Waiting-list offers require explicit acceptance by the intended tester. Messages show the current absolute deadline. Decline and expiry do not create an organizer rejection ban.
  • Accepting a vacancy offer or rescheduling reconfirmation checks current capacity, permission, and action validity. Old or replaced buttons cannot accept obsolete terms.
  • The bot respects the previous-tester admission policy, organizer rejection, and moderation restrictions through the shared core. It cannot create a second registration or overbook a session.
  • At the scheduled start, new applications and unconfirmed-to-confirmed transitions stop. Inactive historical records do not offer a working Confirm button.
  • After start, leaving uses the separate participation action and preserves attendance and familiarity history. It does not masquerade as a pre-start withdrawal.
  • Relevant warnings about another future booking use the tester's own data. The bot does not expose private details to unrelated organizers.
  • Completed action responses show the server's resulting state. Network uncertainty or a repeated callback cannot fabricate a successful booking.
  • Accepting or declining an associated notification action marks that inbox item read. Merely receiving the Telegram message does not.

Validation design

Run equivalent website and bot commands against the same core fixtures and compare persisted outcomes. Include concurrent final-seat requests, expired and replaced offers, another person's callback, a duplicate update, and the scheduled-start boundary. Verify no capacity, history, or read-state changes after rejected actions.

Dependencies

## Outcome Testers need basic participation actions without reopening the website. Connect Telegram buttons to the same application commands used by website registration. ## Acceptance criteria - A verified tester can request firm or tentative participation, withdraw before start, and change commitment through buttons. - Responses distinguish confirmed, pending approval, tentative, waiting, offered, and inactive states. Tentative interest and pending approval do not promise a seat or count toward quorum. - Waiting-list offers require explicit acceptance by the intended tester. Messages show the current absolute deadline. Decline and expiry do not create an organizer rejection ban. - Accepting a vacancy offer or rescheduling reconfirmation checks current capacity, permission, and action validity. Old or replaced buttons cannot accept obsolete terms. - The bot respects the previous-tester admission policy, organizer rejection, and moderation restrictions through the shared core. It cannot create a second registration or overbook a session. - At the scheduled start, new applications and unconfirmed-to-confirmed transitions stop. Inactive historical records do not offer a working Confirm button. - After start, leaving uses the separate participation action and preserves attendance and familiarity history. It does not masquerade as a pre-start withdrawal. - Relevant warnings about another future booking use the tester's own data. The bot does not expose private details to unrelated organizers. - Completed action responses show the server's resulting state. Network uncertainty or a repeated callback cannot fabricate a successful booking. - Accepting or declining an associated notification action marks that inbox item read. Merely receiving the Telegram message does not. ## Validation design Run equivalent website and bot commands against the same core fixtures and compare persisted outcomes. Include concurrent final-seat requests, expired and replaced offers, another person's callback, a duplicate update, and the scheduled-start boundary. Verify no capacity, history, or read-state changes after rejected actions. ## Dependencies - [#45: Browse tests and open website forms through the Telegram bot](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/45). Supplies verified and replay-safe bot updates. - [#52: Register individual testers with approval, tentative status, and capacity checks](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/52). Supplies participation commands and resulting states. - [#58: Offer available places to waiting testers with explicit acceptance](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/58). Supplies vacancy offer acceptance and expiry. - [#64: Reconfirm protected places when test commitments change](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/64). Supplies rescheduling reconfirmation. - [#22: Keep a durable notification inbox with current action status](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/22). Supplies read-state updates after action resolution. - [#67: Show group familiarity and apply the previous-tester admission setting](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/67). Provides the previous-tester admission rule and future-booking warning. - [#69: Restrict participation and organizing capabilities with reversible expiry](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/69). Provides current moderation restrictions for participation commands. ## Related work - [#29: Deliver Telegram notifications with bounded retries and current permissions](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/29) - [#23: Let users control Telegram delivery, reminders, and digests](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/23)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
viacheslavshuka/quorum#70
No description provided.