One of the most important factors of keeping a community alive and healthy is activity. To maintain activity, moderators can use a few different methods which generally can be separated into two groups: active and passive. Active methods are those which require the presence and active participation of a moderator. Passive methods, on the other hand, do not require a constant presence from an individual and are often automated by using bots. Keep in mind that even passive methods will require occasional maintenance from a moderator.
One of the more popular passive methods are XP systems. XP systems, otherwise known as experience or leveling systems, grant users experience points (XP) and levels based on their activity in a server. Their main purpose is to reward member activity in the community. These systems exist in the form of bots. Usually they are just one function of multi-purpose bots, but there are cases where the sole function of the bot is the leveling system.
The basic way these systems work is:
These four steps are only a simplification of the process, and there are many options to consider while using these systems. Depending on the bot you choose to use, you can get various options for configuration but there are several that are commonly available on most bots. Some of these options are:
The main function of XP systems is to reward user activity. Their ability to passively lead users towards being active allows moderators to occasionally take a moment to step back from their usual activities of engaging with their community. The existence of a leaderboard appeals to the competitive nature of humans and pulls them to be more active. Rewards additionally add to this appeal. This is applicable in small, medium and some large communities.
Alternatively, XP systems can be used as a measure of security. By locking certain permissions behind levels, you can make sure that inactive and malicious users are prevented from committing certain offenses. This is mostly applicable in very large servers.
Both of these routes will require the utilization of roles. There are two main reasons for this:
As the goal of XP systems is to boost activity, it is important to note that they will also lure in users who believe any type of activity is acceptable. This is not the case. While the problem of spam is already resolved by the cooldown ability of most XP systems, there are still behavioral issues that need to be addressed.
Members need to be aware that rules still exist in the community and they cannot simply do as they please. It is important to moderate those who blatantly misbehave in order to level up. Other contributions to the community, which are not measured with activity in text or voice chat, should also be rewarded, such as artworks, stories, etc.
Furthermore, activity that comes from channels which encourage spam-like behavior, such as bot channels, should not count towards the total. For that reason, XP gain should be disabled in channels of that sort.
*Unless you are using the channel description for verification instructions rather than an automatic greeter message.
If you want to use the remove unverified role method, you will need a bot that can automatically assign a role to a user when they join.
Verification Actions
Once you decide whether you want to add or remove a role, you need to decide how you want that action to take place. Generally, this is done by typing a bot command in a channel, typing a bot command in a DM, or clicking on a reaction. The differences between these methods are shown below.
In order to use the command in channel method, you will need to instruct your users to remove the Unverified role or to add the Verified role to themselves.
Knowing that we have the ability to reset the XP in the server, we can use this option to create different types of XP systems. We can divide XP systems into three different types: cyclical, permanent and combined.
Cyclical systems reset XP points in a regular cycle. Cycle duration should be set based on activity, though it is not advisable to use this system in communities with very low activity. The constant resets in the leaderboard allow new members to climb the charts quickly, but this only lets the system be used for rewards. It is common to give out special rewards to the most active users at the end of the cycle, such as custom roles for the duration of the following cycle, which encourages continued activity to retain their rewards. This also gives moderators the opportunity to post announcements regularly at the ends of cycles. The biggest downside of this system is that not all bots have the ability to also remove leveling roles when the cycle ends.
Permanent systems do not reset at any point in time. Occasionally, users that are banned or have left are removed from the leaderboards. They give a good look into who the most active and dedicated users in the community are. Permanent systems can be used both for rewards and security. Their biggest downside is that they are not very friendly towards new members, especially in older communities.
Combined systems are a combination of cyclical and permanent systems. They usually require the usage of 2 separate bots to keep track of rankings on both leaderboards. They take the best aspects of both systems, meaning they can be used both for rewards, which would be connected to the cyclical system, and security, which would be connected to the permanent one. This also allows for the cyclical leaderboard to help involve new users more, while still giving good insight of who the most active members of all time are with the permanent one. The only big downside that remains is the issue of removing roles from a large number of members.
Markdown is also supported in an embed. Here is an image to showcase an example of these properties:
Example image to showcase the elements of an embed
An important thing to note is that embeds also have their limitations, which are set by the API. Here are some of the most important ones you need to know:
An important thing to note is that embeds also have their limitations, which are set by the API. Here are some of the most important ones you need to know:
If you feel like experimenting even further you should take a look at the full list of limitations provided by Discord here.
It’s very important to keep in mind that when you are writing an embed, it should be in JSON format. Some bots even provide an embed visualizer within their dashboards. You can also use this embed visualizer tool which provides visualization for bot and webhook embeds.
As with any system, there are several negative aspects to consider when it comes to using XP systems. All of these should be taken into consideration before you make a decision on whether you want to use one. Some of the most commonly voiced concerns would be the following:
The fact that these systems encourage sending a larger number of messages automatically leads to the idea of spam. Since spam is considered a violation of rules, as well as a ToS violation, this would become a huge problem. The issue is easily resolvable, thanks to the built in anti-spam measures XP systems have, primarily the message cooldown. This, in combination with good moderation would make it certain that no spam is generated by the presence of the system.
Since most XP systems require utilization of roles for truly fulfilling their usage, the issue of role bloating comes to mind. It is important to manage and space the leveled roles properly in order to avoid creating an excessive number of roles with no real use in your server.
It is believed that when it comes to rewarding members, rewards should be granted manually through qualitative judgement of content, rather than quantitative. It’s a fact that bots cannot themselves tell the quality of the messages sent. The fact that all types of conversations allow users to gain XP means that there is no meter on what the quality of the conversation is. Granting privileges as a result of such conversations sends the wrong idea of what sort of activity is encouraged. Only humans can truly judge content subjectively to determine quality. By combining proper moderation, for handling the judgement of quality, and the built-in preventive mechanisms of XP systems for quantity control, this issue can be held down to a minimal level.
This would be one of the most difficult problems of the system to resolve. Many members, with the intent of increasing their XP count and level, will attempt to hold conversation in the community. This part of it is perfectly fine. The problem arises when they start forcing conversation at any point in time solely to increase their message count. The result would be communication that is completely unnatural and unhealthy.
This type of abuse of the system can’t really be stopped with the cooldown system since most of the time it is not spam. The only real way to prevent this is to use the No XP role, but the difficulty of telling organic and inorganic communication apart raises the question: Was there really any violation of the system?
Not in every case is an XP system useful for a community. In many cases moderators can’t figure out how they can add this sort of system and make it seem like a natural part of the server, or how it can fit the theme of the community. Considering the theme and purpose of your server is an important part of making the decision of adding a leveling system to your server. Before you make the decision, ask yourself: How can I make this system a natural part of my community?
In the following section, several publicly available bots will be presented as options for what you can use for an XP System in your server. The following bots have been chosen based on data collected from a survey of various moderators, administrators and owners in Discord communities.
This list is not exhaustive. There are plenty of alternatives available online. All of the listed bots are free and public. Some features may be limited to paid additions or private versions of the bots. The content of this article is not endorsed by any bot or company related to the bots.
Gaius Play is an entertainment bot that also hosts an XP system. It takes both text and voice chat activity into account. The basic version comes with a preset configuration for XP gain and leveling, as well as commands for adding rewards up to 6 roles, fully customizing and toggling level-up messages, manually controlling XP, ignoring activity in certain channels and the ability to boost XP gain within certain parameters (roles, channels, time periods). It also has the ability to remove leveled roles from all users, making it ideal for use in a cyclical system. Additionally, there are several premium features, such as unlimited reward roles and a tree leveling system. Users can also reset their own reward roles in order to change paths on the tree leveling system.
Amari is a bot that is solely focused on leveling systems. It only looks at activity in text channels. This is a very simple bot, containing commands for setting rewards, manually controlling XP, customizing and toggling level-up messages, as well as ignoring activity in some channels. It has the ability to have 2 leaderboards active at the same time, both of which can be reset at any point. Donor features allow for modification of the cooldown between messages, as well as modification of the XP gain per message.
Nadeko is a multi-purpose bot with a leveling system module. It detects activity exclusively from text chat and has a preset configuration for XP gain. It contains commands for setting up reward roles, toggling level-up messages, ignoring activity in channels and manually controlling XP. A big upside of this bot is that you have the option to host it yourself. This also adds the ability to set up in-bot currency rewards, as well as better overall control of the bot.
Tatsu is another multi-purpose bot with an XP system module. It has several basic commands, allowing creation of reward roles, toggling level-up announcements, modifying XP gain per message and cooldown, manual XP control and ignoring channel activity. It also features a dashboard and a global leaderboard alongside the local one.
Even though this comparison is important for better understanding of both bots and webhooks, it does not mean you should limit yourself to only picking one or the other. Sometimes, bots and webhooks work their best when working together. It’s not uncommon for bots to use webhooks for logging purposes or to distinguish notable messages with a custom avatar and name for that message. Both tools are essential for a server to function properly and make for a powerful combination.
*Unconfigurable filters, these will catch all instances of the trigger, regardless of whether they’re spammed or a single instance
**Gaius also offers an additional NSFW filter as well as standard image spam filtering
***YAGPDB offers link verification via google, anything flagged as unsafe can be removed
****Giselle combines Fast Messages and Repeated Text into one filter
Anti-Spam is integral to running a large private server, or a public server. Spam, by definition, is irrelevant or unsolicited messages. This covers a wide base of things on Discord, there are multiple types of spam a user can engage in. The common forms are listed in the table above. The most common forms of spam are also very typical of raids, those being Fast Messages and Repeated Text. The nature of spam can vary greatly but the vast majority of instances involve a user or users sending lots of messages with the same contents with the intent of disrupting your server.
There are subsets of this spam that many anti-spam filters will be able to catch. If any of the following: Mentions, Links, Invites, Emoji, and Newline Text are spammed repeatedly in one message or spammed repeatedly across several messages, they will provoke most Repeated Text and Fast Messages filters appropriately. Subset filters are still a good thing for your anti-spam filter to contain as you may wish to punish more or less harshly depending on the spam. Namely, Emoji and Links may warrant separate punishments. Spamming 10 links in a single message is inherently worse than having 10 emoji in a message.
Anti-spam will only act on these things contextually, usually in an X in Y fashion where if a user sends, for example, 10 links in 5 seconds, they will be punished to some degree. This could be 10 links in one message, or 1 link in 10 messages. In this respect, some anti-spam filters can act simultaneously as Fast Messages and Repeated Text filters.
Sometimes, spam may happen too quickly for a bot to catch up. There are rate limits in place to stop bots from harming servers that can prevent deletion of individual messages if those messages are being sent too quickly. This can often happen in raids. As such, Fast Messages filters should prevent offenders from sending messages; this can be done via a mute, kick or ban. If you want to protect your server from raids, please read on to the Anti-Raid section of this article.
Text Filters
Text filters allow you to control the types of words and/or links that people are allowed to put in your server. Different bots will provide various ways to filter these things, keeping your chat nice and clean.
*Defaults to banning ALL links
**YAGPDB offers link verification via google, anything flagged as unsafe can be removed
***Setting a catch-all filter with carl will prevent link-specific spam detection
A text filter is integral to a well moderated server. It’s strongly, strongly recommended you use a bot that can filter text based on a blacklist. A Banned words filter can catch links and invites provided http:// and https:// are added to the word blacklist (for all links) or specific full site URLs to block individual websites. In addition, discord.gg can be added to a blacklist to block ALL Discord invites.
A Banned Words filter is integral to running a public server, especially if it’s a Partnered, Community or Verified server, as this level of auto moderation is highly recommended for the server to adhere to the additional guidelines attached to it. Before configuring a filter, it’s a good idea to work out what is and isn’t ok to say in your server, regardless of context. For example, racial slurs are generally unacceptable in almost all servers, regardless of context. Banned word filters often won’t account for context, with an explicit blacklist. For this reason, it’s also important a robust filter also contains whitelisting options. For example, if you add the slur ‘nig’ to your filter and someone mentions the country ‘Nigeria’ they could get in trouble for using an otherwise acceptable word.
Filter immunity may also be important to your server, as there may be individuals who need to discuss the use of banned words, namely members of a moderation team. There may also be channels that allow the usage of otherwise banned words. For example, a serious channel dedicated to discussion of real world issues may require discussions about slurs or other demeaning language, in this exception channel based Immunity is integral to allowing those conversations.
Link filtering is important to servers where sharing links in ‘general’ chats isn’t allowed, or where there are specific channels for sharing such things. This can allow a server to remove links with an appropriate reprimand without treating a transgression with the same severity as they would a user sending a racial slur.
Whitelisting/Blacklisting and templates for links are also a good idea to have. While many servers will use catch-all filters to make sure links stay in specific channels, some links will always be malicious. As such, being able to filter specific links is a good feature, with preset filters (Like the google filter provided by YAGPDB) coming in very handy for protecting your user base without intricate setup however, it is recommended you do configure a custom filter to ensure specific slurs, words etc. that break the rules of your server, aren’t being said.
Invite filtering is equally important in large or public servers where users will attempt to raid, scam or otherwise assault your server with links with the intention of manipulating your user base to join or where unsolicited self-promotion is potentially fruitful. Filtering allows these invites to be recognized, and dealt with more harshly. Some bots may also allow by-server white/blacklisting allowing you to control which servers are ok to share invites to, and which aren’t. A good example of invite filtering usage would be something like a partners channel, where invites to other, closely linked, servers are shared. These servers should be added to an invite whitelist to prevent their deletion.
Anti-Raid
Raids, as defined earlier in this article, are mass-joins of users (often selfbots) with the intent of damaging your server. There are a few methods available to you in order for you to protect your community from this behavior. One method involves gating your server with verification appropriately, as discussed in DMA 301.You can also supplement or supplant the need for verification by using a bot that can detect and/or prevent damage from raids.
*Unconfigurable, triggers raid prevention based on user joins & damage prevention based on humanly impossible user activity. Will not automatically trigger on the free version of the bot.
Raid detection means a bot can detect the large number of users joining that’s typical of a raid, usually in an X in Y format. This feature is usually chained with Raid Prevention or Damage Prevention to prevent the detected raid from being effective, wherein raiding users will typically spam channels with unsavoury messages.
Raid-user detection is a system designed to detect users who are likely to be participating in a raid independently of the quantity of frequency of new user joins. These systems typically look for users that were created recently or have no profile picture, among other triggers depending on how elaborate the system is.
Raid prevention stops a raid from happening, either by Raid detection or Raid-user detection. These countermeasures stop participants of a raid specifically from harming your server by preventing raiding users from accessing your server in the first place, such as through kicks, bans, or mutes of the users that triggered the detection.
Damage prevention stops raiding users from causing any disruption via spam to your server by closing off certain aspects of it either from all new users, or from everyone. These functions usually prevent messages from being sent or read in public channels that new users will have access to. This differs from Raid Prevention as it doesn’t specifically target or remove new users on the server.
Raid anti-spam is an anti spam system robust enough to prevent raiding users’ messages from disrupting channels via the typical spam found in a raid. For an anti-spam system to fit this dynamic, it should be able to prevent Fast Messages and Repeated Text. This is a subset of Damage Prevention.
Raid cleanup commands are typically mass-message removal commands to clean up channels affected by spam as part of a raid, often aliased to ‘Purge’ or ‘Prune’.It should be noted that Discord features built-in raid and user bot detection, which is rather effective at preventing raids as or before they happen. If you are logging member joins and leaves, you can infer that Discord has taken action against shady accounts if the time difference between the join and the leave times is extremely small (such as between 0-5 seconds). However, you shouldn’t rely solely on these systems if you run a large or public server.
User Filters
Messages aren’t the only way potential evildoers can present unsavoury content to your server. They can also manipulate their Discord username or Nickname to cause trouble. There are a few different ways a username can be abusive and different bots offer different filters to prevent this.
*Gaius can apply same blacklist/whitelist to names as messages or only filter based on items in the blacklist tagged %name
**YAGPDB can use configured word-list filters OR a regex filter
Username filtering is less important than other forms of auto moderation, when choosing which bot(s) to use for your auto moderation needs, this should typically be considered last, since users with unsavory usernames can just be nicknamed in order to hide their actual username.
With the available selection of bots and documentation explaining the setup of XP systems, using leveling modules is simpler than ever. The configuration options that exist on these modules allow for creative usage of leveling systems with the goal of passively increasing activity within the community.
Naturally, you have to consider several factors prior to deciding on using XP systems. If you are considering using one, think of how you can best integrate it into your community. In which way will you use it? Which type of system would suit your community best? Which bot would be the best for the task? Of course, there are negative aspects to consider as well, meaning you’d have to figure out how to control and minimize them. Carefully weigh all the pros and cons prior to making a final decision.
One additional component not included in the table is the effects of implementing a verification gate. The ramifications of a verification gate are difficult to quantify and not easily summarized. Verification gates make it harder for people to join in the conversation of your server, but in exchange help protect your community from trolls, spam bots, those unable to read your server’s language, or other low intent users. This can make administration and moderation of your server much easier. You’ll also see that the percent of people that visit more than 3 channels increases as they explore the server and follow verification instructions, and that percent talked may increase if people need to type a verification command.
However, in exchange you can expect to see server leaves increase. In addition, total engagement on your other channels may grow at a slower pace. User retention will decrease as well. Furthermore, this will complicate the interpretation of your welcome screen metrics, as the welcome screen will need to be used to help people primarily follow the verification process as opposed to visiting many channels in your server. There is also no guarantee that people who send a message after clicking to read the verification instructions successfully verified. In order to measure the efficacy of your verification system, you may need to use a custom solution to measure the proportion of people that pass or fail verification.