upgraded JDA version to 4.2.0 refactored multiple interfaces to be more convenient/contain more information (reaction added/removed now gets the actual event) added generic way to check for conditions. these conditions are provided by modules and are loosely connected via condition context and a condition name added changeable flag to emotes to indicate that they can be updated via setEmote refactored emote parsing in command parameters, the command parameters will now contain a fake emote added feature to embed templates for fields to force a new message regardless of the discord limit added some more functionality to message and channel service regarding field edit/embed sending introduced the full emote parameter, to have both the emote (if custom) and a fake aemote at hand refactored some methods to already throw exceptions within the retrieval methods, instead of optionals which need to be dealt outside changed getEmotes to getEmotesBag to have duplicates of emotes fixed setEmote to behave correctly with new parameter types fixed creation of emotes, which previously created additional instances fixed templating multiple fields handling refactored command handling to allow async commands, they are the same interface, but configuration dicates whether or not it is async added generic exception reporting for async commands refactored a bunch of service methods to be named optional, and the non optional methods throw exceptions in case nothing is found added a few more customized exceptions added clearing freemarker internal template cache to clear cache added feature to skip, not use, embeds if they look to be empty (no fields, no description, no attachment) added virtual env to gitignore fixed initial sync of roles un-marking roles as deleted added some convenience methods to remove reactions from users directly fixed post command handling in case it is not a templatable instance fixed exceptions without cause in generic exception model
Abstracto
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.