LubeyBot

LubeyBot Docs

Everything the bot can do, with copy/paste examples.
Home Dashboard

Quick start

  1. Join a channel: go to the channel and type !join (no args).
  2. Leave a channel: type !leave (no args).
  3. Open commands: /c/<channel>/commands (public list).
  4. Manage commands: Dashboard โ†’ pick channel โ†’ Commands.

Permissions

!editor: broadcaster only
!addcmd / !delcmd: broadcaster, editors, moderators
SpamGuard: detects spam and mass-bans across enrolled channels (protected roles are never banned).

Custom commands

Create and manage commands in chat or in the dashboard. Commands support categories, cooldowns, announcement mode, templates, and rate limits.

Add a command

!addcmd !ping --cat General Pong!

Flags

--cat Category name (shown in public UI groupings)
--cd Cooldown seconds (blocks command until ready)
--mode announce Send as announcement instead of normal chat
--rate N/W Global rate limit (N uses per W seconds)
--urate N/W Per-user rate limit (N uses per W seconds)
--rateSilent false If you want a message when rate-limited (default silent)

Announcement example

!addcmd !discord --cat Links --mode announce Join the Discord: https://discord.gg/xxxxx

Anti-slash safety

LubeyBot blocks saving or sending command outputs that start with a / to avoid accidental moderation commands like /ban.

Templates

Templates let you insert dynamic data into command responses.

Built-in

{user} chatter username
{channel} channel name
{trigger} the command trigger (e.g. !ping)
{uptime} stream uptime
{rand:a|b|c} pick random option
{random_user} random recent chatter

Counters

Channel counters are per-channel. Global counters are shared across all channels.
{count:deaths} show channel counter
{gcount:deaths} show global counter
{inc:deaths} increment channel counter
{ginc:deaths} increment global counter
!addcmd !deaths --cat Game Deaths: {count:deaths}
!addcmd !rip --cat Game RIP. Channel Total: {inc:deaths}
!addcmd !grip --cat Game RIP. Global Total: {ginc:deaths}

API fetch (Nightbot-style)

Enable by setting FETCH_ALLOWLIST in .env (comma-separated domains). Example:

FETCH_ALLOWLIST=decapi.me,api.coinbase.com,api.weatherapi.com
{fetchtext:https://...} fetch plain text
{fetchjson:https://...|path.to.field} fetch JSON and extract a field
!addcmd !uptime --cat Info Uptime: {fetchtext:https://decapi.me/twitch/uptime/mrlubert}

!addcmd !btc --cat Crypto BTC: ${fetchjson:https://api.coinbase.com/v2/prices/BTC-USD/spot|data.amount}

Tip: Commands that use fetch automatically get a minimum rate limit to protect APIs.

Timers

Send periodic messages while the bot is in a channel (great for Discord links, rules, etc.).

Dashboard โ†’ Timers
Every 10 minutes: "Follow the stream ๐Ÿ’œ"

SpamGuard (Mass-ban)

SpamGuard watches for known spam terms and suspicious patterns.
If a spammer is banned in mrlubert, LubeyBot can ban the same account in every enrolled channel.
Protected roles never get banned: broadcaster, moderators, VIPs, subscribers.
Spam events are logged.

Manage global terms (owner-only): Dashboard โ†’ SpamGuard. Add per-channel terms: Dashboard โ†’ SpamGuard Local.

Event triggers

Automatically send a message or run an action when events happen (raid, stream online, etc.).

Example: When stream.online โ†’ Announcement "We are live! Type !commands"

Manage: Dashboard โ†’ Event Triggers (per channel).

Public pages

/ homepage
/docs this page
/c/<channel>/commands public command list grouped by category

Minecraft IGN templates

Useful for Bits/Subs โ†’ Minecraft RCON integration and commands.
{channel_mc} channel MC IGN (fallback: channel name)
{user_mc} viewer MC IGN (fallback: viewer twitch login)
!setmcname Notch link your MC name in this channel
!mcname view your linked MC name, !delmcname remove it