Content creators
Give your streamers a role, let them link their own channels, and FiveUnity posts in your go-live channel the moment they start streaming on Twitch, YouTube, Kick or TikTok.
Where: Dashboard โ Content โ Content creators ยท In Discord: /link
The module is off by default. Nothing is checked, nobody can link anything, and no message is posted until you turn it on.
#Turning it on
Four things have to be in place. The page tells you which one is still missing at the top, in this order.
| Setting | What it does |
|---|---|
| Enabled | The switch in the Go-live announcements header. Off, the module does nothing at all. |
| Creator roles | Who may link a channel and be announced. Pick as many as you like, up to 10. Any one of them is enough, so "Partner", "Content Creator" and "Streamer" can all qualify without setting the module up three times. Pick none and nobody may link. |
| Go-live channel | Where the announcement is posted. |
| Platforms | At least one of Twitch, YouTube, Kick or TikTok. |
Two more are optional:
| Setting | What it does |
|---|---|
| Ping role | Mentioned alongside the creator on each announcement. Left unset, only the creator themselves is pinged. |
| Live role | Given to a creator while they are streaming and taken back when they stop. A role carrying Administrator is never handed out, whatever you pick. |
#Members link their own channels
Once someone holds a creator role, they run /link in your Discord. Nothing about it is public: every reply is only visible to them.
| Command | What it does |
|---|---|
/link add platform: channel: | Links one channel. channel takes the account name or the full link: ninja, twitch.tv/ninja, @mrbeast, youtube.com/channel/UCโฆ, kick.com/xqc, tiktok.com/@name. |
/link remove platform: | Unlinks one channel. |
/link list | Shows what they have linked here, and whether each one is live. |
One account per platform per member, and one member per account: if somebody has already claimed a channel on your server, nobody else can. Running /link add again for the same platform replaces the channel rather than adding a second one.
You can see every linked channel under Linked channels on the dashboard, with who claimed it and when they were last live, and unlink one if the wrong account was claimed. Adding a link stays in Discord on purpose: holding the role is how a creator proves the channel is theirs.
#The announcement
The go-live message is one line above an embed. The embed carries the stream title, category, viewer count and thumbnail, coloured by platform, and links straight to the stream.
| Placeholder | Becomes |
|---|---|
{user} | A mention of the creator |
{name} | Their channel name |
{platform} | Twitch, YouTube, Kick or TikTok |
{title} | The stream title |
{url} | The link to the stream |
{game} | The category they are streaming under, where the platform reports one |
The default is {user} is now live on {platform}!, and the message is capped at 500 characters.
Everything that comes from the streaming platform is escaped before it is posted, and an announcement can only ever mention the creator and the ping role you chose, so a stream titled @everyone free nitro cannot ping your server.
| Setting | What it does |
|---|---|
| Repeat cooldown | Minutes before the same channel may be announced again, 0 to 1440. Defaults to 60. A creator whose connection drops and comes back would otherwise be posted twice, because the platform treats the reconnection as a new stream. |
| Delete when the stream ends | Removes the announcement once they stop, for a channel that should show only who is live right now. Off by default. |
Re-announce live streams forgets every stream that has already been posted, so anyone live right now is announced again on the next check. Use it after fixing a wrong go-live channel; it is the only way to get a stream posted that FiveUnity has already recorded.
#Platforms
Only the platforms you turn on are checked, and only those can be linked.
| Platform | How it is checked |
|---|---|
| Twitch | The official Twitch API. Needs an application on the bot host (see below). Up to 100 channels per request, so it is the cheapest platform to watch at scale. |
| Kick | Kick's public channel endpoint. No credentials needed. |
| YouTube | The channel's own /live page. No credentials and no API quota needed. |
| TikTok | The same live-state endpoint TikTok's own web app uses, which answers without credentials. TikTok publishes no live API to anybody, so this one is best effort and can change without notice. |
Everyone is checked every three minutes, so an announcement lands within about three minutes of a stream starting.
A switch you cannot turn on is one this bot has not been given credentials for. It says so on the page, and members are told the same thing if they try to link there.
Self-hosting? Twitch needs TWITCH_CLIENT_ID and TWITCH_CLIENT_SECRET in your .env, from an application registered at dev.twitch.tv/console/apps. Any OAuth redirect URL will do; FiveUnity only uses the app credentials, never a user login. The other three platforms need nothing.
#Stream metrics
Every stream the module announces is also counted. Nothing extra to switch on: while the module is on, FiveUnity records each stream's platform, how long it ran, the viewer counts it saw while live, and whether the announcement went out.
The numbers appear in two places:
| Where | What it shows |
|---|---|
/streamstats in Discord | A private leaderboard of the last 30 days, ranked by time live, plus /streamstats member:@someone for one member's all-time totals. Open to every member; every reply is private. |
| Dashboard โ Content creators | Stream metrics panel under the settings: streams announced all-time, hours live over 30 days, the peak viewer count, and the same leaderboard. |
| Figure | What it is exactly |
|---|---|
| Streams announced | One per stream. A restart, a dropped connection or a repeat cooldown never double-counts a stream. The all-time count never falls, even as detail ages out. |
| Time live | From when the platform says the stream started to the last check that saw it live. |
| Viewers | Peak and average across the checks while the stream ran. YouTube does not report viewer counts, so those streams show none. |
| Announcement posted | Whether the go-live message actually went out. A stream behind a lost creator role is still counted: the metrics measure the stream, not the post. |
Individual streams are kept 90 days; the 30-day leaderboard reads inside that. Nothing is deleted when the module is turned off: the numbers simply stop growing until it is back.
The leaderboard is grouped per member per platform. A member streaming on both Twitch and Kick appears twice; use /streamstats member:@them for their totals across everything they have linked.
#When a check fails
A check that fails is never treated as "offline". If it were, a service blocking the bot for ten minutes would end every stream in your Discord and re-announce them all when it came back.
Instead the failure is counted on that channel and shown under Linked channels with the reason. A channel that keeps failing is checked less and less often, down to once an hour, until it starts working again, usually because the account was renamed or deleted. Unlink it and link the new name.
If every check against one platform fails twice in a row (roughly six minutes), the bot's emergency contact is sent one critical alert for that platform, and a second message when the checks recover. One channel failing, or a platform being flaky while some checks still succeed, alerts nobody. This is how a platform quietly changing what its checks read gets noticed the same day rather than when a streamer asks why they were never announced.
An answer the checker cannot understand (a bot challenge, a consent wall, a page that changed shape) is a failed check, never "offline": the same rule that keeps a block from ending every stream in your Discord is what feeds the alert.
#What Discord sees
/linkis open to every member, and refuses anybody without a creator role. It never posts publicly.- The announcement is the only message the module sends, and only in the go-live channel.
- Nothing is ever deleted except an announcement whose stream has ended, and only with Delete when the stream ends on.
- Unlinking a channel, turning the module off, or removing a creator's role all stop announcements immediately. Nothing already posted is touched.