Skip to content

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

CommandWhat it doesExampleRequirementPermission
!uptimeHow long the stream has been live.!uptimeNoneEveryone
!title / !gameShows the title or category; moderators can change them.!title Ranked grindNoneEveryone / Mods
!followersFollower count of the channel.!followersNoneEveryone
!followageHow long a viewer has followed.!followage @viewerNoneEveryone
!watchtimeHow long a viewer has watched.!watchtimePointsEveryone
!level / !xp / !toplevelsLevel of the sender, XP and the XP ranking.!levelLevelsEveryone
!commandsLink to the public commands page.!commandsNoneEveryone
!soShout out another creator.!so @friendNoneModerators
!editcounterSets a named counter.!editcounter deaths 10NoneModerators
!timeout / !ban / !unban / !permitModeration from chat (the bot must be a moderator).!timeout @user 10 spamNoneModerators
!goalCurrent goals.!goalGoalsEveryone

2.2 Points command

CommandWhat it doesExampleRequirementPermission
!pointsYour points (or another viewer’s with @name).!points @viewerPointsEveryone
!points add @viewer 100Adds points to one viewer.!points add @viewer 100PointsOwner (configurable)
!points add all 100Adds points to everyone active in chat.!points add all 100PointsOwner (configurable)
!addpoints / !removepointsSame as above, short form.!removepoints @viewer 50PointsModerators
!giveSends some of your points to another viewer.!give @viewer 100PointsEveryone
!leaderboardThe top viewers by points.!topPointsEveryone

2.3 Point drop commands

CommandWhat it doesExampleRequirementPermission
!claimCollects the points of an open drop (the name can be changed).!claimPoint dropsEveryone
!pdrops start / stop / statusOpens or closes a drop by hand, or shows when the next one comes.!pdrops startPoint dropsModerators

2.4 Custom command management

CommandWhat it doesExampleRequirementPermission
!addcomCreates a command from chat.!addcom !hello Hi $(sender)!NoneModerators
!editcomChanges the reply of a command.!editcom !hello Welcome back $(sender)NoneModerators
!delcomDeletes a command.!delcom helloNoneModerators

2.5 Song request commands

CommandWhat it doesExampleRequirementPermission
!srRequests a song by YouTube or Spotify link, or by name.!sr daft punk one more timeSong requestsEveryone
!songThe song playing now.!songSong requestsEveryone
!queue / !mysongsThe next songs / your songs.!mysongsSong requestsEveryone
!wrongsongRemoves your last request.!wrongsongSong requestsEveryone
!songsLink to the public song queue.!songsSong requestsEveryone
!skip / !removeSkips the current song / removes one.!skipSong requestsModerators
!pause / !play / !volumePlayer controls (volume 0–100).!volume 60Song requestsModerators
!sron / !sroff / !random / !clearqueueOpen or close requests, random order, clear the queue.!random onSong requestsModerators
!srbanBans a video or user from requesting.!srban @userSong requestsModerators

2.6 Prediction commands

CommandWhat it doesExampleRequirementPermission
!betBets points on an outcome of the open prediction.!bet 1 500PointsEveryone
!predictStarts, locks or resolves a prediction.!predict Win? | Yes | NoPointsModerators
!voteVotes in the open poll.!vote 2PollsEveryone
!pollStarts or ends a poll.!poll Next game? | A | BPollsModerators

2.7 Queue commands

General

CommandWhat it doesExampleRequirementPermission
!joinqJoins the viewer queue while it is open.!joinqViewer queueEveryone
!leaveqLeaves the queue.!leaveqViewer queueEveryone
!posqYour position in the queue.!posqViewer queueEveryone
!listqThe first 10 people and the queue size.!listqViewer queueEveryone

Moderator

CommandWhat it doesExampleRequirementPermission
!openq / !closeqOpens or closes the queue.!openqQueue mod commandsModerators
!nextqCalls the next person and removes them.!nextqQueue mod commandsModerators
!removeqRemoves one person.!removeq someviewerQueue mod commandsModerators
!clearqEmpties the queue.!clearqQueue mod commandsModerators
!joinq <name>Adds another viewer to the queue.!joinq someviewerQueue mod commandsModerators

2.8 Loyalty, games and more

CommandWhat it doesExampleRequirementPermission
!store / !buyLists the shop / buys an item.!buy 2 helloShopEveryone
!gamble / !slots / !rouletteMini-games with points (all, half, 50% and 5k work as amounts).!gamble 50%Mini-gamesEveryone
!duel / !accept / !declineChallenge someone for points.!duel @friend 100Mini-gamesEveryone
!giveawayRaffle info; moderators start, draw and end it.!giveaway start ggRafflesEveryone / Mods
!skipttsSkips the text-to-speech message.!skipttsTTSModerators
!subtimeAdds or removes subathon time.!subtime 10mSubathonModerators

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 forms Rand[1,10], RandomList[a;b] and fetch[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)

$(social name) / $(socials)

One social link from Profile (twitter, instagram, youtube, tiktok, discord, website) or all of them.

Example: $(social youtube)

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>/commands
  • GET https://wobot.online/api/public/channels/<channel>/leaderboard?limit=25
  • GET https://wobot.online/api/public/channels/<channel>/ranking?limit=15&offset=0&search=name
  • GET 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 /mod followed 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.