K9 is a self-hosted, minimalist level tracking Discord bot. It tracks post frequency in a persistent database, assigning experience to posts which contributes to a total user level. This user level is used to apply custom roles to award active users.
An example of this functionality can be seen in Auri's Den.
- NodeJS 12+
- NPM
- MongoDB
- Clone this repository:
git clone https://github.com/Aurailus/k9
- Install node dependencies:
npm install
- Copy
conf.example.toml
toconf.toml
- Put a valid discord token and other configuration details in
conf.toml
. - Run the bot:
npm start
To allow the bot to start, track levels, and give role rewards, fill out conf.toml
with the missing credentials. An example and explanation of all the variables are shown below.
Example:
[auth]
# A Discord Bot token
discord = "token"
# MongoDB URL
mongo_url = "mongodb://host/database"
[options]
# Custom status
status = "Hanging out"
# Command prefix
prefix = "/"
# Delete commands after execution
delete_triggers = true
[plugin.level]
# Bot responds to "good dog" after ranking up.
please_and_thank_you = false
[plugin.level.message]
# Cooldown time
cooldown = 30
# Minimum message length
min_length = 30
[plugin.level.experience]
# https://www.desmos.com/calculator/80hyi0deu6
# First level XP offset.
a = 15
# Larger values makes XP / level higher.
b = 6.5
# Larger values make XP / level exponentially higher.
c = 1.5
[[plugin.level.roles]]
# Level to acquire role
level = 1
role = "RoleID"
[[plugin.level.roles]]
level = 2
role = "RoleID"
[[plugin.level.roles]]
level = 5
role = "RoleID"
If you would like to contribute, please follow the code style used in the existing source files, and indent with tabs. Once you are done submit a pull request outlining what you have changed / added and why it should be implementing into the bot.
© Auri Collings, 2021. Made with <3
Licensed under the Apache License, Version 2.0.