Sheldan fd4d784081 added assignable role place module including: setting up, configuring, deleting commands and documentation
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
2020-08-12 20:01:15 +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%