Skip to content

JojoFR1/Joseta

Repository files navigation

Joseta

GitHub Actions Workflow Status

Project

Joseta is a multipurpose, single server, Discord bot made with in Java with the JDA library.

Why single server?

This bot original purpose is to only be used in the official Mindustry France Discord server. It was made without support for multiple servers nor to be for public usage. This could change in the future.

This bot is not yet fully usable for personal use due to multiple hardcoded values that are now mostly removed with the configuration menu. If you wish to use it you are free to do so, but we do not give any support as of now.

Why Java and JDA?

We could have used JavaScript, Python or literally any other common languages, but due to personal preferences we chose Java. The JDA library was a library we already had experience with on top of being popular.

Features

Being multipurpose and not centered around one specific category or idea. All features implemented, updated or removed are based of our needs.

Below is non-exhaustive list of the features this bot currently has:

  • An Image-based Welcome for new members (or message in case the image is disabled or not properly loaded).

  • A Goodbye Message for leaving members.

  • Rules + an Acceptation System, acting as verification too (not yet configurable).

  • An Auto Response for common questions (not yet configurable but can be disabled).

  • A Counting Channel to let users count until infinity.

  • Multiple commands:

    Category Commands Use
    /config Configure the bot variables for your server. Use a GUI like comoponent message.
    Misc. /ping Get the bot and Discord API ping in milliseconds.
    /multi Manually send the multiplayer help message.
    /markov (Not implemented!) Generate a pseudo-random message using messages sent on the server.
    /reminder Add or list reminders.
    Moderation /modlog Get a member current moderation history.
    /(un)ban (Un)Ban a member from the server.
    /kick Kick a member from the server.
    /(un)timeout (Un)Timeout a member on the server.
    /(un)warn (Un)Warn a member on the server.
    /clear Clear messages in the channel.

Plans

The current plans and ideas for this bot are the following, in the likely order in which they will be made:

  • Add a Logging system (PR #15):

  • Add a Ticket system (probably PR 17 or 18).

  • Add permissions check

  • Collect and display statistics (message count, user join/leave)

  • Message leaderboard + levels (?).

  • Add translation for messages & logging (mainly to lower string repetitions and to have it all in one file)

  • Support multi-server:

    • Mainly to make it usable outside our server.
    • Make it actually usable for others.

Building

Building requires JDK 21 or later.

At the root of the project, use the following command: ./gradlew shadowJar

Once the build process is finished, the output will be present in ./build/libs/JosetaBot.jar.

Running

You will first need to follow the instructions in the .env.template file before being able to run the bot. This is mandatory.

Then, you can execute this command: java -jar build/libs/JosetaBot.jar with the following arguments: (after the .jar)

  • Default: run the bot normally. (Log level is info level)
  • --debug: run the bot in debug mode. (Log level is debug level & intended for testing)
  • --server: run the bot in server mode. (Log level is debug level & save log file up to 14 days)

You can also run the runShadow Gradle task with ./gradlew runShadow, which is the same as running the jar with the --debug argument.

Contributors

Thanks goes to these wonderful people (emoji key):

Jojo
Jojo

💻 🤔 🚧 🚇
ZetaMap
ZetaMap

💻
Patou
Patou

💻
l4p1n (Mathias B.)
l4p1n (Mathias B.)

💻 🤔 🧑‍🏫
Add your contributions

This project follows the all-contributors specification. Contributions of any kind welcome!

About

A Discord bot made in Java with the JDA library.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages