added labeling to multi-message output for `t/list` and `t/modify` (e.g. message 1 of 2)
Played with the output of `t/list` and `t/modify` to make it a bit easier to interpret
* add notifications, in-channel and through DMs
* users will automatically receive DM notifications for transfers they add
* users can opt into notifications for other transfers by reacting with a 'bell' to `t/list` output, or by reacting with a 'bell' to an in-channel notification
* users can opt out of particular DM notifications by reacting with a 'crossed bell' to a DM notification
* users can disable all DM notifications by sending a `t/notifications` command to the bot via DM
* owners can disable in-channel notifications using the `t/notifications` in the notification channel
* bot now responds to DMs, using all the same commands (with a `t/` prefix) or without a prefix using the commands full name (e.g. just `summary`)
* fixed delay if you set `t/summary` to auto-update, then printed a sublist of transfers, `summary` was waiting until the subsequent message was done monitoring its reactions before updating itself, but now it loads the subsequent message using asyncio.create_task() so it doesn't have to wait.
* users can now add transfers by simply posting a .torrent file in a listened channel or via DM, no command required.
* disabled checking reactions as their added; that was slow.
* reload transmissionrpc client (when there's no repeating messages) so the bot can handle when transmission restarts or becomes unavailable.
last commit I also:
* Made reactions more stable and performant
* in `t/summary` and `t/modify` reactions are checked as their added, so a user can click a reaction before they're done printing and it will apply the action, aborting the printing of the rest
* reactions are checked immediately after they're added and again before `t/summary`, `t/modify`, and `t/list` return, catching the case where a user's click isn't registered by `wait_for()` (i.e. if they clicked too soon while the last reaction was printing)
* now support multiple auto-update messages
* if an auto-update message is no longer the most recent, a 'printer' reaction will appear that a user can click to reprint the output at the bottom of the channel
* Output mode (desktop or mobile) is now autoselected based on `user.is_on_mobile()`
* can be overwritten using `t/compact`
* now `t/list` also supports searching by transfer IDs
Added `t/compact` command to toggle between mobile or desktop command output that applies to `t/summary`, `t/list`, `t/modify`
User can click a reaction of `t/summary` or `t/modify` while reactions are still being printed.
1) `list` auto-update was deleting the old message every time, now it (and `summary`) edits the existing message(s) when auto-updating *unless* the auto-update message isn't the most recent. If there are newer messages then the auto-update is deleted and reposted at the bottom
2) depending on the timing with which a user presses the "cancel" reaction to stop auto-update, it could be missed. Added a final check based on the count of the cancel reaction. This has the drawback that any user can cancel the auto-update, but I could check to make sure the message author is one of the people that pressed it.
When auto-updating `summary`, reactions were not being removed for listing types of transfers of which there were none. Now that's fixed. e.g. if the number of downloading transfers goes from 1 to zero, the downloading reaction will be removed the next time the output is updated.
Repeat option for `summary` and `list` commands
More filters: stalled, running (non-zero rate), error (and types of error), verifying data, queued, public/private (tracker)
Added option to verify data to `modify` command
Added more info to summary.