Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kanetw/aradia-backend
Discord bot backend
https://github.com/kanetw/aradia-backend
Last synced: 9 days ago
JSON representation
Discord bot backend
- Host: GitHub
- URL: https://github.com/kanetw/aradia-backend
- Owner: KaneTW
- Created: 2017-11-15T06:34:30.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2017-12-11T06:45:50.000Z (about 7 years ago)
- Last Synced: 2024-11-06T13:01:43.908Z (about 2 months ago)
- Language: Haskell
- Size: 12.7 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
An implementation of the Discord API
Goals:
* Remove as much partiality as possible. ExceptT instead of IO exceptions, no `error`, etc etc
* Type-safe API similar to Servant (likely: use Servant for backend)
* Caching support (with proper isolation of servers)
* Eventually: pluggable caches (in-memory, Redis, ...)
* Ideally pluggable events --- user should be able to add a missing endpoint or whatever. Probably not reasonably possible.
* Proper separation of servers (guilds) --- user data should not leak from one to the other
* Websocket stuff, eventually voice
* Storage backends are probably out of scope for this?
* Honor rate limits
* Properly handle all discord errors
* Properly handle authentication. Eventually: Full OAuth2 flow support
* Be compatible with an eventually consistent system
``` Due to this, client actions can never be serialized and may be executed in any order (if executed at all). Along with these constraints, events in Discord may:
Never be sent to a client
Be sent exactly one time to the client
Be sent up to N times per client
Clients should operate on events and results from the API in as much of a idempotent behavior as possible.
```
* Properly handle user-agent