Sheldan 325264a325 [AB-150] creating repost detection feature including configuration and documentation
adding http and hash service
adding ability to add default emotes to a message to message service
adding message embedded listener to wrap the embedded event
adding custom channel groups which can be defined by modules, in case a change on a channel group (only created and updated) happens a listener is available in order to sync the state in dependant areas
changing command receiver re-throwing abstracto runtime exceptions in order to display them better
changing channel group parameter handler to throw an exception in case the channel group was not found
adding User in a server parameter handler
split channel not found exception to be able to differentiate between not found in database and not found in guild
changing exception handling in command received handler to handle the case for only one parameter handler future which failed (the whole single future failed, which was not reported)
changing parameter type of `removeFromChannelGroup` to AChannel in order to be able to delete channels in the database via ID
moving method to mock utils for mocking consumer
removing parameter validation from commands, as it should be done in the command received handler and parameter handlers anyway
2020-12-13 01:50:09 +01: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 together.
  • 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%