Bot posts name the campaign's timezone #1167

Closed
opened 2026-10-13 03:24:55 +00:00 by claude-bot · 1 comment
Collaborator

Owner request, 12 Oct 2026, for 4.5.1.

The bot's posts show times as Discord timestamps (faces.when, <t:..:F>): each reader sees their own local time and no zone is named. The RSVP nudge (#1158) now shows the campaign's time with its zone and the reader's own time in brackets:

Tuesday 13 October at 8:00 pm CDT (9:00 pm your time)

Do the same on every bot post that shows a session time: the poll and its slots, "session is on", reminders, cancelled, at risk, the slate-changed post, and the vote reminder.

Approach

  • The backend adds the campaign's IANA timezone to each event's extra (additive; bot_post_facts.session_facts is the one place).
  • One helper in faces.py, shared with the nudge: resolve with zoneinfo inside a try, render weekday, day, month, 12-hour time and the abbreviation; the reader's local time follows in brackets as a Discord timestamp. The zone name itself is never printed. Missing or unknown zone falls back to today's Discord timestamp.
  • Where a post shows a relative time ("in 3 days"), keep it.
  • Poll slots are a list: keep each line short (zone once in the heading or on each line, whichever reads better; decide with a render).

Built after #1158 lands, together with #1166, since all three touch faces.py.

Owner request, 12 Oct 2026, for 4.5.1. The bot's posts show times as Discord timestamps (`faces.when`, `<t:..:F>`): each reader sees their own local time and no zone is named. The RSVP nudge (#1158) now shows the campaign's time with its zone and the reader's own time in brackets: > Tuesday 13 October at 8:00 pm CDT (9:00 pm your time) Do the same on every bot post that shows a session time: the poll and its slots, "session is on", reminders, cancelled, at risk, the slate-changed post, and the vote reminder. **Approach** - The backend adds the campaign's IANA timezone to each event's `extra` (additive; `bot_post_facts.session_facts` is the one place). - One helper in `faces.py`, shared with the nudge: resolve with `zoneinfo` inside a try, render weekday, day, month, 12-hour time and the abbreviation; the reader's local time follows in brackets as a Discord timestamp. The zone name itself is never printed. Missing or unknown zone falls back to today's Discord timestamp. - Where a post shows a relative time ("in 3 days"), keep it. - Poll slots are a list: keep each line short (zone once in the heading or on each line, whichever reads better; decide with a render). Built after #1158 lands, together with #1166, since all three touch `faces.py`.
Author
Collaborator

Shipped in 4.5.1 (PR #1169, with #1166), on prod since 13 Oct. The owner saw the reminders arrive with the campaign zone named. Closing, and with it the v4.5.1 milestone (17 Oct 2026).

Shipped in 4.5.1 (PR #1169, with #1166), on prod since 13 Oct. The owner saw the reminders arrive with the campaign zone named. Closing, and with it the v4.5.1 milestone (17 Oct 2026).
Sign in to join this conversation.
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.

Dependencies

No dependencies set

Reference
rbrooks/Quest-Board#1167
No description provided.