01Counters: numbers that remember
at a glance One token, {counter:name}, adds 1 and shows the total. The count survives every stream.
A counter is a named number the bot remembers between streams. Write
{counter:deaths} in a command's response, and every time the
command runs, the bot adds 1 to a counter called "deaths" and shows the new total
right there in its reply. No spreadsheet, no manual tally, just a token.
alex !death
ItsBagelBot your_channel has died 47 times.
maya_live !death
ItsBagelBot your_channel has died 48 times.
Counters need Loyalty Points
Counters are stored by the Loyalty Points module. Switch
it on first, or {counter:…} stays as literal text in chat.
02Four ways to count
at a glance Whole channel, per user, per command, or both. Pick one when you create the counter; it sticks.
Every counter has exactly one scope, chosen the moment it's created, and it stays that way for the counter's whole life. Scope answers one question: whose number is this?
| Scope | Chat word | What's counted |
|---|---|---|
| Whole channel | (default) | One shared total, everyone adds to the same number. |
| Per user | user | Each viewer gets their own number. |
| Per command or reward | command | One shared total for a single command or reward, every viewer pooled together. |
| Per user + command or reward | user+command | Each viewer gets a separate number for each command or reward. |
Whole channel
Everyone bumps the same shared number. Perfect for a tally that belongs to the stream itself, not to any one viewer, like a running death count.
alex !death
ItsBagelBot your_channel has died 47 times.
sam !death
ItsBagelBot your_channel has died 48 times.
Per user
Each viewer gets a private number, untouched by anyone else's. Good for personal streaks: how many hugs someone has given, how many times they've won a game against you.
maya_live !hug
ItsBagelBot maya_live has given 12 hugs.
alex !hug
ItsBagelBot alex has given 1 hug.
Per command or reward
The newest scope: one pooled total for a single command or channel-point reward, with every viewer adding to the same number. Ideal for "how many times has this specific reward been redeemed, total?"
channel points · maya_live redeemed Hydrate!
ItsBagelBot Hydrate! has been redeemed 301 times.
channel points · alex redeemed Hydrate!
ItsBagelBot Hydrate! has been redeemed 302 times.
Per user + command or reward
Combines both: every viewer gets a separate number for each command or reward that shares this counter. Bind one counter to two commands and each viewer ends up with one bucket per command, not one shared bucket for both.
alex !hug
ItsBagelBot alex has hugged 3 times.
alex !highfive
ItsBagelBot alex has high-fived 1 time.
Locked once created
A counter's scope can't be changed afterward. Picked the wrong one? Delete it
(!counter delete name, or the dashboard) and create it again; the old
values don't carry over.
03Managing counters from chat
at a glance Create, bump, set, reset, delete, or just ask, all without leaving chat.
You and your moderators can create and manage counters without leaving chat, all
under !counter:
| Command | What it does |
|---|---|
!counter create <name> [scope] | Creates a counter. Scope word is user, command or user+command; leave it out for the whole channel. |
!counter add <name> [amount] | Adds 1, or the amount you give. Negative numbers subtract. |
!counter set <name> <value> | Sets the total outright. |
!counter reset <name> | Clears it back to zero. For per-user or per-command counters, this wipes every stored bucket. |
!counter delete <name> | Removes the counter entirely. |
!counter list | Lists every counter on the channel and its scope. |
!counter <name> | Shows the current value, same as reading it in chat. |
mod_sam !counter create deaths
ItsBagelBot @mod_sam counter deaths created (whole channel).
mod_sam !counter add deaths 5
ItsBagelBot @mod_sam deaths is now 5.
Command scope, from chat !counter create hydrations command makes a pooled per-command counter in
one line, ready to drop into a command's response, or bind to a channel-point reward,
as {counter:hydrations}.
04The dashboard, and channel-point rewards
at a glance The Counters page for hands-on control, and how a reward binds to one.
The Counters page lists every counter on your channel and lets you create, adjust, and delete them by clicking instead of typing.
Bump it with {counter:deaths} in a command response, from a channel-point reward, or with !counter add.3
- 1Name: the same string you'd write inside {counter:…}.
- 2Counts: the scope. Fixed once you create it.
- 3A plain-language reminder of where counters get bumped from.
Binding a counter to a channel-point reward
Every Channel Points reward can optionally keep a
counter of its own, right from the reward's editor: type a counter name (new or
existing), pick its scope, and every redemption bumps it. Use
{counter} in the reward's chat reply to show the new total.
- 1Off by default, most rewards don't need one.
- 2Per user + reward is usually the right call: each viewer builds their own redemption count for this reward.
Try it in the builder
The command builder can walk you through naming a
counter and picking its scope, then hands you the finished
{counter:…} token.
Open the command builder →