- Kotlin 100%
| .idea | fix: ignore bot messages for levels | |
| gradle/wrapper | init | |
| src/main | chore: format with ktfmt | |
| .gitignore | apparently you're *not* supposed to ignore the whole .idea directory oops | |
| build.gradle.kts | chore: format with ktfmt | |
| gardener.example.properties | feat: add nolevels commands | |
| gradle.properties | init | |
| gradlew | init | |
| gradlew.bat | init | |
| LICENSE | add license and ignore .idea directory | |
| README.md | readme: rebrand to coffee fox | |
| settings.gradle.kts | chore: format with ktfmt | |
Coffee Fox
Discord bot to handle a couple functions servers we moderate need, that we can't get with major bots (ot at least, not without premium)
Written in Kotlin using the Kord library. Written with maintainability in mind, though we probably haven't done a very good job at that.
Required features:
- Leveling
- User background checks--this includes importing moderation logs and notes from Carl-bot as they're made
- User/guild info commands
- Member lookup by roles and join date, ideally feature parity with
Rubie/Tribble's
memberscommands.
Nice to have:
- Report message/slash command
- Reminders
- Emoji related commands such as
enlarge
Feature creep:
- Markdown -> embed parser for server resources
Note: Coffee Fox initially started as "The Gardener", but we changed the name partway through development. Most code, including package names and configuration files, still calls it "gardener". We don't intend to change this because it would be a lot of work for basically no benefit.
Setup
Coffee Fox requires Java 17 and PostgreSQL. (any version should do, though we've only tested it with 15)
- (Optional) if you've already built the project, use
./gradlew clean - Build project with
./gradlew build - Copy
gardener.example.propertiestogardener.propertiesand fill in the fields - Run the standalone jar in
build/libs
Configuration keys
The bot is configured using a gardener.properties file. Keys are:
discord.token(string): the bot token, withoutBot(so just what you get from the developer portal)discord.commands.sync(boolean): whether to sync commands on startup. Recommended to always keep enabled in production, but because the endpoint has a strict rate limit, recommended to disable unless needed in development.discord.commands.guild(ulong): the guild ID to sync commands to. Only recommended in development, leave empty to sync to all guilds.database.driver(string): the database driver. Recommended to leave this empty or set it toorg.postgresql.Driver, anything else is untested.database.dsn(string): the database URL in JDBC formatdatabase.username(string): the database usernamedatabase.password(string): the database password
License
Copyright 2023-2024 sam sam@starshines.gay
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.