Description
Is your feature request related to a problem? Please describe.
MultiChat's API is quite sparse, it currently only allows to listen to global, staff chat and broadcast events.
In order for developers to integrate their own plugins with MultiChat, it would need to be extended and maybe revamped.
Describe the solution you'd like
The API could be used to listen to these events, if suitable and in MC's scope:
- chat message (for all possible channels incl. spy/PMs, with possibility to register to a specific one)
- /HelpMe message
- player sets nick
- player joins/leaves network
- player changes server
- command is executed
- ...?
In addition, the API could also expose methods to:
- send a chat message to a given channel/server
- retrieve user information (e.g. nick)
- set user information (e.g. nick)
- retrieve channel list, channel information, channel members
- ...?
The API would be available to both Waterfall plugins and Sponge/Spigot, so that plugins can be integrated in the place they make the most sense for a given scenario.
Describe alternatives you've considered
For external integrations, I was thinking of implementing webhooks, Discord links or a built-in http/websocket server into MultiChat. But offering events via the internal API makes more sense and is more useful. Other plugins can then integrate with it, and a specific plugin can be developed independently to bridge MultiChat with third-party services.
Additional context
My initial need was to send HelpMe alerts to staff members when they are not online (e.g. via Discord or webhook), but expanding the API to have various custom integrations without bloating the main plugin is better.