Sleep Channel

v1.1.0

Handle messages in a Discord sleep-tracking channel by grounding all sleep logging and summaries on the real sleep tracker and source Discord metadata. Use w...

0· 121· 2 versions· 0 current· 0 all-time· Updated 20h ago· MIT-0

Install

openclaw skills install sleep-channel

Sleep Channel

Deterministic sleep tracker for Discord channel-based sleep logging.

Configuration

Set the following environment variables before use:

VariableRequiredDescription
SLEEP_TIMEZONEYesIANA timezone string (e.g. America/Los_Angeles, Europe/Berlin)
WORKSPACENoWorkspace root path. Defaults to $HOME/.openclaw/workspace

Core Rules

  • Treat the configured channel as the dedicated sleep channel.
  • Prefer scripts/tracker.py for all log mutations and rendering.
  • Never write now as a logged time.
  • Never derive event time from the model turn time.
  • Use the source Discord message timestamp unless the user explicitly gives a different time.
  • Convert displayed times to the user's local timezone (SLEEP_TIMEZONE).
  • Never invent entries, dates, or file contents.
  • If showing the sleep log, render from the real tracker/file output.

Commands

Add a new sleep event

For messages like: going to bed, still awake, fell asleep, awake now, resting, nap, back to sleep.

python3 scripts/tracker.py add \
  "$MESSAGE_TEXT" \
  "$CHANNEL_ID" \
  "$MESSAGE_ID" \
  "$AUTHOR_ID" \
  "$TIMESTAMP_UTC"

Correct the latest entry

When the user is clearly correcting the previous sleep event.

python3 scripts/tracker.py correct-latest \
  "$MESSAGE_TEXT" \
  "$CHANNEL_ID" \
  "$MESSAGE_ID" \
  "$AUTHOR_ID" \
  "$TIMESTAMP_UTC"

Delete the latest entry

When the user explicitly wants the latest sleep entry removed.

python3 scripts/tracker.py delete-latest

Render the sleep log

Display the current sleep log/summary.

python3 scripts/tracker.py render

Classification Hints

The tracker handles common phrases: fell asleep, awake now, got up, still awake, laying in bed, going to bed, trying to sleep, going back to sleep. Pass raw text to the tracker instead of re-parsing.

If Uncertain

Ask a short clarifying question only when intent is ambiguous:

  • Correction vs new event?
  • Delete the latest entry?
  • Explicit time override?

Files

FilePurpose
scripts/tracker.pyCanonical sleep tracker (self-contained, stdlib only)
references/CHANNEL_RULES.mdChannel setup guide (optional)
references/README.mdSystem documentation (optional)

Version tags

latestvk976cctb1v1rxtchsbk432q28s847pxf