Diskord
A Kotlin client for Discord with a light wrapper on the REST APIs and a simple to use DSL for basic bots.
Install / Use
/learn @JesseCorbett/DiskordREADME
Diskord - A Kotlin Discord SDK
A multiplatform Kotlin client for Discord bots with a simple and concise DSL supporting JVM and NodeJS
Built as a lean client using coroutines that gets the intricacies of rate limits, async, and data models out of your way in a clean and easy to use SDK
Using Diskord? Drop by our discord server
How do I import this?
It is strongly recommended to use Gradle version 7 or higher
// Kotlin build.gradle.kts
repositories {
mavenCentral()
}
dependencies {
implementation("com.jessecorbett:diskord-bot:5.5.1")
}
Note: The diskord-bot artifact bundles org.slf4j:slf4j-simple to provide basic logging to STDOUT with no
configuration. This can be excluded in favor of your own slf4j logger using gradle exclusion:
// Kotlin build.gradle.kts
configurations {
implementation {
exclude("org.slf4j", "slf4j-simple")
}
}
The library is packaged into two artifacts.
diskord-core is the low level implementation of the Discord API.
Read more
diskord-bot provides an easier to use API for common bot functions.
Read more
How do I use this?
For an example project you can easily clone to get started, look at the diskord-starter repo.
There are also a collection of examples in the diskord-examples repo.
Simple Example
import com.jessecorbett.diskord.bot.*
import com.jessecorbett.diskord.util.*
suspend fun main() {
bot(TOKEN) {
// Generic hook set for all events
events {
onGuildMemberAdd {
channel(WELCOME_CHANNEL_ID).sendMessage("Welcome to the server, ${it.user?.username}!")
}
}
// Modern interactions API for slash commands, user commands, etc
interactions {
slashCommand("echo", "Makes the bot say something") {
val message by stringParameter("message", "The message", optional = true)
callback {
respond {
content = if (message != null) {
message
} else {
"The message was null, because it is optional"
}
}
}
}
commandGroup("emoji", "Send an emoji to the server", guildId = "424046347428167688") {
subgroup("smile", "Smile emoji") {
slashCommand("slight", "A slight smile emoji") {
callback {
respond {
content = "🙂"
}
}
}
}
slashCommand("shh", "The shh emoji") {
val secret by stringParameter("secret", "Send the emoji secretly")
callback {
respond {
content = "🤫"
if (secret) {
ephemeral
}
}
}
}
}
}
// The old-fashioned way, it uses messages, such as .ping, for commands
classicCommands("!") {
command("ping") {
it.respond("pong")
}
}
}
}
FAQ
- Does this support voice chat?
- No, voice chat is not supported at this time. If you need it I recommend checking out another SDK
- Can I contact you to ask a question/contribute to the project/report a bug?
- What if I'm hip and cool, and I want to use a newer more ~~unstable~~ exciting version?
- You can use our development versions by using the snapshot repository
- Include https://oss.sonatype.org/content/repositories/snapshots/ in your gradle repositories
Related Skills
imsg
343.3kiMessage/SMS CLI for listing chats, history, and sending messages via Messages.app.
node-connect
343.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
92.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
discord
343.3kDiscord ops via the message tool (channel=discord).
