Refactor: improve Discord shim
IDiscordManager
currently only provides a single shim to the active Discord client. Expand the shim to include actual operations, to support a fake implementation to more easily integration-test I/O operations without needing an actual auth token:
- Channel:
- get by ID
- send message
- User:
- get by ID (check cache, explicit fetch)
- send message (DM)
Real DiscordManager
should internally hide maintenance operations like connect/disconnect/reconnect, enqueue/requeue, etc.