Skip to content

Ads and raids

Timers post on a clock. The things on this page post on an event: an ad break starting, a raid arriving, you going offline. They are the small announcements you would otherwise type yourself while doing three other things.

All of them are Twitch only, because they ride Twitch’s ad, raid and shoutout APIs, and there is no equivalent to point at on Kick or YouTube.

Three independent messages, each with its own on switch and its own text.

MessageFiresDefault text
UpcomingAbout a minute before a scheduled breakHeads up, an ad break starts in about a minute.
StartWhen the break beginsAds are running for {durationFS}. Thanks for sticking around, we will be right back.
EndWhen it finishesAds are done, welcome back.

The upcoming message comes from polling your ad schedule once a minute while you are live, and fires when the next break is 60 seconds out or less. Start and end come from Twitch telling Pyre the break began, plus its length.

Four ways to write the same number, so the line reads the way you want it to:

Placeholder30 second break60 second break180 second break
{durationS}3060180
{durationM}0.513
{durationFS}30 seconds60 seconds180 seconds
{durationFP}0.5 minutes1 minute3 minutes

{durationFS} and {durationFP} handle their own plurals, so 1 second and 1 minute come out right without you writing two versions of the line.

Anyone can type it, it answers once every 30 seconds per channel, and it reads the same schedule the upcoming message does:

@petra the next ad break is in about 4 minutes. You have pre-roll-free time for the next 2 min.

The pre-roll-free part only appears when Twitch reports one. With nothing scheduled it says no ad break is scheduled right now., and if the schedule cannot be read it says that too rather than guessing.

Four more verbs belong to Ad Manager, the feature that moves your ad breaks into downtime. They are the chat version of the buttons on the Stream Manager card, and each of them takes two spellings, so you can type whichever one you remember:

VerbAlso acceptsWho may type it
!adsAnyone
!adsnow!ads nowYou, and moderators if you allow it
!adshold <minutes>!ads hold 20You, and moderators if you allow it
!adsresume!ads resumeYou, and moderators if you allow it

!ads is the status line, and it reads the same ledger the cockpit card does, so the two can never describe your channel differently:

@petra Next ad break in 4 min. 3 of 9 ad minutes banked this hour. 2 snoozes left.

Each part swaps for the truth of the moment. A live hold outranks everything and reads Ads are held for 12 more minutes. Off air it says You are not live right now, so Twitch has nothing scheduled. With nothing scheduled it says No ad break scheduled right now., and before Pyre has read your schedule at all, Pyre has not read your ad schedule yet. The minutes banked are always there, because they are Pyre’s own count rather than Twitch’s answer.

!adsnow starts a real break. !adshold stops Pyre picking moments for a while, and !adsresume releases it again. The bot confirms each one in a few words: running an ad break now., holding ads for 20 minutes., ad hold released.

!adshold with no number holds for 15 minutes, and the longest a single hold may ask for is 180. A number that is not a duration gets a usage line rather than a silent default, because holding somebody’s ads for a quarter of an hour they did not ask for is worse than saying nothing:

use !adshold <minutes>, for example !adshold 20. Leave the number off and Pyre holds for 15.

If Ad Manager is not armed on your channel, the fire verbs refuse instead of queueing something that would run the moment you did arm it:

Pyre is not managing ads on this channel right now. Arm it on the Ads settings page.

The three fire verbs are yours alone out of the box. On the Ads settings page in Pyre.Stream there is one switch, Moderators may run ads with !adsnow, and Off means only you can start a break from chat. While it is off, a mod who tries gets the sentence that names the switch:

Only the broadcaster can run ads from chat. Turn on "moderators may fire" in Ads settings to change that.

!ads itself is everyone level, and like !nextad it answers at most once every 30 seconds per channel. You and an allowed mod are never throttled: asking twice for your own ad break should not be met with silence.

The worst possible moment for an ad break is thirty seconds after a hundred new people arrive. With this on, an incoming raid makes Pyre check your schedule, and if the next break is five minutes out or less it spends one of your snoozes and tells chat:

A raid is here, so I snoozed the next ad break to keep the party going.

Twitch gives you a limited number of snoozes that refill over time. If you have none left, Twitch refuses and nothing happens, which is the right outcome: nothing else in your stream changes.

An incoming raid can fire Twitch’s own shoutout and a chat line of your own, each on its own switch, so you can have either or both.

The settings, with the defaults they ship with:

SettingDefaultWhat it does
Minimum viewers2Raids smaller than this are ignored
Delay5 secondsHow long to wait after the raid lands
Twitch shoutoutOnFires the platform’s own shoutout
Custom messageOffPosts your line in chat
Allowlist modeOffOn, only raiders you wrote a message for get shouted out

The default line is:

Go give {username} some love at {url} — they were last streaming {category}.

and you can use any of {username}, {url}, {title}, {category} and {viewers}.

You can write a specific message for a specific channel, and a message for a whole Twitch team. Pyre resolves them in that order: a message written for that raider wins, then a message written for a team they are on, then your default line. If you have no team messages at all, Pyre does not ask Twitch about teams, so you pay nothing for a feature you are not using.

Allowlist mode turns the same data into a guest list. With it on, only the raiders who have a message of their own (or a team message) are shouted out at all. It is the setting for a channel that wants shoutouts for its friends and silence for everyone else.

Two more, on the other side of a raid.

The post-raid message fires when you raid somebody else, so the viewers who did not travel know where everyone went. It ships off, and its default is:

We are raiding {username}! Get over to {url} and say hi.

!raiders is a viewer command that thanks everyone who raided you this stream:

@petra thank you to this stream's raiders: alice, bob and carol.

The list is per stream and resets when you go live, so it is a thank-you at the end of a session rather than a running history. With nothing in it, the bot says no raids so far this stream. Like !nextad, it answers once every 30 seconds per channel.

Two checks bracket your stream. Both ship off, both are Twitch only, and both live with the protection settings rather than here.

Offline lockdown turns Shield Mode on a while after your stream ends, which is the window where a chat with nobody watching it gets found. The delay is yours, from 0 to 3600 seconds, and it starts at five minutes. Going live again before it fires cancels it. It never touches your Shield Mode profile settings, and it never turns Shield back off again.

The go-live check reads your chat settings when you go live and tells you, in your own chat, if something restrictive is still on from last time:

Heads up. Your chat still has followers-only mode and Shield Mode on from before. Turn it off if you did not mean to leave it on.

It looks at followers-only, subscribers-only, emote-only, slow mode and Shield Mode, and it names exactly the ones that are on.

  • Ad Manager for the feature the four !ads verbs drive.
  • Timers for messages on a clock rather than on an event.
  • Protection for Shield Mode, lockdowns and the panic button.
  • Commands for the Built in commands card, where !nextad and !raiders are listed.