This takes advantage of generics, and generally clears up a lot of
inconsistencies and quality-of-life issues.
Start of db rework: clean up, start generics, improve tests
Write some nice aspirational package docs
Rework and document the db API
Tests still pass, at least...now for everything else
Update all callsites of db functions
Finish converting all callsites
Not too bad actually! Centralizing access into the helpers makes a big
difference.
wtf it works
Clean up several TODOs
Implement the full disconnect / resume flow
Detect zombied connections and restart
Implement the random delay on reconnect
Implement message sending!!
(with a goofy feedback loop on the echo bot)
Fix the feedback loop in the echo bot
Clean up the Discord gateway code
Many things are methods now to reduce the amount of explicit plumbing.
Connection handling should be a little more robust, and we have an
actual error handling strategy now.
Allow sending multiple Discord messages at once
Delete irrelevant tests
uhh, start rate limiting
Add per-route rate limiting
Add global rate limit handling
Handle context cancellation in Discord REST code
Allow changing buckets per route
Add the showcase rejection bot
Add library bot