# Coming from Fossabot

Map Fossabot commands, timers, keywords, counters and moderation onto Bloopbot flows and filters, and rebuild your top commands.

Updated 24 September 2026

## Before you start

This guide maps what you set up in Fossabot onto the closest thing in Bloopbot. Both run in the cloud, so neither needs anything installed on your PC. The difference is how you build: a Fossabot command is a line of text with `$(variables)` in it, and a Bloopbot command is a **flow** — a trigger, optional checks and one or more actions you connect on a canvas, where each step can hand values to the next.

There is no importer for Fossabot. You rebuild the commands you use most as flows, using the tables below. Bloopbot works with Twitch; if you also use Fossabot on YouTube or Kick, keep it there.

> **New channels**
>
> If the sign-in button on the Bloopbot homepage reads “Sign-ups are closed right now”, new channels can’t join yet. If you already have a Bloopbot channel, everything below works today; if you don’t, this guide will still be here once sign-ups reopen.

## Commands, timers and keywords

| In Fossabot | In Bloopbot | Notes |
| --- | --- | --- |
| A custom command | A flow with a **Chat command** trigger and a **Chat message** action | **Command** is the word without the prefix, and **Also responds to** holds aliases — see [create your first chat command](https://bloopbot.com/docs/first-command). |
| A command’s permission | A **Who can trigger** check, with **At least** set to broadcaster, moderator, VIP, subscriber or everyone | For a list of people of your own, use a **Has a role** check and add them on **People → Regulars** — see [add permissions and cooldowns](https://bloopbot.com/docs/permissions-and-cooldowns). |
| A command’s cooldown | A **Cooldown** check, on **Whole channel**, **Per viewer** or both | Moderators or you can skip it. |
| A timer | A flow with an **On a timer** trigger | Set an interval, or days and a time, and optionally **Only if chat has moved** — see [post a recurring chat message](https://bloopbot.com/docs/timers). |
| A keyword | A flow with a **When chat mentions** trigger | It fires on an exact phrase. To fire on what a message means instead, see [wake a flow when chat means something](https://bloopbot.com/docs/intent-trigger), which may not be available on your channel yet. |
| A counter | A declared **variable** plus a **Set a variable** step, read as `$(var.name)` | The **Counter** templates in the **Starter** pack build a `!deaths` counter this way — see [keep a counter with variables](https://bloopbot.com/docs/variables). |
| Media requests (YouTube and SoundCloud) | The **Song requests** flow pack, playing through your own Spotify account | A different service: Bloopbot plays Spotify tracks and needs Spotify Premium — see [let chat request songs](https://bloopbot.com/docs/song-requests). Song requests may not be available on your channel yet. |

## Variables

Fossabot puts its variables straight into the reply text. Bloopbot’s `$(…)` values come from the step that hands them on, mostly the trigger, and every field that takes them has an **Insert…** menu listing exactly what it can read.

| What the variable gives you | In Bloopbot | Notes |
| --- | --- | --- |
| The viewer who typed the command | `$(user)` | Handed on by the **Chat command** trigger. |
| The first word, or the viewer when there isn’t one | `$(touser)` |  |
| Everything after the command | `$(query)` |  |
| One word after the command | `$(1)` to `$(9)` | `$(1)` and `$(2)` are in the **Insert…** menu; type the rest by hand. |
| A number that goes up | `$(var.name)` from a declared variable | See the counter row above. |
| How long you’ve been live | **how long ago** under **Stream** in the **Insert…** menu | It keeps counting after the stream ends, so pair it with a **Stream status** check. |
| `$(customapi)`, the answer from your own address | A **Web request** step, whose answer later steps read | It’s a step on the canvas, not a token, and the channel switches **Web requests: allowed** on first. Web requests may not be available on your channel yet — see [call a service from a flow](https://bloopbot.com/docs/webhooks#web-request). |

A variable with no match here — anything Bloopbot doesn’t hand on — needs a different approach. Check the **Insert…** menu of the field first; it lists everything that step can read.

## Moderation

Fossabot is known for its moderation, so compare this part carefully before you switch it off.

| In Fossabot | In Bloopbot | Notes |
| --- | --- | --- |
| Blocked terms | The blacklist filter on **Moderation** | Add entries on the page or with `!blacklist add` from chat; `-regex` makes an entry a pattern — see [what moderators can do from chat](https://bloopbot.com/docs/editors#moderators). |
| Lookalike detection | Built into the link filter and the blacklist | Both see through spaced-out, spelled-out and look-alike letters and invisible characters — see [set up moderation helpers](https://bloopbot.com/docs/moderation#helpers). |
| Links, caps, symbols, emotes and repeated messages | The links, caps, symbols, emotes and repetition filters on **Moderation** | Each has its own thresholds, exemptions and response. |
| Message-height filter | No equivalent | Bloopbot has no filter for tall messages. |
| Nukes | `!nuke` from the **Mod commands** pack, with the **Nukes** page | See [set up moderation helpers](https://bloopbot.com/docs/moderation#helpers). |
| Mod team access and audit logs | Editors on **Connections**, and **Audit Log** | Editors sign in with their own Twitch accounts and can change your channel’s pages; every change is recorded under their name. There are no roles within editors — see [share the work with mods and editors](https://bloopbot.com/docs/editors). |

Bloopbot also offers an AI moderation step you put in a flow, which reads what a message means rather than which words it contains. It may not be available on your channel yet — see [set up AI moderation](https://bloopbot.com/docs/ai-moderation).

## Rebuild your top commands

1. Sign in, then open **Flows → Explore packs** and install the **Starter** pack. It brings everyday commands and stream reactions, paused, so you can review them before you turn them on.
2. For each Fossabot command you still need, press **+ New flow → Start blank**, add a **Chat command** trigger, and connect a **Chat message** action with your reply.
3. Add a **Who can trigger** or **Cooldown** check in front of the action for anything that had a permission or a cooldown in Fossabot.
4. On **Moderation**, set up the filters you had in Fossabot, one at a time, and watch chat before turning on several at once.

A worked example — a `!discord` command anyone can use, and a moderator-only `!setdiscord` that changes the link:

1. On **Variables**, declare a text variable named `discord_url` with your invite link as its starting value.
2. Build a flow: **Chat command** (`discord`) → **Chat message** reading `Join us: $(var.discord_url)`.
3. Build a second flow: **Chat command** (`setdiscord`) → **Who can trigger** (**At least**: moderator) → **Set a variable** (`discord_url`, set to `$(query)`) → **Chat message** reading `Discord link updated.`

![The flow canvas with a Chat command trigger connected to a Chat message action. Under the trigger, a tray of the values it hands on — Who typed it, After the command, Word 1, Word 2 and a +1 more button; under the Chat message, its Message field with a user badge. The node palette is on the left and Test fire and Save are in the top bar.](https://bloopbot.com/docs/screenshots/flow-canvas.jpg)

_A command flow on the canvas: a Chat command trigger feeding a Chat message action, with the values the trigger hands on in the tray underneath._

Expected result: a moderator types `!setdiscord discord.gg/example`, the bot says `Discord link updated.`, and the next `!discord` posts the new link.

## Turn off the old bot

Once a Bloopbot flow or filter does the same job, turn off the matching Fossabot command, timer or filter in Fossabot’s dashboard. If both bots answer the same command, chat sees two replies, and two bots filtering the same message make it hard to tell which one acted. When nothing is left in Fossabot you still need, remove it from your channel from its dashboard, and take its moderator role away in Twitch chat.

## Check it before you rely on it

- **Test fire**, in the flow editor’s top bar, runs the flow as a dry run and records what would have happened. It does not post to real chat or touch a real viewer’s cooldown.
- A real check means typing the command in your own Twitch chat and watching for the reply exactly once.
- For a filter, send a test message from a second account the filter doesn’t exempt.

## Troubleshooting

- **You get two replies.** Fossabot and Bloopbot are both answering the same command or timer. Turn off the one you’re retiring.
- **The command does nothing.** Check the flow is live rather than paused, and that a **Who can trigger** or **Cooldown** check isn’t stopping it for the account you test with. [Fix a flow or connection](https://bloopbot.com/docs/troubleshooting) covers the rest.
- **The reply shows `$(var.discord_url)` or `$(user)` literally.** The variable isn’t declared on **Variables**, or the token is misspelled. Pick it from the **Insert…** menu instead of typing it.
- **A filter doesn’t act.** The bot account isn’t a moderator in your chat yet, or the viewer is exempt. See [set up moderation helpers](https://bloopbot.com/docs/moderation#access).
- **A node shows a lock.** Your channel doesn’t include that step yet. Nothing else about the flow changes — see [what your plan includes](https://bloopbot.com/docs/what-your-plan-includes).
