WoBot documentation
1. What is WoBot?
WoBot is a chat bot for Kick streamers. It answers commands, runs timers and keeps spam out of your chat, gives viewers points and levels they can spend in your shop, takes song requests, shows alerts and widgets on stream and posts in Discord when you go live. You set everything up on this website after logging in with your Kick account.
2. Commands
Each table lists the command, what it does, an example, the feature that must be switched on (requirement) and who may use it (permission – a role also includes the roles above it). Every built-in command can be renamed, limited to a role or switched off in Chat Bot → Default Commands. The examples use the default prefix !.
2.1 Built-in commands
| Command | What it does | Example | Requirement | Permission |
|---|---|---|---|---|
!uptime | How long the stream has been live. | !uptime | None | Everyone |
!title / !game | Shows the title or category; moderators can change them. | !title Ranked grind | None | Everyone / Mods |
!followers | Follower count of the channel. | !followers | None | Everyone |
!followage | How long a viewer has followed. | !followage @viewer | None | Everyone |
!watchtime | How long a viewer has watched. | !watchtime | Points | Everyone |
!level / !xp / !toplevels | Level of the sender, XP and the XP ranking. | !level | Levels | Everyone |
!commands | Link to the public commands page. | !commands | None | Everyone |
!so | Shout out another creator. | !so @friend | None | Moderators |
!editcounter | Sets a named counter. | !editcounter deaths 10 | None | Moderators |
!timeout / !ban / !unban / !permit | Moderation from chat (the bot must be a moderator). | !timeout @user 10 spam | None | Moderators |
!goal | Current goals. | !goal | Goals | Everyone |
2.2 Points command
| Command | What it does | Example | Requirement | Permission |
|---|---|---|---|---|
!points | Your points (or another viewer’s with @name). | !points @viewer | Points | Everyone |
!points add @viewer 100 | Adds points to one viewer. | !points add @viewer 100 | Points | Owner (configurable) |
!points add all 100 | Adds points to everyone active in chat. | !points add all 100 | Points | Owner (configurable) |
!addpoints / !removepoints | Same as above, short form. | !removepoints @viewer 50 | Points | Moderators |
!give | Sends some of your points to another viewer. | !give @viewer 100 | Points | Everyone |
!leaderboard | The top viewers by points. | !top | Points | Everyone |
2.3 Point drop commands
| Command | What it does | Example | Requirement | Permission |
|---|---|---|---|---|
!claim | Collects the points of an open drop (the name can be changed). | !claim | Point drops | Everyone |
!pdrops start / stop / status | Opens or closes a drop by hand, or shows when the next one comes. | !pdrops start | Point drops | Moderators |
2.4 Custom command management
| Command | What it does | Example | Requirement | Permission |
|---|---|---|---|---|
!addcom | Creates a command from chat. | !addcom !hello Hi $(sender)! | None | Moderators |
!editcom | Changes the reply of a command. | !editcom !hello Welcome back $(sender) | None | Moderators |
!delcom | Deletes a command. | !delcom hello | None | Moderators |
2.5 Song request commands
| Command | What it does | Example | Requirement | Permission |
|---|---|---|---|---|
!sr | Requests a song by YouTube or Spotify link, or by name. | !sr daft punk one more time | Song requests | Everyone |
!song | The song playing now. | !song | Song requests | Everyone |
!queue / !mysongs | The next songs / your songs. | !mysongs | Song requests | Everyone |
!wrongsong | Removes your last request. | !wrongsong | Song requests | Everyone |
!songs | Link to the public song queue. | !songs | Song requests | Everyone |
!skip / !remove | Skips the current song / removes one. | !skip | Song requests | Moderators |
!pause / !play / !volume | Player controls (volume 0–100). | !volume 60 | Song requests | Moderators |
!sron / !sroff / !random / !clearqueue | Open or close requests, random order, clear the queue. | !random on | Song requests | Moderators |
!srban | Bans a video or user from requesting. | !srban @user | Song requests | Moderators |
2.6 Prediction commands
| Command | What it does | Example | Requirement | Permission |
|---|---|---|---|---|
!bet | Bets points on an outcome of the open prediction. | !bet 1 500 | Points | Everyone |
!predict | Starts, locks or resolves a prediction. | !predict Win? | Yes | No | Points | Moderators |
!vote | Votes in the open poll. | !vote 2 | Polls | Everyone |
!poll | Starts or ends a poll. | !poll Next game? | A | B | Polls | Moderators |
2.7 Queue commands
General
| Command | What it does | Example | Requirement | Permission |
|---|---|---|---|---|
!joinq | Joins the viewer queue while it is open. | !joinq | Viewer queue | Everyone |
!leaveq | Leaves the queue. | !leaveq | Viewer queue | Everyone |
!posq | Your position in the queue. | !posq | Viewer queue | Everyone |
!listq | The first 10 people and the queue size. | !listq | Viewer queue | Everyone |
Moderator
| Command | What it does | Example | Requirement | Permission |
|---|---|---|---|---|
!openq / !closeq | Opens or closes the queue. | !openq | Queue mod commands | Moderators |
!nextq | Calls the next person and removes them. | !nextq | Queue mod commands | Moderators |
!removeq | Removes one person. | !removeq someviewer | Queue mod commands | Moderators |
!clearq | Empties the queue. | !clearq | Queue mod commands | Moderators |
!joinq <name> | Adds another viewer to the queue. | !joinq someviewer | Queue mod commands | Moderators |
2.8 Loyalty, games and more
| Command | What it does | Example | Requirement | Permission |
|---|---|---|---|---|
!store / !buy | Lists the shop / buys an item. | !buy 2 hello | Shop | Everyone |
!gamble / !slots / !roulette | Mini-games with points (all, half, 50% and 5k work as amounts). | !gamble 50% | Mini-games | Everyone |
!duel / !accept / !decline | Challenge someone for points. | !duel @friend 100 | Mini-games | Everyone |
!giveaway | Raffle info; moderators start, draw and end it. | !giveaway start gg | Raffles | Everyone / Mods |
!skiptts | Skips the text-to-speech message. | !skiptts | TTS | Moderators |
!subtime | Adds or removes subathon time. | !subtime 10m | Subathon | Moderators |
3. Variables
Variables are placeholders WoBot fills in when a custom command, timer, chat alert or Discord post runs. A few rules:
- The main syntax is
$(name arguments). Short forms in braces such as{user}or{1}work too, and so do the bracket formsRand[1,10],RandomList[a;b]andfetch[url]. - Variables can be nested and run from the inside out:
$(math $(count) * 2). - Square brackets in this list mean “optional”. Values with several parts are separated by
;. - An unknown variable is left as it is, so typos are easy to spot.
3.1 User and input
$(sender)
Name of the viewer who used the command. Also $(user) and $(name).
Example: Hi $(sender)!
$(toname)
The first word after the command without @, or the sender when empty. Also $(touser).
Example: Hugs to $(toname)
$(variable [fallback])
All text after the command; the fallback is used when nothing was typed.
Example: $(variable nothing)
$(optionalvariable)
All text after the command, or "null".
Example: $(optionalvariable)
$(v1 [fallback]) … $(v9)
One word after the command by position, with an optional one-word fallback.
Example: $(v1 rock) vs $(v2 paper)
$(roles)
The sender’s roles (badges).
Example: $(roles)
$(userid)
The sender’s Kick user id. Also $(senderid).
Example: $(userid)
3.2 Channel and stream
$(channel)
The channel name.
Example: $(channel)
$(platform) / $(platformUrl)
"Kick" and the link to the channel.
Example: $(platformUrl)
$(followers) / $(subs)
Follower and subscriber counts.
Example: $(followers) followers
$(viewers)
Current viewers while live.
Example: $(viewers) watching
$(uptime)
How long you have been live.
Example: Live for $(uptime)
$(title) / $(settitle text)
Shows or changes the stream title.
Example: $(settitle Chill stream)
$(category) / $(setcategory name)
Shows or changes the category. Also $(game).
Example: $(category)
$(commands)
A list of your command names.
Example: $(commands)
3.3 Loyalty and counters
$(points [@user])
Points of the sender or a user.
Example: $(points) $(currency)
$(addPoints [@user] n)
Adds points (negative removes).
Example: $(addPoints 10)
$(setPoints [@user] n)
Sets points.
Example: $(setPoints @viewer 0)
$(level [@user])
Level of the sender or a user.
Example: Level $(level)
$(count) / $(count +1) / $(count -1)
The command’s own counter: show, add or subtract (never below 0).
Example: Deaths: $(count +1)
$(getcounter name) / $(setcounter [name] n)
Named counters shared by commands (also !editcounter name n).
Example: $(getcounter wins)
3.4 Random and text
$(random min max) / Rand[min,max]
A random whole number.
Example: You rolled $(random 1 6)
RandomList[a;b;c]
One random item from the list.
Example: RandomList[heads;tails]
$(randomuser) / $(optionalrandomuser)
A random viewer active in chat (the second can return nobody).
Example: $(randomuser) wins!
$(repeat n text)
Repeats the text up to 10 times.
Example: $(repeat 3 hype)
3.5 Web and API
$(urlfetch url) / fetch[url]
The text a web address returns (first 400 characters).
Example: $(urlfetch https://example.com/joke)
$(earlyFetch url)
Fetches first, then runs the variables in the answer.
Example: $(earlyFetch https://example.com/cmd)
$(urlencode text) / $(urldecode text)
Encodes or decodes text for links.
Example: https://x.com/search?q=$(urlencode $(variable))
3.6 Math and time
$(math expression)
Calculates + − × ÷, powers and brackets.
Example: $(math $(count) * 2)
$(round n)
Rounds a number.
Example: $(round 4.6)
$(countdown date [time] [GMT±x])
Time left until a date.
Example: $(countdown 2026-12-31 20:00 GMT+2)
$(countup date [time] [GMT±x])
Time since a date.
Example: $(countup 2024-01-01)
$(time Zone [locale])
Current time in a time zone.
Example: $(time Europe/London en-GB)
3.7 Persistent variables and JSON
$(setuservar [@user;]key;value) / $(uservar [@user;]key[;default])
A value saved per viewer.
Example: $(setuservar team;red)
$(setglobalvar key;value) / $(globalvar key[;default])
A value saved for the whole channel.
Example: $(globalvar record;0)
$(uservarlist) / $(globalvarlist)
Lists the saved keys.
Example: $(globalvarlist)
$(setlocal key;value) / $(local key[;default])
A value that lives only while this command runs (max 5).
Example: $(setlocal n;3)
$(json scope;[@user;]key;path[;default])
Reads from a saved JSON value. Scopes: local, uservar, globalvar. Paths: a.b, items[0].name.
Example: $(json globalvar;stats;wins)
$(jsonset scope;[@user;]key;path;value) / $(jsonunset …)
Writes or removes a JSON field ("(json invalid)" if the saved value is not JSON).
Example: $(jsonset uservar;inv;gold;5)
3.8 Advanced
$(song) / {song}
Title of the song playing now.
Example: Now: $(song)
{queue}
Number of songs waiting.
Example: {queue} songs left
{user} {touser} {args} {1}…{9}
Short forms of sender, target, all text and single words.
Example: Hi {user}
{random 1-100} / {pick a|b|c}
Short random number / random choice.
Example: {pick yes|no}
{currency} {channel} {title} {game} {uptime} {points}
Short forms of the channel values.
Example: {points} {currency}
3.9 Special markup
<ifKick>…</ifKick>
Text only used on Kick (text for other platforms is dropped).
Example: <ifKick>Follow on Kick!</ifKick>
<hideText>…</hideText>
Runs the variables inside but prints nothing – handy for counters.
Example: <hideText>$(count +1)</hideText>Done
4. For developers
Global notes: commands have a global and a per-user cooldown (moderators and the streamer skip cooldowns), roles go Anyone → Subscriber → VIP → OG → Moderator → Owner, and the bot sends at most about one chat message per second.
4.1 Custom alerts
Any alert can use your own HTML, CSS and JavaScript: switch on Custom code in Alerts → the alert → Custom code. These variables are replaced in your HTML before it is shown:
{name} | Who triggered the alert (follower, subscriber, gifter…). |
{text} | The alert text with its variables filled in. |
{message} | The viewer’s message, when the event has one. |
{amount} | Months, gifts, KICKs or raid viewers – the number of the event. |
{image} | The image or video URL of the alert. |
{sound} | The sound URL of the alert. |
{img} | A ready <img>/<video> element for {image}. |
{months} {reward} {item} | Extra values for subs, channel rewards and shop items. |
Custom fields: fields you add to the alert (text, number, colour, image…) are available by their key in your HTML and CSS, for example {accentColor}. Your JavaScript receives alert (type, vars and config), element (the alert's root element) and fields (the custom field values). The layout classes are there too: {disposition}, {transition}, {animation}.
<div class="my-alert">
<div class="media">{img}</div>
<h3>{text}</h3>
<p class="message">{message}</p>
</div>4.2 Public API
Read-only JSON with the data of a channel's public pages, no key needed:
GET https://wobot.online/api/public/channels/<channel>GET https://wobot.online/api/public/channels/<channel>/commandsGET https://wobot.online/api/public/channels/<channel>/leaderboard?limit=25GET https://wobot.online/api/public/channels/<channel>/ranking?limit=15&offset=0&search=nameGET https://wobot.online/api/public/channels/<channel>/shop
5. Widgets
Widgets are small web pages for OBS or any streaming app that supports browser sources: alerts, song player, chat, goals, polls, bets, raffles, viewer queue, text-to-speech and more. Set them up in Dashboard → Widgets, copy the link and add it as a Browser Source. Each link is private to your channel – reset it in Widgets if it ever leaks.
Overlay Control: instead of one Browser Source per widget, add a single 1920 × 1080 source from Dashboard → Overlay Control and arrange every widget and your alerts on it: tick a widget, drag it into place, resize it from a corner, then Save – the source in OBS updates right away, even mid-stream. Helpers you give "Overlay Control" access (Sub-Users) can do the same, so a moderator can move things while you stream.
Shopify orders: connect your Shopify store in Dashboard → Integrations → Shopify and every new order shows as an alert (Alerts → Shopify orders), with the buyer's first name, the product and the order total. In Shopify add an "Order creation" webhook (Settings → Notifications → Webhooks) with the address WoBot gives you, then paste the signing key Shopify shows. Alert text variables: {name}, {product}, {total} (with currency) and {amount} (the total as a number, for variants like "orders over 100").
6. Terms of Service
The rules for using WoBot are on the Terms of Service page.
7. Privacy
What WoBot keeps, why, for how long and how to see or delete it is explained in the Privacy Policy. Viewers can see, download and delete their data on the My data page; streamers can download or delete their account in Dashboard → Settings.
8. Public guidelines
- Shop: describe rewards honestly and deliver what you sell; refund points when you can't.
- Alerts: no flashing images, very loud sounds or content that breaks Kick's rules; viewers' messages shown on stream are your responsibility, so use the filters.
- Chat alerts and commands: keep them respectful, don't ping or spam people, and make the bot a moderator (type
/modfollowed by the bot's name) so moderation works.
9. Support
Something not working? First check Dashboard → the status card (chat connection, bot account and moderator check). If that doesn't help, write to us through the contact form and include your channel name and what you tried.