KordEx Bot Template
This repository contains a basic KordEx example bot for you to use as a template for your own KordEx bots. This includes the following:
- A basic extension that allows you to slap other people, using both message commands and slash commands
- A basic bot configuration that enables slash commands and shows you how to conditionally provide a different message command prefix for different guilds
- A Gradle Kotlin build script that makes use of the Kotlin Discord public maven repo, Detekt for linting (with a fairly strict configuration), and a Git commit hook plugin that runs Detekt when you make a commit – this also makes use of Gradle 7’s new version catalog feature, for easy configuration of dependencies
- GitHub CI scripts that build the bot and publish its artefacts
- A reasonable
.gitignorefile, including one in the
.ideafolder that ignores files that shouldn’t be committed – if you’re using IDEA yourself, you should install the Ignore plugin to handle changes to this for you
- A Groovy-based Logback config, so you have reasonable logging out of the box
- A Gradle wrapper using Gradle 7.1.1
.github/are used to configure GitHub apps. If you’re not using them, you can remove them.
- The provided
LICENSEfile contains The Unlicense, which makes this repository public domain. You’ll probably want to change this – we suggest looking at Choose a License if you’re not sure where to start.
- In the
- Set the
versionproperties as appropriate
- If you’re not using this to test KordEx builds, you can remove the
- In the
tasks.jarblocks, update the main class path/name as appropriate
- To target a newer/older Java version, change the options in the
- Set the
- In the
settings.gradle.kts, update the name of the root project as appropriate.
- The bundled Detekt config is pretty strict. You can check over
detekt.ymlif you want to change it, but you need to follow the TODOs in that file regardless.
- The Logback configuration is in
src/main/resources/logback.groovy. If the logging setup doesn’t suit, you can change it there.
App.ktincludes a basic bot which uses environment variables (or variables in a
.envfile) for the testing guild ID (
TEST_SERVER) and the bot’s token (
TOKEN). You can specify these either directly as environment variables, or as
KEY=valuepairs in a file named
.env. This file also includes some example code that shows one potential way of providing different command prefixes for different servers.
TestExtension.ktincludes a simple example extension that creates a
slapcommand. This command works as both a message command and slash command, and allows you to slap other users with whatever you wish, defaulting to a
large, smelly trout.
To test the bot, we recommend using a
.env file that looks like the following:
Create this file, fill it out, and run the
run gradle task for testing in development.