Assyst is a multi-purpose Discord bot with a focus on image processing and manipulation, custom commands via a tag parser, and other unique features. A more detailed overview of the Assyst feature-set can be located on the Top.gg listing page for Assyst.
Assyst is split into a number of separate crates, as described below.
- assyst-core: Main command-handling process. Also contains logic for the parsing of message-based commands.
- assyst-gateway: Connects to the Discord WebSocket gateway to receive messages, which are then forwarded to assyst-core for processing.
- assyst-cache: Independent cache process designed to hold some caching information.
- assyst-common: Utilities, structures, and functions shared throughout the entire Assyst ecosystem.
- assyst-tag: Tag parser and handler.
- assyst-database: Interfaces with PostgreSQL, for database purposes.
- assyst-webserver: Web server designed to handle webhooking, such as vote processing for Discord bot list websites, as well as Prometheus metrics.
- assyst-proc-macro: General purpose procedural macros (currently just a macro for command setup)
For more information on each crate, refer to the README.md file for the crate.
Each binary is ran as an independent process on the same host machine. Each binary communicates through the use of Unix-like pipes. For more information, please refer to the README.md file for the relevant crate.
All contributions - both issues and pull requests - are greatly appreciated. Contributions are done on a fairly loose basis. The easiest way to begin contributing is to first understand the structure of Assyst - this can be done initially by understanding all individual crates by reading their READMEs. If you have any questions, feel free to open an issue. All issues are free to be tackled by anyone.
Self-hosting is not yet supported for this version of Assyst, since it is not yet considered production-ready. Self-hosting may be supported with release 1.0.0.
Special thanks to y21 and Mina for their invaluable help and contributions towards this version of Assyst.
Thank you to the team developing cobalt.tools for creating such a versatile and easy-to-use downloading tool.
Thank you to the countless developers of the libraries and programs powering both Assyst and Flux, in particular:
- Tokio - the asynchronous runtime that Assyst uses,
- Twilight - the Discord API library that Assyst communicates to Discord with,
- Image - the primary library providing image decoding, encoding, and editing functionality to Flux,
- FFmpeg - simply the best multimedia processing tool ever made,
- gegl - providing a bunch of handy image manipulation tools.