GUIDE

Channel bot

The channel bot sits in your Twitch chat and runs commands you build in the dashboard. A command is a small flow: one or more triggers (when it should fire) and one or more actions (what it should do).

Setup

The bot setup is organized into collapsible sections so you can configure everything in one place: General, Internal game, Schedule, PC specs, and Socials. Changes autosave in the background, and each section includes a Reset button to restore initial values.

  1. Sign in and link Twitch on Dashboard → Account.
  2. Open Dashboard → Bot.
  3. In General setup, connect a Twitch account that will sit in chat: Connect current Twitch account uses the account you are signed in with, or copy the authorize URL and open it in another browser while signed in as a bot account you created. That browser does not need to be signed in to this site — the link belongs to your dashboard. After Twitch, a confirmation page tells you to return to your primary account. The server stores a refresh token and renews chat access automatically.
  4. If you used a separate bot account, type /mod plus that name in your Twitch chat, then turn the bot on. Pinning a reply also requires the bot to be a moderator. You can choose a pin duration for each command, including a custom duration or leaving it pinned until manually unpinned. Timeout and ban filters need the same moderator status (reconnect the bot if timeout permission is missing). If the bot was connected before pin permission existed, disconnect and connect it again.
  5. Change game, title, tags, ads, and stream markers can update this Twitch channel. If the bot is this channel, one Twitch login is enough (reconnect if category or ad permission is missing). If a different account sits in chat, click Connect this channel on Setup while signed in as the streamer — Twitch only lets the channel owner change those.
  6. Internal game: pick an internal title (Steam / itch / consoles, same search as wishlists) if you stream under Twitch’s Games + Demos category so chat can still name the real title.
  7. Schedule: select your regular streaming days of the week, set your start and end times with the time pickers, and choose your stream timezone. You can also add date overrides/exceptions for special stream dates. The backend automatically formats this into natural language for the {schedule} placeholder and the What is your stream schedule? smart trigger.
  8. PC specs & gear: fill out your computer hardware (GPU, CPU, RAM, Motherboard, Storage, Power Supply, Case) and streaming gear (Microphone, Camera, Monitor, Mouse, Keyboard, Headset). Click Find parts or Find gear to open the built-in hardware part picker (search over 300 modern components and popular streaming peripherals) or click quick-pick chips. The backend summarizes highlights for the {specs} placeholder and smart queries.
  9. Socials: enter your Discord server, Twitter/X, Bluesky, YouTube, TikTok, Instagram, Threads, Steam, or custom website links. The backend compiles your active links for the {socials} placeholder and socials smart commands.

The dashboard at /dashboard/bot is a tool panel (not indexed). This guide is the public docs page.

After you enable the bot, the setup page shows whether it is connected and which channel it joined. If chat never arrives, look for a login error on that page. An app / client-credentials token will not work. A dedicated bot account is optional; if you connect the same account as the channel, the bot ignores its own replies so it cannot loop.

Commands & moderation flows

Both Commands and Moderation are organized into Custom and Default sub-tabs (with Custom shown first as the primary workspace).

  • Default items: Built-in commands and moderation filters ship ready to use. Default items cannot be deleted or modified directly to avoid accidental breakage. You can enable or disable them with a toggle.
  • Create custom copy: If you want to customize a default command or filter, open it and click Create custom copy. This automatically turns off the default item, makes an enabled copy under the Custom tab, and opens it for full editing.
  • Categorized flow palette: Adding triggers, conditions, or actions uses a structured dropdown selector grouped into logical categories (Chat interaction, Stream & broadcast, Counters & widgets, Integrations, and Moderation) with fast search filtering.

Triggers

  • Command: an exact chat command such as !game, plus optional aliases. Extra text can be required, forbidden, or optional, so !game and !game Hades can be two different commands.
  • Smart intents: natural language triggers powered by the bot’s lightweight similarity matcher. Built-in intents include:
    • What game is this? (ask_game)
    • Clip that (clip_that)
    • How long have you been live? (ask_uptime) — queries live uptime from Twitch
    • What is your stream schedule? (ask_schedule) — replies with your weekly schedule and overrides
    • What are your PC specs / gear? (ask_specs) — replies with hardware highlights
    • What is the death count? (ask_deaths) — replies with current deaths count
    • What is the win/loss score? (ask_score) — replies with wins/losses/ties
    • Where is the Discord / Socials? (ask_socials) — replies with community links
    • Viewer going to lurk (viewer_lurk) — acknowledges lurkers with gaming/AFK quotes
    • Viewer back from lurk (viewer_unlurk) — welcomes viewers back with video game respawn quotes
    • Where is the game wishlist? (ask_wishlist) — links to your game wishlist
    • Mark this stream highlight (mark_highlight) — drops a stream marker (mods/broadcaster)
    Smart matching uses stopword filtering and content anchor requirements so ordinary chat does not accidentally fire commands. You can also type your own custom example lines.
  • User: fires when a matching person chats (optional specific username).
  • Schedule: repeats every N minutes while the bot is in the channel.

Conditions can allow or exclude broadcaster, moderator, VIP, subscriber, named-user, and viewer-group roles. Use the same role and group exclusions in moderation filters to skip people who should not match a rule.

Moderation

Chat filters live on their own Moderation tab so they do not mix with commands. Like commands, filters are split into Custom and Default sub-tabs. Each filter is a WHEN → THEN flow, with conditions and actions meant for Nightbot-style spam control. Filters run before commands. The broadcaster and moderators are never punished. A starter set ships with the bot (permit, view-bot ads, links, caps, symbols, emotes, length, and repeats). Those filters exempt VIPs. Turn any of them off, edit custom copies, or add your own.

  • Conditions: view-bot ads (the “become famous / buy followers” paste, including leetspeak and lookalike letters, special characters, and domains with spaces around dots), banned phrase, regular expression, link, excessive caps, excessive symbols, too many emotes, message too long, or the same line repeated. Add conditions to allow or exempt roles, named users, and viewer groups. A Command condition (usually mods only) is how you add !permit.
  • Actions: delete the message, timeout (seconds), ban, warn in chat, or permit the mentioned user to post a link for a short time. Put the permit filter above a link filter. View-bot ads default to delete plus ban.

The bot must be a moderator. Timeout and ban use moderator:manage:banned_users — reconnect from Setup if that permission is missing. Try a chat line in the filter editor before you go live.

Groups

The Groups tab is for named viewer lists (Nightbot/PhantomBot Regulars, but you can keep more than one). Create Regulars, VIPs-you-trust, raid friends — whatever you need. There is no cap on how many logins a group can hold. Add each Twitch login one at a time; each person is stored as their own row. Use command and moderation conditions to allow or exclude roles, named users, and viewer groups. Deleting a group does not break saved commands: leftover group IDs are ignored. Adding a login that the bot has not seen yet also creates a Viewers row at 0m / never seen. Typing in Add viewer suggests people from the Viewers tab; you can still type any Twitch login.

Viewers

The Viewers tab lists everyone the bot has seen in chat, with time in chat and last seen. Time only accumulates while they keep chatting (a gap longer than 15 minutes starts a new visit). Click a person to see which groups they are in — the same membership rows as the Groups tab — and add them to a group from there.

Log

The Log tab can store chat lines the bot sees. It is off by default. You can ignore groups so those members are not written to the log. Turning the log off keeps existing history. Delete history removes the saved lines.

Public command list

The built-in !commands reply links to a searchable public page for the channel at /commands/{channel}. Viewers can search names, descriptions, aliases, and access conditions. They can enter their Twitch username to see only commands available to them. The page is not indexed because each channel's command list is user-specific.

Actions

  • Send message: reply in chat. Click or drag placeholders ({user}, {channel}, {game}, {game.details} / {game.summary}, {args}, {title}, {tags}, {commands}, {commercial}, {uptime}, {schedule}, {specs}, {socials}, {deaths}, {wins}, {losses}, {ties}) into the message. Game details are a short catalog description from Steam / itch / IGDB when the title is known. If the Twitch category is Games + Demos, {game} and {game.details} use the internal game you pick on Setup (or on a Change game action that targets Games + Demos) instead of that category name. That is for indie titles, demos, and games that do not have their own Twitch category yet. Search works like the wishlist: Steam, itch.io, or consoles. Add a separate Pin message action after a sent or random reply to pin it. Choose a preset or custom duration, or keep it pinned until manually unpinned (the bot must be a moderator). {clip} is available only on a send-message action that comes after Create clip.
  • Random message: picks one line from a list each time the command fires. Built-in lists ship with the bot for greetings, chat replies, clip quotes, lurk quotes, and unlurk quotes (iconic gaming respawn lines). Greetings, chat, lurk, and unlurk lists work anywhere. Clip quote lists (and any custom line with {clip}) only apply after Create clip in the same command — for example “Clip get: {clip}!” or “It's dangerous to go alone, take this clip: {clip}”. You can also write your own custom list. Add a separate Pin message action after a reply to pin it.
  • Execute another command: run every action from a selected command at this point in the current flow, then continue with the next action.
  • Play sound effect: play one of your configured sounds on an overlay with sound playback enabled. See the sound effects guide for setup.
  • Change game: search Twitch’s actual categories and pick one, or tick Use extra text from chat so !game Hades looks that name up. That updates the live category. Twitch only allows the channel owner to do this: one OAuth login if the bot is this channel, or a second channel login on Setup if a different account sits in chat. If you pick Games + Demos, a second field lets you set the internal game used in chat replies. A starter Set game command ships for moderators: !game still reports the current title, and !game Hades sets it.
  • Change title / Change tags: same extra-text split as game. Starters: !title and !tags print the live values; moderators can !title Late night Hades or !tags English, Chill to set them.
  • Run ad: starts a Twitch commercial. Optional extra text is the length in seconds (30–180). A starter !commercial command is limited to moderators. Reconnect the bot (or this channel) if ad permission is missing.
  • Create marker: drops a stream marker. Extra text is the description. A starter !marker command is limited to moderators.
  • Send message can include {commands} to link to the channel's public command list. A starter !commands command ships for everyone and links to that list with the chatter's username pre-selected.
  • HTTP request: GET or POST a public http(s) URL (private/local addresses are blocked).
  • Counters and timers: one action each for death, win/loss, and timer. Inside the card you pick what to do (add, remove, set, reset, start, and so on) and whether to use the current item or a named one.
  • Create clip: makes a Twitch clip with the account connected on Dashboard → Clips. It does not talk in chat. Put a Send message or Random message after it and use {clip} if you want the link posted. The clip card can add a fixed clip message or a random clip-quote list in one click. A built-in Clip that smart command ships with game-quote replies such as “clip that”.

Analytics

Dashboard → Bot → Analytics shows how many chat messages the bot saw, how many exact commands fired, and how many smart (intent) commands fired, plus a 30-day graph. Counts are daily totals only — chat text is not stored there.

Try a line

The command editor saves as you change it. Reset restores the command from when you opened the editor. Use Try a chat line to see whether a phrase matches and what the bot would say, before you go live.