Skip to content
Dirework

Chat commands

All available Twitch chat commands

Once you've connected a bot account, viewers can interact with Dirework through Twitch chat commands.

The bot listens while its page is open. Copy the bot page URL from Dashboard → Bot and add it to OBS as a browser source (or keep it in a pinned browser tab). While that page is open, the bot reads chat and replies — close it and the bot goes quiet. If you regenerate the bot token, re-copy the URL.

Task commands (all viewers)

CommandDescription
!task <text>Add a new task (your first task automatically becomes your active one)
!doneMark your active task as done
!done <number>Mark a specific task by position as done
!edit <number> <text>Edit a specific task by position
!remove <number>Remove a specific task by position
!focus <number>Set a task as your active/focused task
!checkShow your current active task
!check @userShow another user's active task
!next <text>Complete your active task and start a new one
!helpShow available commands in chat

Task commands (broadcaster / mods)

CommandDescription
!clear allClear all tasks from the list
!clear doneClear all completed tasks
!clear @userRemove all tasks from a specific user

Timer commands (broadcaster / mods)

CommandDescription
!timer startStart the timer with default settings
!timer start <cycles>Start the timer with a specific cycle count
!timer pausePause the timer
!timer resumeResume the timer
!timer skipSkip the current phase
!timer resetReset the timer to idle
!timer etaShow time remaining in the current phase and the whole session

Meta commands (always available)

These commands are always enabled regardless of task or timer command settings.

CommandDescription
!dwhelpPosts a link to this commands reference page — or, if no docs URL is configured, an inline list of the available commands
!dwcommandsSame as !dwhelp

Active task and focus

When you add your first task with !task, it automatically becomes your active task. Subsequent tasks are added as pending.

  • Your active task is what shows as your current focus in the overlay and in !check responses.
  • When you complete a task with !done, the next pending task is automatically activated.
  • Use !focus <number> to manually switch which task is active. The number is the position in your task list (1-based).

Command aliases

Broadcasters can remap command names in Bot Settings (/dashboard/bot). For example, you could set add to map to task, so viewers can use !add instead of !task.

Aliases are resolved for every command before it runs, so an alias can remap to any command — task, timer, !clear, and even the meta commands (!dwhelp, !dwcommands). The built-in command names always keep working regardless of your aliases.

Task priority

Tasks created by the broadcaster (stream owner) are pinned to the top of the list. Viewer tasks appear below in the order they were added.

Bot responses

All bot response messages are customizable from the Bot Settings page (/dashboard/bot). Task and timer command groups can also be individually enabled or disabled.

Task bot responses

MessageDefaultVariables
Task AddedAwooo! The task "{task}" has been added to the pack, {user}!{task}, {user}
No Task AddedYour paws are full, {user}! Finish a task with !done before adding another.{user}
No Task ContentTell the pack what you're working on! Use !task [task], {user}!{user}
No Task to EditNo task in your den to edit, {user} — try !edit [number] [new task]!{user}
Task EditedThe hunt has changed! Task updated to "{task}" {user}{task}, {user}
Task RemovedTask "{task}" has been scent-wiped from the list, {user}{task}, {user}
Task NextPaws-ome work finishing '{oldTask}'! Now tracking '{newTask}', {user}!{oldTask}, {newTask}, {user}
Admin Delete TasksAll of the user's tasks have been cleared from the forest.none
Task DoneAlpha work! You finished "{task}" {user}!{task}, {user}
Task Check{user}, you're on the scent of "{task}"{user}, {task}
Task Check User{user}, {user2} is currently tracking: "{task}"{user}, {user2}, {task}
No TaskLooks like you aren't tracking anything in the forest right now, {user} — start a hunt with !task [task]!{user}
No Task (Other)The scent is cold, {user} — that viewer isn't tracking a task right now.{user}
Not ModGrrr! Permission denied, {user} — only pack leaders (mods) can do that.{user}
Cleared AllThe forest has been cleared of all tasks!none
Cleared DoneAll finished tasks have been cleared from the den!none
Next No ContentDon't leave the pack hanging! Try !next [task], {user}!{user}
Help{user}, join the hunt: !task, !done, !edit, !remove, !focus, !check, !next — or !dwhelp for the full list.{user}

Timer bot responses

MessageDefaultVariables
Not RunningThe timer isn't howling yet! Start it up first.none
Wrong CommandMy ears didn't catch that... Try !timer start, pause, resume, skip, reset, or eta.none
Timer RunningThe hunt is already in progress!none
Command SuccessPaw-fect! Done!none
Cycle WrongThat cycle count won't work — pick 1 to 99, like !timer start 4.none
ETAThis phase ends in {phase} · the hunt is done in {time}{phase}, {time}

The bot replies to !timer commands, but does not announce phase changes on its own. Dirework runs on Cloudflare Workers with no always-on process, so there is nothing to fire a message when a focus block ends — the overlay is what shows the current phase. Editable "focus started" / "break started" / "stream starting" / "timer finished" messages used to exist here but never sent anything, so they were removed.

Message variables reference

VariableDescription
{user}The Twitch display name of the person who ran the command
{user2}The Twitch display name of the target user (e.g., !check @other)
{task}The task text content
{oldTask}The task that was just completed (used in !next)
{newTask}The new task now being tracked (used in !next)
{channel}The Twitch channel name, used as @mention to ping chat
{phase}Time remaining in the current phase, as a relative duration (e.g., 18m)
{time}Time remaining until the whole session ends, as a relative duration (e.g., 1h 55m)

On this page