Sheldan 76adda90a3 [AB-57] [AB-61] reworked commands and services to work with completable futures and moved the database operations to the very last operation so we have transaction safety in more areas
added some cache annotations to the default repository functions
reworked how the undo cations are processed within commands, they are executed in a post command listener when the state is error
added a counter id to generate ids to be unique within servers, changed a few tables to be unique within a server
added future utils class for wrapping a list of futures into one
moved abstracto tables to separate schema in the installer
refactored experience gain to work with more futures and delayed database access
2020-09-22 00:28:09 +02:00
2020-06-10 18:01:33 +02:00

Abstracto

Build Coverage SonarCloud GitHub license

Abstracto represents a framework to be used as a basis for a Discord bot. It uses JDA as an API wrapper underneath and provides an extensive tool set to create new commands and a wide range of commands out of the box.

This repository does not provide the full functionality in order to start a discord bot, because it requires a Main class. An example implementation of this bot can be seen here. This repository contains the required configuration in order to run a bot and example customizations.

Technologies

  • JDA The Discord API Wrapper in the version 4.1.1_167
  • Spring boot is used as a framework to create standalone application in Java with Java EE methods. (including Dependency injection and more)
  • Hibernate is used as a reference implementation of JPA.
  • Freemarker is used as a templating engine. This is used to provide internationalization for user facing text and enable dynamic embed configuration.
  • Ehcache is used as a caching implementation for the database and other caches.
  • Lombok is used as a framework in order to speed up creation of container classes and builders.
  • Quartz is used as a scheduling framework in order to provide functionalities which either require a delayed or cronjob behaviour.
  • Docker is used to package the application into a container and Docker Compose is used to connect the required containers togeteher.
  • Ansible is used to deploy configuration to the running instance
  • Liquibase is used to manage changes to the database

Documentation

A detailed documentation of the pure form of Abstracto including the terminology and commands in HTML form is available here. The PDF is available here If you want to view the documentation to an earlier released version you need to append the desired version to the URL. The current version will be available aforementioned URL, but it is not right now, because Abstracto has not been released yet.

Customization documentation

TBD when Abstracto is released, as the current version is still being adapted, because of findings from the example customization in Crimson.

Issues

If you find any issue, feel free to create a GitHub issue.

License

This project is licensed under the MIT license.

Languages
Java 99%
Python 0.5%
TypeScript 0.4%