#Getting started
Protostar is set up from your browser or with slash commands in Discord. Getting going takes about a minute.
- Add Protostar to your server. Use the Add to Discord button on the homepage. You need the Manage Server permission.
- Move its role up. In Server Settings, Roles, drag the Protostar role above every role you want it to hand out or moderate. Discord won't let a bot manage roles above its own.
- Open the dashboard and log in with Discord. Every server you manage appears there.
- Switch on what you want. Everything starts on sensible defaults.
#The dashboard
The dashboard has a page for each feature. Change anything, and a bar appears at the bottom with Save changes and Discard. Nothing changes in your server until you save.
- Every option has a ? next to it. Hover, tap or tab to it for a plain-words explanation.
- The dots in the sidebar show which features are switched on.
- Use the server menu at the top to switch between your servers.
- Tick Keep me signed in when logging in to stay signed in on that device for 30 days. Log out to forget the device.
#Moderation
Every warning, timeout, kick and ban becomes a numbered case, so your team has a record. Set a mod log channel and each case is posted there too.
- Members are messaged privately when they're moderated, with the reason. Turn this off with
/modsettings dm. - Moderators can't act on someone whose highest role is the same as or above their own, and Protostar can't act on anyone above its own role.
/banalso works on people who aren't in the server, so troublemakers can be banned before they join./purgechecks up to 100 recent messages and can filter by member, text or bots.
| Command | What it does | Who can use it |
|---|---|---|
/warn | Warn a member
| Timeout Members |
/warnings | List a member's warnings
| Timeout Members |
/clearwarns | Remove all of a member's warnings
| Timeout Members |
/case | Show or delete a moderation case
| Timeout Members |
/timeout | Time a member out (mute)
| Timeout Members |
/untimeout | Remove a member's timeout
| Timeout Members |
/kick | Kick a member
| Kick Members |
/ban | Ban a user (they don't need to be in the server)
| Ban Members |
/unban | Unban a user by ID
| Ban Members |
/purge | Bulk delete recent messages
| Manage Messages |
/slowmode | Set slowmode for this channel (0 turns it off)
| Manage Channels |
/lock | Stop @everyone from sending messages in a channel
| Manage Channels |
/unlock | Let @everyone send messages in a channel again
| Manage Channels |
/modsettings modlog | Where moderation actions are posted
| Manage Server |
/modsettings dm | DM members when they're warned, timed out, kicked or banned
| Manage Server |
#Automod
Automod removes unwanted messages and gives the sender a strike. Reach the strike limit within 10 minutes and the member is timed out. It starts switched off: turn it on in the dashboard or with /automod enable.
| Rule | What it removes | Starts |
|---|---|---|
| Invites | Invites to other Discord servers | On |
| Links | Links to websites that aren't on your allowed list | Off |
| Blocked words | Messages with a word from your list | Off until you add words |
| Mass mentions | Messages that ping 5 or more people or roles | On |
| Capitals | Long messages that are 70% or more capital letters | Off |
| Spam | 5 or more messages within 5 seconds | On |
| Repeats | The same message sent 3 times within 30 seconds | On |
By default, 3 strikes within 10 minutes means a 10 minute timeout. Set strikes to 0 to never time anyone out.
Blocked words
- Words match whole words only, in any capitals: blocking
spamdoesn't catchspammer. - End a word with
*to catch longer words that start with it:spam*catches spammer and spamming. - Simple disguises are caught too (0 as o, 1 as i, 3 as e, 4 as a, 5 as s, 7 as t, @ as a, $ as s, ! as i).
- Add several at once by separating them with commas.
Allowed websites and exceptions
Allowed websites include their subdomains, so youtube.com covers www.youtube.com. Starting list: youtube.com, youtu.be, twitch.tv, kick.com, tenor.com, giphy.com.
Members who can manage messages are never filtered, and you can exempt any role or channel.
| Command | What it does | Who can use it |
|---|---|---|
/automod status | Show automod settings | Manage Server |
/automod enable | Turn automod on or off
| Manage Server |
/automod rule | Turn one automod rule on or off
| Manage Server |
/automod limit | Change an automod limit
| Manage Server |
/automod words add | Block words (comma separated; end with * to match word starts)
| Manage Server |
/automod words remove | Unblock words (comma separated)
| Manage Server |
/automod words list | Show blocked words (only you see this) | Manage Server |
/automod allowlink | Allow or disallow a website for the links rule
| Manage Server |
/automod exempt | Exempt (or un-exempt) a role or channel from automod
| Manage Server |
#Logs
Logs post what happens in your server to one channel. Pick a private channel only your team can see.
| Log | What's posted | Starts |
|---|---|---|
| Messages | Deleted and edited messages, with what they said before | On |
| Members | Joins, leaves and nickname changes | On |
| Roles | Roles added to or removed from members | On |
| Voice | Members joining, leaving and switching voice channels | Off |
| Moderation | Bans and unbans, including ones done without the bot | On |
Messages from ignored channels are never logged.
| Command | What it does | Who can use it |
|---|---|---|
/logs channel | Where server logs are posted
| Manage Server |
/logs toggle | Turn a kind of log on or off
| Manage Server |
/logs ignore | Don't log messages from a channel (or start again)
| Manage Server |
#Leveling
Members earn 15 to 25 XP for a message, at most once every 60 seconds, so sending lots of messages quickly doesn't help. Both are adjustable.
Each level needs a little more XP than the last. The XP to go from level L to the next is 5 × L² + 50 × L + 100.
| Level | Total XP | About how much chatting |
|---|---|---|
| 1 | 100 | 5 minutes of active chatting |
| 5 | 1,150 | 58 minutes of active chatting |
| 10 | 4,675 | 234 minutes of active chatting |
| 20 | 23,850 | 1,192 minutes of active chatting |
| 50 | 268,375 | 13,419 minutes of active chatting |
- Rewards give roles at the levels you choose. Members either keep every reward role, or only their highest one.
- Level-up messages can go in the channel they were chatting in, a specific channel, a private message, or nowhere.
- No-XP channels and roles never earn XP.
/rankshows a rank card in your server's color, and/leaderboardshows the top members.
| Command | What it does | Who can use it |
|---|---|---|
/rank | Show a rank card
| Everyone |
/leaderboard | Top members by XP
| Everyone |
/levels enable | Turn leveling on or off
| Manage Server |
/levels announce | Where level-up messages go
| Manage Server |
/levels message | Level-up message. Use {user}, {user.name}, {level}, {server}
| Manage Server |
/levels reward | Give a role at a level (leave role empty to remove that level's reward)
| Manage Server |
/levels rewards | List level rewards | Manage Server |
/levels stack | Keep earlier reward roles (on) or only the highest (off)
| Manage Server |
/levels noxp | Stop (or restart) XP in a channel or for a role
| Manage Server |
/levels xp | Give, take or set a member's XP
| Manage Server |
/levels reset | Reset one member's XP, or everyone's
| Manage Server |
/levels xprate | XP per message and the cooldown between XP gains
| Manage Server |
/levels cardcolor | Rank card accent color, like #7C9CFF
| Manage Server |
#Welcome and auto-roles
Greet new members in a channel, say goodbye when someone leaves, and message newcomers privately. Messages use placeholders like {user} and {server}.
- Auto-roles are given to everyone who joins. Bots can get their own separate roles.
- Roles above Protostar's own role can't be given out.
/welcome testposts the welcome message as if you just joined.
| Command | What it does | Who can use it |
|---|---|---|
/welcome join | Welcome message channel and text
| Manage Server |
/welcome leave | Goodbye message channel and text
| Manage Server |
/welcome dm | Message new members privately (leave empty to turn off)
| Manage Server |
/welcome off | Turn off welcome or goodbye messages
| Manage Server |
/welcome autorole | Add or remove a role given to everyone who joins
| Manage Server |
/welcome test | Preview the welcome message as if you just joined | Manage Server |
#Role buttons
Role buttons let members pick their own roles with one click. Clicking again removes the role. Buttons keep working after the bot restarts.
- Run
/rolepanel createin the channel where the panel should go. - Right-click the panel and choose Copy Message Link.
- Run
/rolepanel addwith that link and a role. Add a label, emoji or color if you like.
A panel holds up to 25 buttons. Make as many panels as you need.
| Command | What it does | Who can use it |
|---|---|---|
/rolepanel create | Post a new role panel in this channel
| Manage Roles |
/rolepanel add | Add a role button to a panel
| Manage Roles |
/rolepanel remove | Remove a role button from a panel
| Manage Roles |
#Connections and live alerts
Protostar posts in your server the moment someone goes live, with the stream's title, game, viewers and thumbnail, and an optional ping. When the stream ends, the post updates to say how long it ran.
Connections
In the dashboard's Connections page, link the accounts your server follows. Twitch, Kick and TikTok connect by signing in, which proves the account belongs to the person connecting it and marks it Verified. Signing in with TikTok also turns on alerts for your new TikTok videos. Other platforms are added by name, and Protostar finds their picture for you.
Supported platforms
| Platform | How to add it | How often it's checked |
|---|---|---|
| Twitch | Sign in with Twitch, or add by name | About every 1 minute |
| Kick | Sign in with Kick, or add by name | About every 1 minute |
| YouTube | Channel handle (like @name) or channel ID | About every 2 minutes |
| Trovo | Trovo username | About every 1 minute |
| Picarto | Picarto username | About every 1 minute |
| Owncast | Your Owncast server's address | About every 1 minute |
| Rumble | The creator's Live Stream API link from their Rumble account | About every 1 minute |
| TikTok experimental | TikTok username | About every 2 minutes |
Alerts
- Choose who to ping: nobody, a role,
@everyoneor@here. - Write your own message with alert placeholders, or leave it empty for the standard one.
- Send test posts a clearly marked test alert with the real ping, so you can check it works without going live.
- A short connection drop doesn't end the stream, and restarting within 10 minutes doesn't ping everyone again.
| Command | What it does | Who can use it |
|---|---|---|
/alerts add | Post an alert when someone goes live
| Manage Server |
/alerts list | Show this server's alerts | Manage Server |
/alerts remove | Remove an alert (see the numbers in /alerts list)
| Manage Server |
/alerts test | Post a sample alert so you can see how it looks
| Manage Server |
#Placeholders
Placeholders are words in curly brackets that Protostar swaps for real details when it posts. Anything it doesn't recognise is left exactly as you typed it.
Welcome, goodbye and private welcome messages
| Placeholder | Becomes | Example |
|---|---|---|
{user} | A mention of the member | @nova |
{user.mention} | The same as {user} | @nova |
{user.name} | Their display name, without a ping | nova |
{user.id} | Their Discord user ID | 123456789012345678 |
{server} | Your server's name | Night Owls |
{membercount} | How many members your server has | 214 |
Level-up messages
Everything above, plus:
| Placeholder | Becomes | Example |
|---|---|---|
{level} | The level they just reached | 5 |
{channel} | The channel they were chatting in | #general |
Live alerts
| Placeholder | Becomes | Example |
|---|---|---|
{name} | The streamer's name | nova |
{title} | The stream's title | Ranked grind until diamond |
{game} | The game or category | Valorant |
{url} | A link to the stream | https://twitch.tv/nova |
{platform} | Where they're streaming | Twitch |
{viewers} | How many are watching | 214 |
The standard alert message is {name} is live on {platform}! {url}.
Social posts
| Placeholder | Becomes | Example |
|---|---|---|
{name} | The account's name | Nova |
{title} | The video's or article's title (posts on Bluesky and Mastodon don't have one) | My new setup tour |
{text} | The start of the post | Big news today... |
{url} | A link to the post | https://bsky.app/profile/nova.bsky.social/post/... |
{platform} | Where it was posted | Bluesky |
The standard messages are {name} just posted a new video! {url} for YouTube, {name} posted on Bluesky: {url} for Bluesky, {name} posted on Mastodon: {url} for Mastodon, {name} posted a new TikTok! {url} for TikTok, New from {name}: {url} for RSS feed.
#Durations and other formats
Durations
Used by /timeout and /slowmode. Combine units with no spaces.
| Write | Means |
|---|---|
30s | 30 seconds |
10m | 10 minutes |
2h | 2 hours |
1d | 1 day |
1w | 1 week |
1d12h | 1 day and 12 hours |
- A plain number means minutes for
/timeoutand seconds for/slowmode. - Timeouts can last up to 28 days. Slowmode goes up to 6 hours, and
0turns it off.
Colors
Colors use hex codes, like #7C9CFF. The dashboard has a color picker.
#All commands
Every command, grouped by feature. Settings commands need Manage Server, and moderation commands need the matching moderation permission.
Moderation
| Command | What it does | Who can use it |
|---|---|---|
/warn | Warn a member
| Timeout Members |
/warnings | List a member's warnings
| Timeout Members |
/clearwarns | Remove all of a member's warnings
| Timeout Members |
/case | Show or delete a moderation case
| Timeout Members |
/timeout | Time a member out (mute)
| Timeout Members |
/untimeout | Remove a member's timeout
| Timeout Members |
/kick | Kick a member
| Kick Members |
/ban | Ban a user (they don't need to be in the server)
| Ban Members |
/unban | Unban a user by ID
| Ban Members |
/purge | Bulk delete recent messages
| Manage Messages |
/slowmode | Set slowmode for this channel (0 turns it off)
| Manage Channels |
/lock | Stop @everyone from sending messages in a channel
| Manage Channels |
/unlock | Let @everyone send messages in a channel again
| Manage Channels |
/modsettings modlog | Where moderation actions are posted
| Manage Server |
/modsettings dm | DM members when they're warned, timed out, kicked or banned
| Manage Server |
Automod
| Command | What it does | Who can use it |
|---|---|---|
/automod status | Show automod settings | Manage Server |
/automod enable | Turn automod on or off
| Manage Server |
/automod rule | Turn one automod rule on or off
| Manage Server |
/automod limit | Change an automod limit
| Manage Server |
/automod words add | Block words (comma separated; end with * to match word starts)
| Manage Server |
/automod words remove | Unblock words (comma separated)
| Manage Server |
/automod words list | Show blocked words (only you see this) | Manage Server |
/automod allowlink | Allow or disallow a website for the links rule
| Manage Server |
/automod exempt | Exempt (or un-exempt) a role or channel from automod
| Manage Server |
Logs
| Command | What it does | Who can use it |
|---|---|---|
/logs channel | Where server logs are posted
| Manage Server |
/logs toggle | Turn a kind of log on or off
| Manage Server |
/logs ignore | Don't log messages from a channel (or start again)
| Manage Server |
Leveling
| Command | What it does | Who can use it |
|---|---|---|
/rank | Show a rank card
| Everyone |
/leaderboard | Top members by XP
| Everyone |
/levels enable | Turn leveling on or off
| Manage Server |
/levels announce | Where level-up messages go
| Manage Server |
/levels message | Level-up message. Use {user}, {user.name}, {level}, {server}
| Manage Server |
/levels reward | Give a role at a level (leave role empty to remove that level's reward)
| Manage Server |
/levels rewards | List level rewards | Manage Server |
/levels stack | Keep earlier reward roles (on) or only the highest (off)
| Manage Server |
/levels noxp | Stop (or restart) XP in a channel or for a role
| Manage Server |
/levels xp | Give, take or set a member's XP
| Manage Server |
/levels reset | Reset one member's XP, or everyone's
| Manage Server |
/levels xprate | XP per message and the cooldown between XP gains
| Manage Server |
/levels cardcolor | Rank card accent color, like #7C9CFF
| Manage Server |
Welcome
| Command | What it does | Who can use it |
|---|---|---|
/welcome join | Welcome message channel and text
| Manage Server |
/welcome leave | Goodbye message channel and text
| Manage Server |
/welcome dm | Message new members privately (leave empty to turn off)
| Manage Server |
/welcome off | Turn off welcome or goodbye messages
| Manage Server |
/welcome autorole | Add or remove a role given to everyone who joins
| Manage Server |
/welcome test | Preview the welcome message as if you just joined | Manage Server |
Role buttons
| Command | What it does | Who can use it |
|---|---|---|
/rolepanel create | Post a new role panel in this channel
| Manage Roles |
/rolepanel add | Add a role button to a panel
| Manage Roles |
/rolepanel remove | Remove a role button from a panel
| Manage Roles |
Live alerts
| Command | What it does | Who can use it |
|---|---|---|
/alerts add | Post an alert when someone goes live
| Manage Server |
/alerts list | Show this server's alerts | Manage Server |
/alerts remove | Remove an alert (see the numbers in /alerts list)
| Manage Server |
/alerts test | Post a sample alert so you can see how it looks
| Manage Server |
Social posts
| Command | What it does | Who can use it |
|---|---|---|
/social add | Post an alert when an account posts something new
| Manage Server |
/social list | Show this server's social alerts | Manage Server |
/social remove | Remove a social alert (see the numbers in /social list)
| Manage Server |
/social test | Post the account's latest post as a test, so you can see how it looks
| Manage Server |
Info and settings
| Command | What it does | Who can use it |
|---|---|---|
/help | What this bot can do | Everyone |
/ping | Check the bot is alive | Everyone |
/settings | Overview of this server's bot settings | Manage Server |
/serverinfo | About this server | Everyone |
/userinfo | About a member
| Everyone |
/avatar | Show someone's avatar
| Everyone |
#Permissions Protostar needs
The Add to Discord button asks for exactly the permissions Protostar uses, and never Administrator, so the bot can only ever do what its features need. Here's what each one is for:
| Feature | Permissions |
|---|---|
| Everything | View Channels, Send Messages, Embed Links, Attach Files, Read Message History |
| Moderation | Timeout Members, Kick Members, Ban Members, Manage Messages, Manage Channels |
| Automod | Manage Messages, Timeout Members |
| Leveling rewards, auto-roles, role buttons | Manage Roles, with Protostar's role above the roles it gives |
| Live alert and social post pings | Mention @everyone, @here and All Roles |
#Troubleshooting
- Protostar's commands don't show up.
- Press Ctrl+R in Discord to refresh. Commands you don't have permission for are hidden from you.
- It says a role is above its own.
- In Server Settings, Roles, drag the Protostar role above the role it's trying to give.
- A message didn't post.
- Check Protostar can see the channel and has Send Messages and Embed Links there.
- A live alert didn't post.
- Check the account name, and that the platform isn't marked as not set up. Alerts post within a minute or two of going live, sometimes a little longer on YouTube. Use Send test to check the channel and ping.
- A social post wasn't announced.
- Posts are announced within a few minutes. Reposts, replies and posts that aren't public are skipped, and so are posts older than 2 days. If a feed can't be read, check its address opens in your browser and starts with https://.
- A ping didn't notify anyone.
- Protostar needs the Mention @everyone, @here and All Roles permission, or the role must be set to allow anyone to mention it.
- How do I give Protostar its blue name?
- Discord doesn't let bots change the color of their own role, so this one's up to you: in Server Settings, Roles, choose the Protostar role, then Color, and enter
#9AD1FF. If your server gives Protostar a role above its own, it colors its role by itself. - There's an old role called "Protostar color".
- Older versions made that role for the name color. Protostar now removes it by itself, unless someone changed it, in which case you can delete it: it has no permissions.
- My server isn't on the dashboard.
- You need Manage Server in that server, and Protostar must be in it. Choose Refresh your server list on the servers page.
#Privacy
Protostar keeps only what it needs to work:
- Your server's settings, as you set them in the dashboard or with commands.
- XP and message counts for leveling. Counts only: message text isn't stored.
- Moderation cases, with the reasons your moderators give.
- Connected streaming accounts: their public names and pictures. For TikTok, also the sign-in that lets Protostar see the creator's public videos, stored encrypted.
- Followed social accounts and feeds, and which of their public posts were already announced.
Messages are read to apply automod rules and award XP, then forgotten. Deleted and edited message logs go to your own log channel in Discord. Signing in to the dashboard never shares your email address, and Protostar stores no IP addresses. A server's data is deleted 30 days after Protostar is removed from it, and adding it back within that time keeps everything as it was.
The full details are in the Privacy Policy, and the rules for using Protostar are in the Terms of Service.
Cookies
The website only sets cookies when you sign in to the dashboard: one keeps you signed in while you use it, and, if you tick Keep me signed in, another remembers your device for 30 days. Logging out removes them. There are no advertising or tracking cookies.
Nothing matches that search.
#Social posts
Protostar can also post when an account shares something new: a new YouTube or TikTok video, a Bluesky or Mastodon post, or a new item in any RSS or Atom feed. That covers blogs, Substack newsletters, podcasts, Tumblr and most news sites.
/social add.TikTok videos
TikTok only lets apps see a creator's videos after the creator agrees, so the creator sets this up themselves:
/social addplatformchoice Where they postaccounttext Their handle, address or feed linkchannelchannel Where to post the alertpingrole optional Role to ping (optional)ping_everyonetrue / false optional Ping @everyone instead of a rolemessagetext optional Custom text: {name} {title} {text} {url} {platform}/social list/social removenumbernumber 1 to 50/social testnumbernumber 1 to 50 optional