Skip to main content

Cheatsheet

The fastest path to common patterns. Each snippet is the actual template string - paste it into a chatbot command's response, an overlay label's value, or an alert's TTS message.

Display data in chat

Show donation total

Tips received: {{total_donation_amount_currency_symbol}}{{total_donation_amount}}

Show session sub count

{{session_subscriber_count}} subs this session - let's go!

Show top tipper this session

Session top tipper: {{session_top_tipper}} with {{session_top_tipper_amount}}

Show the streamer's current game / title

Playing {{game}} - {{title}}

Show a recent-events feed

Recent tips: {{recent_tips}}
Recent followers: {{recent_followers}}

Use chat input

Echo back the rest of the command

{{message}}

Get the first / second argument

{{arg=1}} challenges {{arg=2}} to a duel!

Fall back when an argument is missing

Hugs to {{coalesce={{arg=1}},a friendly viewer}}

Random + math

Random integer in a range

You rolled a {{random=1-100}}

Random pick from a fixed list

Your class is {{random_inputs=Wizard,Goblin,Tank,NPC,Speedrunner}}

Math expression with variables

That's {{math={{count=deaths}}*2}} deaths-equivalent

Mod actions in a command

Time a user out from a chatbot response

{{nuke_username={{arg=1}},600}}

Self-timeout (vanish)

{{vanish}}

Change the stream title

{{settitle={{message}}}}Title updated to {{message}}

Counters

Increment a counter

That's death #{{counter=deaths,+1}}. Pain.

Read a counter without incrementing

Sub goal: {{subgoal}} / 100

Reset a counter

{{counter=deaths,=0}}Deaths reset.

Loyalty

Show the caller's loyalty rank

{{username}}'s rank: {{user_rank}}

Top 5 loyalty holders

Top 5: {{loyalty_top=5}}

Give a viewer points

{{add_points={{arg=1}},{{arg=2}}}}Added {{arg=2}} points to {{arg=1}}

External data

Hit a custom API

{{read_url=https://twitch.center/customapi/quote?token=abc123&no_id=1}}

Pull a specific JSON field

Today's joke: {{read_url=https://x.com/api,setup}} - {{read_url=https://x.com/api,punchline}}

Weather

{{weather=Seattle}}

AI prompt

{{ai_prompt=Roast {{message}} in 20 words or less, twitch-safe}}

Build a goal that auto-updates

Add a Goal layer to your overlay and set:

  • value: {{total_donation_amount}} (current progress)
  • valueGoal: {{tip_goal}} (the target)

The valueGoal template resolves on every render, so the bar updates whenever the goal variable is rewritten.

The same pattern works for:

  • {{follower_goal}}, {{subscriber_goal}}, {{cheer_goal}}, {{superchat_goal}}
  • {{merch_goal_orders}}, {{merch_goal_items}}, {{merch_goal_total}}

Fire an overlay HFX from a chat command

The chatbot command's HFX action picker writes the HFX content. Lumia routes the dispatch through OverlayManager.send(HFX, …) - no template syntax needed. If you want to programmatically pause SFX globally without ripping the HFX out of every command:

{{set_sfx_muted=true}}

That suppresses TTS, HFX audio, and AudioManager.play calls until you flip it back.

Send a chat message from a custom action

The chatbot has an inbuilt chatbot message field. For more dynamic flows (e.g. inside Custom JS), use the IPC:

await ipcRenderer.invoke("chatbot:send", { site: "twitch", message: "Hello from custom JS" });

Wire a chat command to an overlay layer (no chatbot command needed)

The Emote Alert and Hype Train layers both support a chatTrigger config:

{
"chatTrigger": {
"enabled": true,
"command": "!kappagen",
"allowedRoles": ["anyone"],
"cooldownSeconds": 10
}
}

See Chat triggers for the pattern and how to build it into your own layers.

I'm new - where do I go next?