queue: include send time in messages

This commit is contained in:
2025-04-20 13:55:36 -04:00
parent 0928197781
commit 7cc4482965
3 changed files with 22 additions and 8 deletions

View File

@@ -125,11 +125,21 @@ func webhook(q *kgo.Client, secret []byte, errs chan<- error) http.HandlerFunc {
slog.String("broadcaster", ev.Event.Broadcaster),
slog.String("id", ev.Event.ID),
)
// Use the external clock for timestamps.
tm, err := time.Parse(time.RFC3339Nano, r.Header.Get("Twitch-Eventsub-Message-Timestamp"))
if err != nil {
log.LogAttrs(ctx, slog.LevelWarn, "bad timestamp",
slog.String("timestamp", r.Header.Get("Twitch-Eventsub-Message-Timestamp")),
slog.Any("err", err),
)
tm = time.Now()
}
msg := queue.Message{
ID: ev.Event.ID,
Channel: ev.Event.Broadcaster,
Sender: queue.Sender(secret, ev.Event.Broadcaster, ev.Event.Chatter),
Text: ev.Event.Message.Text,
ID: ev.Event.ID,
Channel: ev.Event.Broadcaster,
Sender: queue.Sender(secret, ev.Event.Broadcaster, ev.Event.Chatter),
Timestamp: tm.UnixNano(),
Text: ev.Event.Message.Text,
}
// TODO(branden): the context in the http request cancels once this
// handler returns, which means the producer doesn't relay it.