added a barebone `t/info` command to print bot into. Currently it only prints the public IP of the machine on which the bot is running, but it will be expanded to include LAN IP, transmissionrpc info, and discord.py info.
* NEW: added log rotation
* NEW: improved error handling
* NEW: makes backup copies of original when overwriting json files
* NEW: `notification_channel_id` config item is now an integer (was previously a string)
* NEW: bot prefix is optional in DMs
* IMPROVED: don't print reactions to notifications that only contain removed transfers
* IMPROVED: in-channel help now initiates a help DM to the user
* FIXED: fixed potential access of `CONFIG` before being initialized
* FIXED: validate notification channel before trying to post notifications
* FIXED: `notification_DM_opt_out_user_ids` config is now properly respected
* improved output messages regarding modification of transfers in the event the user doesn't have permission to perform the modification
* added another override configuration option regarding removal of private transfers: 'private_transfer_protection_bot_owner_override'
* better printing of times (auto-update message frequency, transfer eta)
* user-configurable auto-update message frequency and timout (see `t/help config`)
guaranteed that output mode is consistent throughout a particular transaction (i.e. if the bot's waiting a response from one user while the output mode changes for another) by simply passing the output mode as an argument instead of using a global variable (which made sense when I first set that up...)
added ability to reprint messages by clicking printer reaction
made configuration option for reaction timeout
more honest printing of eta for downloads
users can toggle compact output in DMs
* `t/summary` now takes the same LIST_OPTIONS as `t/modify` and `t/list`, so you can see a partial summary of whatever transfers match the query.
* added a summarize reaction to the output of `t/list` so you can quickly summarize the transfers in the output message.
* added checks for whether an added torrent uses a private tracker. If so, the command message that added the torrent(s) is deleted (added corresponding configuration option), and a message is printed to the user to remind them to check the private tracker rules regarding sharing of torrent files
* `t/add` output to use embeds
* better error handling and logging
* added `channel.typing()` where appropriate so users know the bot is thinking
* added configuration options for overriding private torrent removal protection for the user that added the transfer
added missing filters for `t/list` and `t/modify`
added configuration option to control whether command messages are deleted by the bot. if disabled, you can see the commands that prompted a result message
added configuration options for `t/modify`:
* 'whitelist_user_can_remove', 'whitelist_user_can_delete', and 'whitelist_added_user_remove_delete_override'
* The first two control whether a whitelisted user can remove or remove and delete any transfer (owners are always able to delete)
* The third overrides this behavior, only for transfers added by the user
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.