Leveling, role rewards, reminders, custom level messages, custom welcome messages, media channels, emote reactions, logging & more!
Dashboard coming soon!
Feature requests are welcome, join the discord!
At first just written for our own server to replace other bots or add on functionality already in discord. Now better tested and running stable on our server for a while. I am still actively working on the bot and feature requests are more than welcome. Majority of the features in the current version are requested by users or something we found useful in our server that could not be done with discord itself.
A short list of functionality, more detailed info below.
- Extensive role and permissions system
- Leveling by sending messages or hanging out in voice with role rewards
- Role rewards based on how long you are in the server
- Send reminders with interval and custom message to channels
- Custom welcome messages, custom level up messages, custom mention messages
- Extensive bot config where all features can be toggled and values changed
- Enable / Disable server invites completely
- User config per guild
- Extensive logging with ability to enable/disable each individual event
-Automatic timeout detection with easier overview (better than audit log)
- Assign roles to users when they join the server
- Reminder for our Question of the Day channel (Tag a role when somebody posts a question)
- Cringe counter which users can increase and decrease to keep track who is being most cringe!
- A bunch of other small commands like retrieving info from urban dictionary
- Moderator statistics to have a funny overview who kicks/bans/mutes the most.
Roles and permissions
The bot uses a permissions and role system. Permissions are coded into the bot and available for you to assign to as many roles as you like, those roles can be assigned to as many users as you like. Users can also have multiple roles.
Permissions
View Roles
Create role
, Delete role
, Update role
, Permissions
, Update permission from role
, Update roles from user
,Manage the config
, Manage timeouts
, Media filter
, Increase cringe counter
, Decrease cringe counter
, Manage custom commands
, Manage reactions
, Manage rewards
, Manage xp for users
, Manage channel flags
,
Manage log config
, Add mention replies
, Remove mention replies
, Manage reply groups
,Manage blacklist
, Manage server invites
, Manage custom messages
Default Roles
-
Admin
View Roles
Create role
, Delete role
, Update role
, Permissions
, Update permission from role
, Update roles from user
, Manage the config
, Manage timeouts
, Media filter
, Increase cringe counter
, Decrease cringe counter
, Manage custom commands
, Manage reactions
, Manage rewards
, Manage xp for users
, Manage channel flags
,
Manage log config
, Add mention replies
, Remove mention replies
, Manage reply groups
, Manage blacklist
, Manage server invites
, Manage custom messages
.
-
Moderator
Manage timeouts
, Media filter
, Increase cringe counter
, Decrease cringe counter
, Manage custom commands
, Manage reactions
, Manage channel flags
, Add mention replies
, Remove mention replies
, Manage reply groups
, Manage blacklist
, Manage custom messages
.
Commands
- roles list • Overview of all roles and their permissions
- roles add
role_name
• Add a new role
- roles delete
role_name
• Delete a role
- roles roles
user_mention
• See your roles or those from another user
- permissions list • Overview of all permissions
- permissions add
role_name
perm_name
• Add permission(s) to a role
- permissions delete
role_name
perm_name
• Remove permission(s) from a role
- users list • Overview of all users and their roles
- users add
user_mention
role_name
• Add user to the given role
- users delete
user_mention
role_name
• Remove user from given role";
Levels and XP
If enabled users can gain xp by sending messages and hanging out in voice. Check the Bot config section below for more control how much xp people gain per message, per minute in voice and if you want to enable this functionality at all. It is possible to attach role rewards to levels, when a user reaches that specific level a new role is granted.
For gaining xp in voice we have two extra rules:
- Muted users (either mic muted or both) do not gain XP.
- Users in a voice channel marked as
no_xp
will not gain XP.
More on how to set the no_xp flag to a channel later.
Calculating Levels
This is what I use to calculate required XP for each level: 5 * (lvl ^ 2) + (50 * lvl) + 100 - xp
it is the exact same XP system as MEE6 uses. You can read more here -> https://github.com/Mee6/Mee6-documentation/blob/master/docs/levels_xp.md
Commands
- xp leaderboard • Show the leaderboard with the highest ranking members at the top
- xp rank
user_mention
• Show your own level, xp and messages or that of another user
- xp give
user_mention
xp_amount
• Give user xp
- xp remove
user_mention
xp_amount
• Remove user xp
- xp reset
user_mention
• Reset XP for user
- rolerewards list • Show the role rewards for different levels
- rolerewards add
level
role_id
• Add a role reward to a level
- rolerewards delete
level
• Delete role rewards from this level";
Role rewards based on how long you are in the server
You can add role rewards based on how long people are in the server. Some duration examples:
- 1y2m3d - One year, two months and three days
- 4m - Four months
- 1y1d - One year and one day
Commands
- rewards duration list
- rewards duration add
<duration>
<role>
- rewards duration delete
<duration>
- rewards duration sync
Bot Config
The bot loads a config from the settings table which can be viewed and changed, it allows only integer values! So when setting channels or roles make sure to use the IDS.
- config guid list
- config guild edit
setting_name
new_value
Settings
xp_count
- xp gained per message
xp_cooldown
- seconds cooldown after last message before it counts again
xp_voice_count
- xp gained in voice
xp_voice_cooldown
- cooldown for xp gain in voice
enable_xp
- enable the message xp system
enable_voice_xp
- enable the voice xp system
enable_emote_counter
- enable emote counters
enable_role_rewards
- enable role rewards for gaining levels
enable_bump_counter
- enable bump counter
enable_reactions
- enable custom reactions
enable_commands
- enable custom commands
enable_logging
- enable general logging
enable_mention_responder
- Enable the responses when you mention the bot
enable_qotd_reminder
- Enable the role mention in set question of the day channel
enable_join_role
- Enables giving users a role when they join the server
enable_welcome_msg
- Enable the welcome message
enable_lvl_msg
- Enable level up message
enable_bump_reminder
- enable reminder tag
enable_count
- Enable the counting channel
bump_channel
- Channel where the bump reminders are tagged
qotd_channel
- Channel to tag qotd role
count_channel
- Counting channel ID
welcome_msg_channel
- Channel to welcome user
level_up_channel
- Channel to send level up messages
log_channel_id
- set the channel ID where the log sends messages
bump_reminder_role
- Role to be tagged for bump reminders
qotd_role
- Role to tag in qotd channel
join_role
- Actual role to give when a user joins the server
current_count
- Current counter for counting channel
User config
Users have their own settings per guild. For now, I only use a single setting but more to come soon.
no_role_rewards
- Disables gaining role rewards based on levels (if the guild has it enabled)
You can use the following commands to view/change your own settings:
- config user list - Show your config
- config user edit
<setting_key>
<setting_value>
- Update a value in your user config
Logging
The bot is able to log some events to a specific log channel, you have to set the following two settings properly in the bot config to make it work:
enable_logging
- Enable the general log
log_channel_id
- Id of the channel where the log sends messages
Events
I pretty much copied the way MEE6 logs events, it looks the same but it logs more and there is no delay. Not sure why MEE6 is sometimes so laggy.
The following events are logged:
- Joined server
- Left server
- Kicked from server
- Banned from server
- Unbanned from server
- Received timeout
- Joined voice call
- Left voice call
- Switched voice call
- Muted in voice by moderator
- Unmuted in voice by moderator
- Updated username
- Message updated
- Message deleted
- Invite created
- Invite removed
- Started streaming in voice
- Stopped streaming in voice
- Enabled his webcam in voice
- Disabled his webcam in voice
You can enable/disable each event in the log config:
- config log list - Look at the log config
- config log edit
key
value
- Enable or disable one of the events
Reminders
You can set reminders in a specific channel with a custom message! For now the reminder interval is in minutes!
- reminders list
- reminders create
interval
channel
message
- reminders delete
id
Moderation
We have some commands which can help moderate the server, or improve other things!
Timeout detection
We are not satisfied with the audit log and how timeouts are displayed and filtered. It is not easy to quickly look up how often somebody has been timed out, for what reason and how long. Every timeout is automatically saved in the database including the reason and duration. We can easily see a history
of timeouts + filter timeouts only for specific users.
- timeouts list
<user_mention>
- All timeouts or those from a specific user
- timeouts edit
<timeout_id>
<new_reason>
- Update the reason for a timeout
- timeouts delete
<timeout_id>
- Remove a timeout from the log only
Blacklist
People can be put on a blacklist manually or automatically.
- blacklist list - Show everyone on the blacklist
- blacklist block
<user_mention
<reason>
- Add someone to the blacklist
- blacklist unblock
<user_mention>
- Remove someone from the blacklist
Join role
You can make sure the bot gives users a role when they join the server. In order to make it work
you have to set the following settings:
enable_join_role
- Enable or disable giving the role
join_role
- ID of the actual role to give
Disable server invites
Since discord requires a "Mange server" permission to pause invites I added a simple command to
do it with the bot:
- invites toggle - Enable/disable invites
Custom messages
When adding custom messages you can use the :user
parameter in you message to be replaced with a tag of the user,
for level up messages you can also use :level
. Example:
Welcome :user!
Congrats :user you are now :level!
Welcome
You can add custom welcome messages to the bot. It wil pick one of the random messages and sends it in the channel set in the config.
- messages welcome list - Show list of custom level up messages
- messages welcome add
<message>
- Add new level up message
- messages welcome delete
<message>
- Delete level up message (Message is autocompleted)
Levels
You can set custom messages when users level up to a certain level. If you don't set any, a default message will be used if level up messages are enabled. When a user levels up, it checks for the highest message in the list which is not higher than that users level. Meaning if you set 2 messages, one for level 1 and one for level 10. The level 1 message will be used until that user reached level 10.
- messages levels list - Show list of custom level up messages
- messages levels add
<level>
<message>
- Add new level up message
- messages levels delete
<level>
- Delete level up message
Mention Responder
Small funny feature, when you tag the bot you will get a random reply from a list of mention replies. There are default replies, but you can also add your own replies based on certain roles or users in the server.
The bot comes with some default groups and replies:
- If you have a high rank in the server (according to the xp system)
- If you are the highest person on the leaderboard (according to the xp system)
- If you bumped the discord the most (all time)
- If you bumped the discord a lot
- If you had timeouts in the past
- If you are highly ranked on the cringe counter leaderboard
You can manage all groups and their replies by using these commands:
- mention groups list - Show all groups
- mention groups add
discord_role
- Add a group
- mention groups delete
group_id
- Delete a group and its replies (!!!)
- mention replies
group_id
- Show all replies for a single group
- mention replies add
group_id
reply_line
- Add a reply to a group
- mention replies delete
reply_id
- Delete a reply
Fun commands
A few fun commands you can use!
- fun urb
search_term
- Searches on urban dictionary
- fun 8ball
question
- Ask a question to the 8ball
- fun ask
question
- Ask a question and get a gif response
- fun say
something
- say something
- fun modstats - Who got the power?
- fun bumpcounter
time-range
• Check the monthly or all time bump leaderboard
- cringe add
<user>
- Increase someone's cringe counter
- cringe delete
<user>
- Decrease someone's cringe counter
- cringe reset - Reset someone's cringe counter
Bump Reminder
In order to make the bump reminder work, you need to set the following 3 settings:
enable_bump_reminder
- Enable 2 hour tag for people who want to bump the discord
bump_reminder_role
- Role to be tagged for bump reminders
bump_channel
- Channel where the bump reminders are tagged
Question of the day
In our server some people post questions every day, when they do the bot tags people who want to be reminded that a new question is posted. This way I do not have to give mention permissions which can be abused easily.
Check these settings:
qotd_channel
qotd_role
enable_qotd_reminder
Help command
You can write /help
on discord to get information on most commands in the bot and explanation how they work.
You can pick your section from the list and get more info.
That's it for now! Enjoy! :)