# Starboard

Thanks for coming to Starboards docs! The point of this is to answer any questions you might have about what a starboard is, and how to use this bot. If you ever have any questions, feel free to join [the support server.](https://discord.gg/3gK8mSA)

Click [here](https://discord.com/api/oauth2/authorize?client_id=700796664276844612\&permissions=275683339328\&scope=bot%20applications.commands) to invite starboard.

The source code for Starboard is available [here](https://github.com/circuitsacul/starboard-4). You're welcome to self-host it if you like.

## Quick Start

To get a working starboard, see [Basic Starboard](/tutorials/basic-starboard). See [Starboards](/docs/starboards) for more detailed info on how to use starboards.

## What is a Starboard?

A starboard is a discord bot that essentially allows users to "vote" to "pin" messages, but instead of pinning them to the channel using Discord's pins, they are sent to your starboard. Usually, it works like this:

* You create a channel called #starboard.
* If someone sends a funny message, people can react to that message with ⭐.
* Once the message receives a certain number of :star: reactions, the message is sent to the #starboard.

## Why this Starboard?

It would be easy to create a simple Starboard bot that can just do the basics, where you set a channel and a number, and you're done. But with this bot, you can do so much more - from having multiple starboards all the way to setting specific permissions for each role.

This bot is sometimes confusing to new users, but once you figure out how to use it, you can customize the bot to fit your servers needs perfectly.

## Key Features

* Multiple starboards per server
* Multiple upvote and downvote emojis per starboard
* 25+ configurable options per starboard
* Per-channel settings overrides
* Per-role permissions
* Autostar channels


# Premium

Starboard premium works with "credits". Each US $ you spend is equivalent to 1 credit for you. Once you reach 3 credits, you can redeem 1 month of premium in 1 server. So, to have premium in one server, it would cost $3/month.

Currently, the only way to get credits is by becoming a patron: <https://patreon.com/CircuitSacul>

## Perks

* Up to 20 starboards instead of 3.
* Up to 50 autostar channels instead of 3.
* Up to 20 emojis per starboard instead of 3.
* Up to 20 emojis per auotstar channel instead of 3.
* Access to regex matching for starboards/filters
* Autostar 100 messages per 10 seconds (rather than 4 messages per 10 seconds)
* Access to award roles (XPRoles and PosRoles)
* Starboard will upload attachments that can't be embedded (assuming they're under 8mb)
* Remove "Powered by starboard.best" footer on webhook starboards
* @Supporter and @Patron roles in Discord serve

## Setup

Once you've become a patron, Starboard will add premium credits to your discord account (this may take up to 30 minutes).

| /premium info   | Show info on premium, how much premium is left for a server, and how many credits you have. |
| --------------- | ------------------------------------------------------------------------------------------- |
| /premium redeem | Redeem premium for a server.                                                                |

### AutoRedeem

If you don't want to run the command every month, you can enable autoredeem `/premium autoredeem enable`. If this is enabled, then whenever your server runs out of premium, Starboard will automatically try to redeem another month of premium using your credits.

Autoredeem will only take credits from one member who has autoredeem enabled per server, and will only work if you are actually in the server.

| /premium autoredeem enable  | Enable autoredeem for a server.  |
| --------------------------- | -------------------------------- |
| /premium autoredeem disable | Disable autoredeem for a server. |

## Locks

Locks are added to starboards and autostar-channels if premium expires on a server, and that server has more starboards/autostar-channels than the non-premium limit.

Locks can be moved between starboards/autostar-channels, and will automatically disappear if premium is re-enabled, or if a starboard/autostar-channel is deleted.

| /premium-locks refresh        | Refresh the locks for your server.                |
| ----------------------------- | ------------------------------------------------- |
| /premium-locks move-autostar  | Move a lock from one autostar channel to another. |
| /premium-locks move-starboard | Move a lock from one starboard to another.        |


# Troubleshooting

Below is a list of common problems and questions we get in the support server. **Before going through this list** please make sure you have the right bot/docs. If the bot you're using is "Starboard#9387", then you're in the right place. Note that there are other bots with the name "Starboard."

If none of this helps, feel free to join the [support server](https://discord.gg/3gK8mSA).

## Starboard is offline in my server, but not others

There seems to be an issue where this happens frequently to some servers. I'm not sure if it's my fault or Discord's, but I'm not the only developer running into this.

If you join the [support server](https://discord.gg/3gK8mSA), I can restart the bot, which usually fixes the problem.

It would also be nice to get a list of servers that this is happening in, so if you're willing, it would be nice if you could send me the ID of your server as well.

## Starboard isn't responding

First, try pinging the bot. If it responds, it should tell you it's prefix. If it doesn't, then it probably doesn't have the "View Channel" permission in that channel. An easy way to check if the problem is because of broken permissions is to (temporarily) give the bot admin. If it still doesn't work, there's like something else going.

## Messages aren't showing up on the starboard

1. Make sure that the message that isn't showing up isn't in an NSFW channel. If it is, note that the message can **only** show up on a starboard if that starboard is also marked as NSFW.
2. Check that the bot has permission to send messages in the starboard. You can test this by mentioning the bot inside the starboard channel.
3. Try running `/utils info` with a link to the message that isn't working.
   1. If the bot says it can't find the message, that means it doesn't have permission to view the channel or its history.
   2. Otherwise, look at the stats for the starboard it isn't working on. It should say something like "**2**/3", which means that the bot has recorded 2 upvotes, but 3 are required.


# Change Log


# 4.8.0

* Fixed list formatting
* Webhooks are now created as soon as you enable the `use-webhook` setting
* Improve the embedder
  * FixTweet embeds are now supported better
  * Videos inside embeds are now treated as attachments. In premium servers, these videos will be uploaded alongside the embed, if they're smaller than 25mb
  * If the original message content was a URL to an image, then the content won't be shown (like discord does)
* Switched documentation to GitBook


# 4.7.0

* Uploaded files (excluding embeddable files, such as images) are always listed in the attachments list
* For premium servers, starboard will now upload files up to 25mb in size (up from 8mb)
* Added a new style of "go to message" links, "Mention", which takes advantage of discord's new message link embedding. When the `go-to-message` setting is set to Mention, the link will be put where the channel mention used to be.
* The initial message for forum threads is now considered to belong to the forum channel (not the thread) for the sake of filters. This means that if you have a filter with "not-in-channel: #some-forum-channel", then the starter messages will not be allowed, but other messages within the forum threads will be.


# 4.6.0

**Filters**

Filters are a new way to create conditions for starboard and autostar channels. Filters are very flexible, and also rather complex to use. I won't document them here, but please give [Filters](/docs/filters) a read if you're interested.

Some things you can do with filters:

* Require that messages sent by users with a certain role have a certain length
* Require that either the author or the voter have a certain role (a way to keep starboard spam down perhaps. Could even be combined with award roles, so that after a user receives enough stars they have permission to vote on messages)

A lot of stuff that you can do with the "requirements" category for starboards, and with the settings for autostar-channels, can now also be done with filters. I don't think filters will ever replace these settings though, just so that the old settings can still be used for simplicity.

In the future, filters may be allowed as a condition for overrides, so you can actually change starboard settings based on the content of the message, roles of the author, etc.. This would allow things like, "If the message has the word 'hello' it can't be sent to the starboard".

Filters are very much a beta feature right now and are subject to change. If you have any suggestions/problems with filters, I would appreciate it if you opened a thread in #support or #feedback.

**Bug Fixes**

* The "Go To Message" button now shows up for /random and /moststarred
* Fixed a bug with `/permroles edit-starboard` if you hadn't created the permrole yet
* Added some missing message types (stage start, stage title, stage speaker, stage end)
* Fixed bug with the `use-server-profile` setting always being treated as enabled, even if it wasn't
* Fixed bug that prevented use of custom emojis with numbers in their name
* Fixed some bugs with emojis (e.g. ❤️) that would cause it to show up as a plain character and not a colorful emoji


# 4.4.0

**New /\_ view command** The view command for starboards, overrides, autostar channels, and permroles has been improved. Now you can switch between your starboards using a drop-down menu, instead of running the command for each starboard.

The commands for viewing xproles and posroles have also been converted to paginators.

**Empty embeds** I didn't realize this, but embeds are valid as long as it has the author set. Since starboard embeds do, I removed the "file only" notice for embeds that don't have descriptions.

**Changed some limits**

* required: 1 to 500 -> 1 to 10,000
* required-remove: -500 to 490 -> -10,000 to 9,999
* post update cooldown: 2/10s -> 4/10s
* the autostar cooldown is now guild-wide instead of per-channel

**Changed some premium limits**

* starboards: 10 -> 20
* starboard emojis: 10-> 20
* autostar channels: 10 -> 50
* autostar emojis: 10 -> 20
* regex length: 100 chars -> 1,000 chars
* added a premium autostar cooldown of 100 messages per 10 seconds

**A note on limits** Limits are often arbitrary, numbers I just come up with them because I have to. If you ever hit a limit (other than the free starboard/autostar channel/emojis limit) that feels unreasonable, feel free to suggest a new one to me.

**Bugfixes**

* Made it so the xp-multiplier can be numbers other than 10 (facepalm)
* Update premium locks when premium is redeemed and when asc/sb are deleted. Note that you can always run `/premium-locks refresh` to force them to update.

**Backend changes**

* Removed the TTL from caches, as the new cache doesn't benefit from it


# 4.0.0

There are a few significant changes with the release of Starboard v4. This is not a complete list of all changes, but just covers the more important ones.

If you see any problems with the v4 release, be sure to let me know in [the support server.](https://discord.gg/3gK8mSA)

## Changes

* `/starboards emojis [set-upvote|set-downvote]` has been moved to `/starboards edit requirements upvote-emojis: <emojis> downvote-emojis: <emojis>`
* `/rank` has been moved to `/stats`, which now shows more information than just the XP you have.
* `/leaderboard` now has an option to show or hide members who've left the server.
* `/random` and `/moststarred` can now search for messages sent by a certain person.

## New Features

* You can now create starboards and autostar channels in more channel types, including threads, forum posts, Text-in-Voice, and forums.
* Starboard posts now embed all images, rather than the first.
* On premium servers, starboard will now include attachments from the original message that couldn't be embedded by uploading them.


# Starboards

A starboard is the main feature of this bot. The free version of the bot gives you access to 3 starboards, each with 3 upvote/downvote emojis. If you don't know what a starboard is, see [Broken mention](broken://pages/-MW-afDun3jqQCgAKpSL).

See [Options](/docs/starboards/options) for a list of configurable options and [Commands](/docs/starboards/commands) for a list of starboard-related commands.

Take a look at the tutorials section for examples of different setups. See [Basic Starboard](/tutorials/basic-starboard) for a basic starboard setup.


# Commands

| /starboards create                                       | Create a starboard.                                        |
| -------------------------------------------------------- | ---------------------------------------------------------- |
| /starboards view                                         | View all starboards, or view the settings for a starboard. |
| /starboards delete                                       | Delete a starboard.                                        |
| /starboards edit \[requirements\|behavior\|embed\|style] | Edit a starboard's settings.                               |
| /starboards rename                                       | Rename a starboard.                                        |


# Options

These are all the settings that can be configured for each starboard and override.

## Style

| display-emoji       | The emoji shown next to the number of points on a starboard post. ⭐️ by default.                                                                                                                                                                                                               |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ping-author         | Whether to mention the author of the original message when it appears on the starboard. False by default.                                                                                                                                                                                      |
| user-server-profile | Whether to use a users per-server avatar and nickname, rather than their default avatar and username. True by default.                                                                                                                                                                         |
| extra-embeds        | Whether to include extra embeds when the original message also has embeds. True by default.                                                                                                                                                                                                    |
| go-to-message       | <p>The style of the message link.</p><ul><li>None: no message link.</li><li>Link: puts a hyperlink inside the embed.</li><li>Button: puts the link in a button below the message.</li><li>Mention: replaces the channel mention with a message mention. This is the default setting.</li></ul> |
| use-webhook         | Whether to use a webhook to send starboard posts, rather than the bot account. Doing this will allow you to customize the avatar and username of the starboard posts. False by default.                                                                                                        |

## Embed

| color           | The color of the embed on starboard posts. #FFE19C by default.                                   |
| --------------- | ------------------------------------------------------------------------------------------------ |
| attachment-list | Whether to list the names (as hyperlinks) of uploaded attachments. True by default.              |
| replied-to      | Whether to include the message that was replied to, if any, in starboard posts. True by default. |

## Requirements

| required        | The minimum number of upvotes a message needs to be sent to the starboard. 3 by default.             |
| --------------- | ---------------------------------------------------------------------------------------------------- |
| required-remove | The minimum number of upvotes a post can have before it is removed from the starboard. 0 by default. |
| upvote-emojis   | The emojis that can be used to upvote a message. ⭐️ by default.                                      |
| downvote-emojis | The emojis that can be used to downvote a post. None by default.                                     |
| self-vote       | Whether to allow users to vote on their own posts. False by default.                                 |
| allow-bots      | Whether to allow bot messages to be voted on. True by default.                                       |
| require-image   | Whether to require messages to have an image to be voted on. False by default.                       |
| older-than      | Only messages older than this can be voted on (e.g. 1 hour). Disabled by default.                    |
| newer-than      | Only messages newer than this can be voted on (e.g. 1 week). Disabled by default.                    |

## Behavior

| enabled                  | Whether the starboard is enabled. True by default.                                                                                                                                                                           |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| autoreact-upvote         | Whether to automatically react to posts on the starboard with the upvote-emojis. True by default.                                                                                                                            |
| autoreact-downvote       | Whether to automatically react to posts on the starboard with the downvote-emojis. True by default.                                                                                                                          |
| remove-invalid-reactions | Whether to remove votes that don't meet requirements (e.g. self votes). True by default.                                                                                                                                     |
| link-deletes             | Whether to delete a starboard post if the original message was deleted. False by default.                                                                                                                                    |
| link-edits               | Whether to update the content of a starboard post with new content if the original is edited. True by default.                                                                                                               |
| on-delete                | What to do if a moderator deletes a message from the starboard. Can be "Refresh" (default), "Ignore", "Trash All", or "Freeze All".                                                                                          |
| xp-multiplier            | How much XP to give someone fro every vote they receive (1 for upvotes, -1 for downvotes). If you set this to negative, then downvotes will cause you to *gain* XP, while upvotes will cause you to *lose* XP. 1 by default. |
| cooldown-enabled         | Whether to enable the vote cooldown for this starboard.                                                                                                                                                                      |
| cooldown                 | The value of the cooldown. Represents how many times you can vote per a certain number of seconds (e.g. "3/10", which means 3 votes per 10 seconds).                                                                         |
| private                  | Whether to hide this starboard's posts from /moststarred and /random. False by default.                                                                                                                                      |
| exclusive-group          | The exclusive group this starboard belongs to.                                                                                                                                                                               |
| exclusive-group-priority | The priority this starboard has inside the exclusive group, if any.                                                                                                                                                          |


# Setting Overrides

Overrides allow you to have different settings for a starboard based on the channel. For example, you can change the number of stars required for only one channel, instead of for the whole starboard.

All starboard options can be overwritten with overrides, except for private. A list of options can be found at [Options](/docs/starboards/options).

## Commands

| /overrides view                                          | View all overrides or the settings for a specific override.                                                                                  |
| -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| /overrides create                                        | Create an override for a starboard in a specific channel set. The copy-from option let's you specify another override to copy settings from. |
| /overrides delete                                        | Delete an override.                                                                                                                          |
| /overrides edit \[behavior\|embed\|style\|requirements\| | Change the settings for an override.                                                                                                         |
| /overrides edit reset                                    | Reset certain options to their defaults for the starboard.                                                                                   |
| /overrides rename                                        | Rename an override.                                                                                                                          |
| /overrides channels set                                  | Set the channels that an override applies to.                                                                                                |
| /overrides channels remove                               | Remove channels from an override.                                                                                                            |
| /overrides channels add                                  | Add channels to an override.                                                                                                                 |


# Filters

{% hint style="info" %}
Filters are a beta feature and may be buggy. Things may change at any time, including conditions being dropped or filters being removed all together.
{% endhint %}

{% hint style="info" %}
If you have any problems with filters, or any suggestions, please open a thread in #feedback or #support in the [support server](https://discord.gg/3gK8mSA).
{% endhint %}

Filters are a new, more flexible way to control what messages can be starred or sent to autostar channels. Before reading, it's a good idea to familiarize yourself with the terminology used:

* Filter Group: A filter group is a collection of filters. A single filter group can be applied to a starboard or an autostar channel. A filter group is identified by its name.
* Filter: A filter is a collection of conditions. All filters are inside a filter group (they cannot be by themselves), and are identified by their position within that group (e.g. 1 or 2).
* Filter Condition: A single condition of a filter, such as `user-has-all-of` (meaning that the user, or message author, must have all of a set of roles).

Currently, filters can only be applied to starboards and autostar channels. In the future, you may be able to use filters as a condition for whether an override should apply (rather than just applying overrides on a channel basis), as well as for custom leaderboards (another planned feature).

## Commands

| /filters view          | View the filter groups in the current server.          |
| ---------------------- | ------------------------------------------------------ |
| /filters create-group  | Create a new filter group.                             |
| /filters delete-group  | Delete a filter group.                                 |
| /filters rename-group  | Rename a filter group.                                 |
| /filters create-filter | Create a filter inside a filter group.                 |
| /filters delete-filter | Delete a filter inside a filter group.                 |
| /filters move-filter   | Change the position of a filter inside a filter group. |
| /filters edit          | Edit the conditions of a filter.                       |

## Conditions

The conditions for a filter are split into three categories (called contexts): Default, Message, and Vote. The reason for this is that some conditions (such as voter-has-all-of) make no sense in some situations, like autostar channels.

Currently, there are only two contexts that occur: starboards and autostar channels.

A starboard utilizes all of the contexts (Default, Message, and Vote). Autostar channels utilize only the first two (Default and Message). If a filter has conditions inside of a context that isn't considered for a certain situation, then it will be assumed to pass.

### Default Context

These are conditions that are always valid. These conditions concern a "user" - for autostar channels and starboards, this is the message author.

| user-has-all-of      | A list of roles that the user must have                                                                   |
| -------------------- | --------------------------------------------------------------------------------------------------------- |
| user-has-some-of     | A list of roles that the user must have at least one of                                                   |
| user-missing-all-of  | A list of roles that the user must not have (the user cannot have *any* of these roles)                   |
| user-missing-some-of | A list of roles that the user must be missing at least one of (the user cannot have *all* of these roles) |
| user-is-bot          | A condition that either requires the user to be a bot or be a human.                                      |

### Message Context

These are conditions that are valid when a message is being considered. Both autostar channels and starboards consider this context.

| in-channel                     | A list of channels that the message must be in.                                         |
| ------------------------------ | --------------------------------------------------------------------------------------- |
| not-in-channel                 | A list of channels that the message cannot be in.                                       |
| in-channel-or-sub-channels     | A list of channels that the message must be in, including that channels sub-channels.   |
| not-in-channel-or-sub-channels | A list of channels that the message cannot be in, including that channels sub-channels. |
| min-attachments                | The message must have at least this many attachments.                                   |
| max-attachments                | The message must have at most this many attachments.                                    |
| min-length                     | The message must be at least this long.                                                 |
| max-length                     | The message must be at most this long.                                                  |
| matches                        | (Premium) the message must match this regex.                                            |
| not-matches                    | (Premium) the message must not match this regex.                                        |

### Vote Context

This context is considered for votes (reactions). Only starboards consider this context, everything else just assumes that these conditions pass.

| voter-has-all-of      | A list of roles that the voter must have                                                                    |
| --------------------- | ----------------------------------------------------------------------------------------------------------- |
| voter-has-some-of     | A list of roles that the voter must have at least one of                                                    |
| voter-missing-all-of  | A list of roles that the voter must not have (the voter cannot have *any* of these roles)                   |
| voter-missing-some-of | A list of roles that the voter must be missing at least one of (the voter cannot have *all* of these roles) |
| older-than            | The message must be older than this, at the time that the vote was added.                                   |
| newer-than            | The message must be newer than this, at the time that the vote was added.                                   |


# Exclusive Groups

Exclusive groups are a way to make starboards *exclusive* - meaning that a message can only be on one starboard at a time. Example use-cases:

* You have multiple starboards to categorize messages, and a message should only be on the first starboard it reaches
* A reporting channel - if a message receives enough ⚠️ (or whatever emojis you want) reactions, then it will be removed from all starboards and sent to the reports starboard
* Leveling starboards - you have multiple tiers of starboards. Messages with 5-10 stars are on starboard-low, messages with 10-20 stars are on starboard-med, and so on.

Exclusive works have to "settings".

* Starboards in the group
* The priority of each starboard

The priority of a starboard determines what happens to posts on other starboards in the same group. If a starboard has a higher priority than another, it will override lower-priority starboards. If your starboards have equal priorities, then the message will stay on the first starboard it is sent to.

## Commands

| /exclusive-groups create | Create a group |
| ------------------------ | -------------- |
| /exclusive-groups delete | Delete a group |
| /exclusive-groups rename | Rename a group |

To add starboards to a group and change its priority, use the `/starboards edit behavior` command (or `/overrides edit behavior` command for overrides).


# PermRoles

PermRoles work very similarly to Discord's role permissions system. For each PermRole, you can change their "permissions". Each permission can either be True (enabled), False (disabled), or None (default). If a permission is None, it simply carries from the last PermRole.

PermRoles are ordered in the same way your Discord roles are ordered, and are applied starting with the @everyone role and ending with the highest up role.

In addition to setting global permissions, you can also set per-starboard permissions for each role.

## Commands

| /permroles view           | View the PermRoles for a server.                             |
| ------------------------- | ------------------------------------------------------------ |
| /permroles create         | Create a PermRole.                                           |
| /permroles delete         | Delete a PermRole.                                           |
| /permroles clear-deleted  | Delete PermRoles where the role was deleted from the server. |
| /permroles edit           | Edit the permissions for a PermRole.                         |
| /permroles edit-starboard | Edit a PermRoles starboard-specific permissions.             |

## Permissions

| vote          | Whether to allow members with this role to vote on messages.     |
| ------------- | ---------------------------------------------------------------- |
| receive-votes | Whether messages sent by members with this role can be voted on. |
| gain-xproles  | Whether members with this role can gain XPRoles.                 |


# Award Roles

{% hint style="info" %}
Both kinds of award roles are premium-only.
{% endhint %}

With award roles, you can have Starboard automatically assign roles based on a members XP (XP Roles) or position on the leaderboard (Pos Roles). You can have both kinds setup at the same time, but a role cannot be both an XPRole and a PosRole.

On a side-note, you *can* have a role be a PermRole (see [PermRoles](/docs/permroles)) and an award role at the same time. This lets you do things like, only allowing members who have received enough upvotes to upvote others' messages.


# XP-based Award Roles

XP-based award roles (referred to as XPRoles) are roles that will be assigned to any member who has gained enough XP.

## Commands

| /xproles setxp         | Create an XPRole, or set the XP requirement for an existing XPRole. |
| ---------------------- | ------------------------------------------------------------------- |
| /xproles delete        | Delete an XPRole.                                                   |
| /xproles view          | View all your XPRoles.                                              |
| /xproles clear-deleted | Remove all XPRoles where the Discord role was deleted.              |


# Position-based Award Roles

Position-based Award Roles (referred to as PosRoles) are roles that have a limited "membership." For each role, you can set a number of members, and Starboard will automatically assign these roles based on a members position on the leaderboard. For example, you might have something like this:

* @Super Star: 1 member
* @Bright Star: 10 members
* @Star: 100 members

This would mean that the first person on the leaderboard would receive the @Super Star role, the next 10, the @Bright Star role, and the next 100, the @Star role.

## Commands

| /posroles set-max-members | Create a PosRole, and/or set the maximum members for it. |
| ------------------------- | -------------------------------------------------------- |
| /posroles delete          | Delete a PosRole.                                        |
| /posroles clear-deleted   | Delete all PosRoles where the Discord role was deleted.  |
| /posroles view            | View all your PosRoles.                                  |
| /posroles refresh         | Refresh the PosRole assignments for your server.         |


# Utils

Util commands are commands that allow you to moderate messages on your starboards.

| /utils recount  | Recount the reactions on a message (up to 100 per emoji).                 |
| --------------- | ------------------------------------------------------------------------- |
| /utils refresh  | Forcibly update the starboard posts.                                      |
| /utils trash    | Trash a message so it is removed from all starboards.                     |
| /utils untrash  | Untrash a message.                                                        |
| /utils trashcan | Show all trashed messages.                                                |
| /utils freeze   | Freeze a message so that it won't update and can't receive any new votes. |
| /utils unfreeze | Unfreeze a message.                                                       |
| /utils force    | Forcibly send a post to one or more starboards.                           |
| /utils unforce  | Unforce a message from one or more starboards.                            |
| /utils info     | Show useful info for a message.                                           |


# Fun Commands

| /moststarred | Show the most upvoted messages for a starboard.                                                                               |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------- |
| /random      | Show a random message from a starboard.                                                                                       |
| /leaderboard | Show the server's leaderboard. This command takes a while to run. If you set `include-gone` to True, it will complete faster. |
| /stats       | Show stats for yourself or another member.                                                                                    |


# AutoStar Channels

Autostar channels are channels where Starboard will automatically react to any message sent there.

## Commands

| /autostar view   | View all of your autostar channels, or the settings for a specific one. |
| ---------------- | ----------------------------------------------------------------------- |
| /autostar create | Create an autostar channel.                                             |
| /autostar delete | Delete an autostar channel.                                             |
| /autostar edit   | Edit the settings for an autostar channel.                              |
| /autostar rename | Rename an autostar channel                                              |

## Options

| emojis         | A list of emoijs that Starboard will react with when messages are sent.                  |
| -------------- | ---------------------------------------------------------------------------------------- |
| min-chars      | The minimum number of characters a message needs.                                        |
| max-chars      | The maximum number of characters a message can have. Set to -1 to disable.               |
| require-image  | Whether to require an image on messages.                                                 |
| delete-invalid | Whether to delete messages that don't meet requirements, rather than just ignoring them. |


# Basic Starboard

1. Create a channel call "starboard".
2. Run "/starboards create channel: #starboard name: starboard".

By default, a newly created starboard will require 3 ⭐️ reactions. You can change this, along with many other settings, by using "/starboards edit requirements/behavior/style/embed". See [Starboards](/docs/starboards) for more info.


# Staff Pins Starboard

A staff-pins starboard is a starboard that only staff can send messages to. If someone without the @Staff role tries to react with 📌, it'll just be removed - but when a staff reacts with it, Starboard will repost the message to your staff-pins starboard.

1. Create a channel called "staff-pins".
2. If you don't have one already, create a @Staff role for all the staff of your server.
3. Run "/starboards create channel: #staff-pins name: staff-pins".
4. Run "/starboards edit requirements starboard: staff-pins self-vote: True required: 1 upvote-emojis: 📌"
5. Run "/permroles create role: @everyone".
6. Run "/permroles edit-starboard permrole: @everyone starboard: staff-pins vote: False".
7. Run "/permroles create role: @Staff".
8. Run "/permroles edit-starboard permrole: @Staff starboard: staff-pins vote: True".


# Blacklist/Whitelist channels

There is no dedicated whitelist or blacklist setting for starboards; however, you can use [Setting Overrides](/docs/setting-overrides) to enable/disable the starboard for a certain set of channels.

### Blacklist

1. Create an override (`/overrides create`--name doesn't matter)
2. Add the channels you want to blacklist with `/overrides channels add`
3. Set the `enabled` option for the override to false (`/overrides edit behavior ... enabled: false`)

### Whitelist

1. Set the `enabled` setting to false for the starboard (`/starboards edit behavior ... enabled: false`
2. Follow the same steps for blacklisting, but set `enabled` to true for the override


# Privacy Policy

Starboard tracks the least amount of information necessary to function. This is a list of what data is stored and why.

Only a select few have access to the bots database and cache. Note that data is not encrypted, and so is accessible by the VPS provider. Right now, the VPS provider is <https://netcup.eu>, located in Germany. Daily backups are also sent to a VPS from <https://alphavps.com>.

You can see a more detailed list of stored data, if you want, by looking at the source code for Starboard. The database structure can be viewed here: <https://github.com/CircuitSacul/Starboard-4/tree/main/src/database/models>

## Stored in Database

* Server IDs: Any server that uses or has used Starboard will have its ID stored. Necessary to track configuration.
* User IDs: Any user who has voted on a message, or has sent a message that was voted on, will have their ID stored. Necessary to track message ownership and vote ownership. A user's ID will also be stored if one of their messages is forced/frozen/trashed by a moderator.
* Message IDs: Any message that has been voted on, or has been trashed/frozen/forced. Necessary to track the origin of messages, so that the bot can find message content when it is needed.
* Channel IDs: Stored if the channel has a starboard or autostar channel in it. Also stored if the ID of a message in that channel is stored (Discord requires both the channel ID and the message ID to fetch message data).
* Reactions: If a reaction is added to a message, and that reaction is an upvote/downvote emoji for a starboard in that server, the reaction is stored. The emoji itself isn't stored - rather, the bot stores the reactor's ID, the message ID, and the message's author's ID. Necessary to track the votes a message has.
* Any data/settings that you explicitly give to Starboard via configuration (True/False settings, emojis, etc.)

## Stored Elsewhere

* Server Count: Starboard periodically provides the total number of servers Starboard is in to different bot lists. It does not provide specific servers.
* Approximate Server Member Count: This is data provided directly by Discord. Starboard periodically takes the approximate member count from all servers, adds them together, and posts this to bot lists. This is never stored per-server.

## Cached Data

Starboard stores info in-memory that it needs to access, to avoid unnecessary API calls. The cache was written from scratch to only store information that the bot really needs. In addition to the data normally stored in the database (IDs, for the most part), Starboard also caches:

* Guilds: ID, name
  * Channels: ID, parent channel ID (if any), type
  * Roles: ID, position, name
  * Emojis: ID, is-animated
* Messages (up to 50k): ID, content (including file URLs), author, replied-to message
* Users (up to 50k): is-bot, name, avatar URL
* Members (up to 50k): user ID, guild ID, nickname, server avatar URL, roles

The cache structure and data stored can also be viewed in the source code here: <https://github.com/CircuitSacul/Starboard-4/blob/main/src/cache/cache_struct.rs>


# Terms of Service

Discord made me do this :)

I reserve the right to take any action I deem necessary, which may include deleting bot data or blocking you or your server from using Starboard.

Really the only thing I care about will be vulnerabilities (editing other server's settings, accessing data, bypassing limits, etc.). You're welcome to look for vulnerabilities as long as you don't exploit them in the process. If you find any, please report them.


