? Towa (トワ)
Powerful and advanced command handling library made for Discord
What is this?
This is a (totally original) command handling library for Kord. The name “Towa” was an inspiration of Towa Tokoyami from Hololive Gen 4.
Towa has support for Discord’s new slash commands API and for text-based commands if you want something done. Nino uses both slash and text-based commands (also known as “legacy-prefixed commands”).
Towa uses a concept to build off features that should be put into mutiple modules. This can be used from the AbstractExtension
where you can create your own features that can be exposed from the Towa API.
Who uses this?
As of right now, Nino uses this! If you use it, submit a PR and you shall be showcased!~
Example
suspend fun main(args: Array<String>) {
val towa = Towa {
// Enables the Slash Commands API
useSlashCommands {
locate(ReflectionLoader {
applicationCommandsPackage = "some.package.to.load.your.commands"
configure { // This configures `ClassGraph`, which is internally used.
}
})
}
kord("token") {
// Create your Kord instance here, or use `TowaBuilder.useKord` to
// use an existing instance.
}
}
// Registers all the commands and inhibitors.
// It also registers all the select menu, text prompts, buttons,
// and autocomplete handlers.
towa.launch()
}
Subprojects
Towa is split into multiple subprojects to abstract pieces from.
- slash-commands – Slash commands implementation for Towa.
- legacy-commands – Legacy prefixed based commands impl for Towa.
- core – The core implementation for Towa.
Arguments
Arguments are only applicable to the towa-legacy-commands package only.
Coming soon.
Installation
Documentation: https://towa.nino.sh
Version: 1.3.0
Gradle
Kotlin DSL
repositories {
maven {
url = uri("https://maven.floofy.dev/repo/releases")
}
}
dependencies {
implementation("sh.nino.towa:towa-<MODULE>:<VERSION>")
}
Groovy DSL
repositories {
maven {
url "https://maven.floofy.dev/repo/releases"
}
}
dependencies {
implementation "sh.nino.towa:towa-<MODULE>:<VERSION>"
}
Maven
<repositories>
<repository>
<id>noel-maven</id>
<url>https://maven.floofy.dev/repo/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>sh.nino.towa</groupId>
<artifactId>towa-{{module}}</artifactId>
<version>{{VERSION}}</version>
<type>pom</type>
</dependency>
</dependencies>
Contributing
Thanks for considering contributing to Towa! Before you boop your heart out on your keyboard ✧ ─=≡Σ((( つ•̀ω•́)つ, we recommend you to do the following:
- Read the Code of Conduct
- Read the Contributing Guide
If you read both if you’re a new time contributor, now you can do the following:
- Fork me! **♡( ⁎ᵕᴗᵕ⁎ )
- Clone your fork on your machine:
git clone https://github.com/your-username/towa
- Create a new branch:
git checkout -b some-branch-name
- BOOP THAT KEYBOARD!!!! ♡┉ˏ͛ (❛ 〰 ❛)ˊˎ┉♡
- Commit your changes onto your branch:
git commit -am "add features (。>‿‿<。 )"
- Push it to the fork you created:
git push -u origin some-branch-name
- Submit a Pull Request and then cry! 。・゚゚・(థ Д థ。)・゚゚・。
License
Towa トワ is licensed under the MIT License by the Nino Team with love ?~