Sweetie Bot

Sweetie Bot is an administration bot for Discord servers whose primary function is anti-spam, by detecting potential spammers, silencing them, and deleting their messages. Many users joining at the same time will trigger a lockdown to help immunize the chat against raids. Patreon supporters also have access to a chat log that allows moderators to track deleted messages.

A limited version of Sweetie Bot can be added to any server via this link. For $5 a month, you can install your own instance of Sweetie Bot anywhere you want, with all features unlocked, which will automatically keep itself up-to-date. Download the selfhost executable for your operating system and run it from the directory you want the bot to be in. Follow the installation instructions provided and the bot will be up and running in no time.

Windows (64-bit)

Windows (32-bit)

Linux (64-bit)

Linux (32-bit)


Donating at least $1 a month to the Patreon will automatically enable chat logging for your server, which is only accessible by moderators via the !search command. It will also enable much higher limits for the total number of unique items you can store in tagged item collections. In order to recieve these benefits, you must link your Patreon and Discord accounts, and you must join the Sweetie Bot Support Channel. The bot cannot detect your donation level unless you are on the server and your account has been linked.


Upon being added to a server, Sweetie Bot will begin with all commands and modules disabled. Only users with admin rights can setup a server. Sweetie Bot will send the owner of the server a PM when she is first added with instructions on how to run the !setup command. In case you missed it, !setup takes the following parameters, in order:

Mod Role

should be set to a role shared by all moderators. It is used to alert moderators and also allows the moderators to bypass command restrictions imposed by certain modules.

Mod Channel

should be set to whatever channel the moderators would like to recieve notifications on, such as potential raids, spammers being silenced, etc.

Log Channel

(optional) should be set to a channel that recieves log messages about errors and initialization. Usually this channel is only visible to the bot and the moderators.

For example: !setup @Mods #staff-lounge #bot-log

!setup will automatically restrict all sensitive commands to modrole and enable a default set of modules. Running the setup twice will delete everything and reset all configuration values. Specify an additional OVERRIDE parameter if this is your intent.


Basic configuration parameters can be set with !setconfig <parameter name> <value>. To get a list of configuration parameters, use !getconfig. To output the current value of a parameter, use !getconfig <paramater name>.

Certain configuration parameters are more complex. They can either be maps, lists, or maps of lists. This type information is listed when using !getconfig. Parameters that are lists simply take multiple values instead of one. Setting a list parameter to a set of values will replace the current list of values. In list parameters, all values must use quotes if they have spaces in them.

!setconfig <list parameter> <value 1> <value 2> <value 3> <etc...>
!setconfig bored.commands !drop "!pick cute"

You may pass no values to a list, which will simply set the list to nothing:

!setconfig bored.commands

Maps are a set of key-value pairs. Unlike lists, each invocation of !setconfig will set just a single key-value pair and won't affect any others. If a key already exists, the value of that key will be overwritten.

!setconfig <map parameter> <key> <value>
!setconfig basic.aliases listbucket list

If no value is given, the key will be deleted:

!setconfig basic.aliases listbucket

Maps of lists match keys to entire lists of values instead of just one value. The syntax is similar to setting a single map value:

!setconfig <maplist parameter> <key> <value 1> <value 2> <value 3> <etc...>
!setconfig modules.commandchannels roll #channel1 #channel2

To delete a value, simply provide only the key and no values:

!setconfig modules.commandchannels roll

Some maplists are whitelists of channels or roles. To change them into a blacklist, add ! anywhere in the maplist:

!setconfig modules.commandchannels roll ! #excludedchannel1 #excludedchannel2