---
title: Modules
description: Built-in chat games and tools - live announcements, emote pyramids and combos, a viewer queue, votekick and giveaways - each with its own switch and messages.
---

Modules are on the **Chat bot** page under the **Modules** tab. Each one is a ready-made feature: flip it on and it works with sensible defaults, hit **Edit** to change what the bot says and how it behaves. Every message supports the same [variables](/chat-bot/variables) as custom commands - `{pick:a|b|c}`, `{list:name}`, `{channel}` and so on - plus the module's own, shown as chips under each box. A blank message means the bot says nothing for that moment.

With Twitch and Kick both connected, every module has a **Platforms** switch pair so it can run in one chat or both.

## Live announcements

Posts a message when your stream comes up. Default: `🔴 {channel} is now live! {game}: {title}`. Variables: `{channel}`, `{title}`, `{game}`, `{platform}`.

Twitch and Kick tell the bot the moment your stream goes up, so the message lands within seconds. It announces once per going-live (a stream that drops and comes straight back won't trigger it again for ten minutes), and never on a bot restart mid-stream.

## Emote pyramids

When a chatter builds a pyramid - the same emote posted as 1, then 2, then 3, then 2, then 1 copies in consecutive lines - the bot congratulates them. Set the **minimum width** (3 to 7) and a **cooldown** so a chat full of pyramids doesn't turn into a chat full of bot. Variables: `{user}`, `{width}`, `{emote}`.

Any other line in between, from anyone, breaks the build. Third-party emotes count too - 7TV, BetterTTV and FrankerFaceZ on Twitch, 7TV on Kick - with a switch to limit it to the platform's own emotes.

## Emote combos

When several lines in a row all contain the same emote, that's a combo. The first line without it breaks the combo, and the bot calls out who did it: `{user} ruined the {count}x {emote} combo`. Set the **minimum combo** length before it counts. Third-party emotes count here as well, with the same switch.

## Viewer queue

A queue viewers can join to play with you. Mods open it, viewers join, you pull the next one when you're ready.

| Command | Who | Does |
| --- | --- | --- |
| `!join` | Viewers | Enter the queue |
| `!leave` | Viewers | Leave it |
| `!next` | Mods | Pull the next viewer and announce them |
| `!lobby open` / `!lobby close` | Mods | Open or close joining |
| `!lobby list` | Mods | Show the first ten in line |
| `!lobby clear` | Mods | Empty it |

Every reply is editable - joined, already in, left, next up, empty, closed, full - with `{user}`, `{position}` and `{count}`. There's a **maximum size** too. (It's `!lobby` rather than `!queue` because `!queue` already reports your TTS and media queues.)

## Votekick

`!votekick user` opens a vote to time that viewer out; chat answers with `!yea` or `!nay` (plain "yea" / "nay" work too). When the window closes, the vote passes according to the rule you pick, and the viewer is timed out for the **timeout length** you set - through the same moderation path as chat moderation, so the bot needs to be a moderator on Twitch, and your Kick connection needs its moderation permissions on Kick.

**Passes when** is one of:

- **More yeas than nays** - a simple majority of whoever voted.
- **At least this many yeas** - a fixed number, whatever the nays.
- **This percent of voters say yea** - of everyone who voted, say 60%.
- **This percent of current viewers say yea** - say 10%: with 80 viewers, 8 yeas. If the viewer count can't be read, it falls back to more yeas than nays.

The passed and failed messages can show the number of yeas that was needed with `{needed}`.

Choose **who can start** a vote (everyone, subscribers, moderators), the **voting window**, and the start, passed and failed messages. One vote per chat at a time; the streamer can't be a target.

## Giveaway

Mods run `!giveaway start`, viewers type `!enter`, mods `!giveaway draw` to pick a random winner (drawing again picks someone new), `!giveaway end` to close. Optionally **subscribers only**. Messages for opened, entered, winner, nobody entered and entering while closed, with `{user}` and `{count}`.

## Good to know

- Modules run on both platforms wherever the feature makes sense; commands work the same in Twitch and Kick chat.
- A module's replies count as bot messages, so the bot must be on for that platform on the Chat bot page.
- Module state (the queue, an open vote, a running combo) lives on the bot for a day; it survives restarts.
