mirror of
https://github.com/NohamR/TransmissionBot.git
synced 2025-05-24 14:22:00 +00:00
Update README.md
This commit is contained in:
parent
3de928634e
commit
7123dad86d
106
README.md
106
README.md
@ -2,24 +2,15 @@
|
|||||||
A python Discord bot for controlling an instance of [Transmission](https://transmissionbt.com), the torrent client, using the [transmissionrpc](https://pythonhosted.org/transmissionrpc/) python library.
|
A python Discord bot for controlling an instance of [Transmission](https://transmissionbt.com), the torrent client, using the [transmissionrpc](https://pythonhosted.org/transmissionrpc/) python library.
|
||||||
This bot is built on [kkrypt0nn's bot template](https://github.com/kkrypt0nn/Python-Discord-Bot-Template) and adapted from [leighmacdonald's transmission scripts](https://github.com/leighmacdonald/transmission_scripts).
|
This bot is built on [kkrypt0nn's bot template](https://github.com/kkrypt0nn/Python-Discord-Bot-Template) and adapted from [leighmacdonald's transmission scripts](https://github.com/leighmacdonald/transmission_scripts).
|
||||||
|
|
||||||
## Features
|
## Features overview
|
||||||
* Completely self-contained: Get the python dependencies, configure a single python file, and run
|
* [Interact via text channels or DMs](#channelDM)
|
||||||
* Complete management of transfers:
|
* [Add transfers](#add)
|
||||||
* `t/add URL` Add new torrent transfers via **URL to torrent file** or **magnet link**
|
* [Modify existing transfers](#modify)
|
||||||
* `t/list [OPTIONS]` List existing transfers with filtering, sorting, and searching transfer names with regular expressions or transfer ID(s)
|
* [Check transfer status](#status) (with optional realtime updating of output)
|
||||||
* `t/modify [OPTIONS]` Modify (pause, resume, remove, remove and delete, or verify data) transfer(s) specified using `list`'s options
|
* [Notifications for transfer state changes](#notifications)
|
||||||
* `t/summary` Print simple summary of all transfers
|
* [Pretty output and highly configurable](#pretty)
|
||||||
* User-friendly and attractive interface
|
* [Easy setup](#setup)
|
||||||
* In-channel documentation using `t/help [COMMAND]`
|
* [`t/help` for usage information](#help)
|
||||||
* Use of `embeds` where appropriate
|
|
||||||
* Uses reactions in lieu of text input where appropriate
|
|
||||||
* Output automatically formatted to look good on desktop/mobile clients
|
|
||||||
* Can toggle override using `t/compact`
|
|
||||||
* Auto-update output for `summary` and `list` commands
|
|
||||||
* Simultaneous auto-update output messages supported
|
|
||||||
* An auto-update output message can be reprinted to the bottom of the channel by clicking its "🖨" reaction
|
|
||||||
* User whitelist and blacklist to control access
|
|
||||||
* Channel list to limit access to specified channel(s)
|
|
||||||
|
|
||||||
## Example images
|
## Example images
|
||||||
* Transfer summary (and symbol legend)
|
* Transfer summary (and symbol legend)
|
||||||
@ -62,28 +53,93 @@ This bot is built on [kkrypt0nn's bot template](https://github.com/kkrypt0nn/Pyt
|
|||||||
* Optionally disable logging by setting the log level to `logger.CRITICAL` which isn't used anywhere
|
* Optionally disable logging by setting the log level to `logger.CRITICAL` which isn't used anywhere
|
||||||
3. Run with `python3 /path/to/TransmissionBot/bot.py` and enjoy!
|
3. Run with `python3 /path/to/TransmissionBot/bot.py` and enjoy!
|
||||||
|
|
||||||
|
## Detailed features
|
||||||
|
|
||||||
|
### <a name="channelDM">Interact via text channels or DMs</a>
|
||||||
|
* Use commands with `t/` prefix in text channel or via DM
|
||||||
|
* Via DM only, use full command name without prefix (*e.g.* `summary`)
|
||||||
|
|
||||||
|
### <a name="add">Add transfers</a>
|
||||||
|
* Simply drag a `.torrent` file into the channel on discord and it will be added and started
|
||||||
|
* Alternatively, enter a transfer magnet link or an address to a `.torrent` file using `t/add MAGNET_OR_URL`
|
||||||
|
|
||||||
|
### <a name="modify">Modify existing transfers</a>
|
||||||
|
* `t/modify` to pause, resume, verify, remove, or remove and delete one or more transfers
|
||||||
|
* Specify transfers using sequence of ids (*e.g.* 1,3,5-8), searching transfer names with regular expressions, or filtering by transfer properties (*e.g.* downloading, finished, etc.)
|
||||||
|
* Limit number of matches using `-N` option
|
||||||
|
* Option to protext transfers using private trackers from removal
|
||||||
|
* `t/help modify` for more info
|
||||||
|
|
||||||
|
### <a name="status">Check transfer status</a>
|
||||||
|
|
||||||
|
#### List one or more transfers with pertinent information
|
||||||
|
* `t/list`
|
||||||
|
* Specify transfers using sequence of ids<sup>[1](#idseq)</sup>, searching transfer names with regular expressions, or filtering by transfer properties (e.g. downloading, finished, etc.)
|
||||||
|
* Click 🔄 reaction to update output in realtime (in-channel only, not through DM)
|
||||||
|
* `t/help list` for more info
|
||||||
|
|
||||||
|
#### Print transfer summary
|
||||||
|
* `t/summary`
|
||||||
|
* Includes overall transfer rates, amount of data transferred (based on current set of transfers), transfer counts for different states (*e.g.* downloading, finished, etc.), and list of highest seed-ratio transfers (configurable)
|
||||||
|
* Click 🔄 reaction to update output in realtime (in-channel only, not through DM)
|
||||||
|
* Use other reactions to print filtered lists of transfers
|
||||||
|
* Print symbol `t/legend`
|
||||||
|
|
||||||
|
### <a name="notifications">Notifications for transfer state changes</a>
|
||||||
|
* Print notifications regarding transfer state changes in a text channel and through DMs
|
||||||
|
* Users are notified through DM about transfers they added
|
||||||
|
* Can opt in to DM notifications for other transfers by reacting with 🔔 to `t/list` message or in-channel notifications
|
||||||
|
* Opt out of DM notifications
|
||||||
|
* Opt out of individual DM notifications by reacting with 🔕 to `t/list` message or either in-channel or DM notifications
|
||||||
|
* Users opt out of all DM notifications using `t/notifications` through DM
|
||||||
|
* Owners can disable in-channel notifications using `t/notifications` in a listened channel
|
||||||
|
* Customize what state changes are included in the configuration
|
||||||
|
|
||||||
|
### <a name="pretty">Pretty output and highly configurable</a>
|
||||||
|
* Output automatically formatted for display on desktop or mobile discord clients (in-channel only, not through DM)
|
||||||
|
* Use of Embeds and unicode symbols where appropriate.
|
||||||
|
* Remove reactions from messages when no longer necessary for prettier scroll-back (in-channel only, not through DM)
|
||||||
|
* Configure user access using whitelist, blacklist and owner list
|
||||||
|
* Protect transfers using private trackers from removal
|
||||||
|
* Set realtime update and notification frequency
|
||||||
|
* Set realtime update timeout
|
||||||
|
* Listen for commands on all or only specified text channels
|
||||||
|
* Toggle in-channel or DM interaction separately, or the notification system entirely
|
||||||
|
* Set which transfer state changes are reported in notifications with separate settings for in-channel notifications, notifications sent to users that added transfers, and users that opt into DM notifications
|
||||||
|
* Toggle dry-run to control whether transfer modifications are actually carried out
|
||||||
|
|
||||||
|
### <a name="help">`t/help` for usage information</a>
|
||||||
|
* Print help for some commands using `t/help COMMAND_NAME` (*e.g.* `t/help list`)
|
||||||
|
|
||||||
|
### <a name="setup">Easy setup</a>
|
||||||
|
0. Setup bot on Discord developer portal
|
||||||
|
1. Clone repository `git clone https://github.com/twilsonco/TransmissionBot`
|
||||||
|
2. Configure `CONFIG` in `bot.py` to your liking
|
||||||
|
3. Run bot `python3 /path/to/bot.py`
|
||||||
|
* Bot will create `config.json`, after which you can remove or comment the definition of `CONFIG` in `bot.py` to make future updates easier
|
||||||
|
|
||||||
## To-do (~~implemented~~)
|
## To-do (~~implemented~~)
|
||||||
* Command to print detailed information for transfer(s)
|
* Command to print detailed information for transfer(s)
|
||||||
* Complete connection information
|
* Complete connection information
|
||||||
* Lists of transfer files, peers, trackers
|
* Lists of transfer files, peers, trackers
|
||||||
* ~~Add ability to verify transfer data~~
|
* ~~Add ability to verify transfer data~~
|
||||||
* When searching by name, update regex to include potential accented characters, eg `pokemon` would also match `pokémon`
|
* When searching by name, update regex to include potential accented characters, eg `pokemon` would also match `pokémon`
|
||||||
* Specify number of transfers to show when using `list` or `modify`
|
* ~~Specify number of transfers to show when using `list` or `modify`~~
|
||||||
* Combine the `list` and `modify` commands in the code, with a simple parameter to specify whether or not modification is allowed
|
* Combine the `list` and `modify` commands in the code, with a simple parameter to specify whether or not modification is allowed
|
||||||
* Currently, searching by name is done with case-insensitive regex. Update to that if a user includes upper case characters, case-sensitive search is performed
|
* Currently, searching by name is done with case-insensitive regex. Update to that if a user includes upper case characters, case-sensitive search is performed
|
||||||
* ~~Add recurring list option. Ie every five seconds replace `list` output with fresh output. This would be done by reacting to a "repeat" emoji to initiate repetition of the current search~~ (also did this for `summary`)
|
* ~~Add recurring list option. Ie every five seconds replace `list` output with fresh output. This would be done by reacting to a "repeat" emoji to initiate repetition of the current search~~ (also did this for `summary`)
|
||||||
* ~~Add additional filtering options: stalled, error, non-zero up/down rate.~~
|
* ~~Add additional filtering options: stalled, error, non-zero up/down rate.
|
||||||
* Add shorthand for filtering options (downloading/seeding/stalled/paused become d/s/i/p etc., that's i for "idle" since s is for seeding)
|
* Add shorthand for filtering options (downloading/seeding/stalled/paused become d/s/i/p etc., that's i for "idle" since s is for seeding)
|
||||||
* Add a `top` command that'sessentially a combination of the up/down rate filter and the repeating output features
|
* Add a `top` command that'sessentially a combination of the up/down rate filter and the repeating output features
|
||||||
* Ability to refine `list` output with filter or sort using reactions; ie click a filter or sort reaction which triggers another message with additional reactions to click to apply the extra filters or sort
|
* Ability to refine `list` output with filter or sort using reactions; ie click a filter or sort reaction which triggers another message with additional reactions to click to apply the extra filters or sort
|
||||||
* Ability to specify which files to include in download (we'll see about that; sounds clunky but maybe using file ID specifiers *e.g.* `1,3-5,8`)
|
* Ability to specify which files to include in download (we'll see about that; sounds clunky but maybe using file ID specifiers *e.g.* `1,3-5,8`)
|
||||||
* Notifications for when a transfer finishes/stalls/errors
|
* ~~Notifications for when a transfer finishes/stalls/errors
|
||||||
* via DM to the user that added the transfer
|
* ~~via DM to the user that added the transfer
|
||||||
* or by posting to the channel from which a transfer was added
|
* ~~or by posting to the channel from which a transfer was added
|
||||||
* Let other users opt to receive notifications for transfers they *didn't* add
|
* ~~Let other users opt to receive notifications for transfers they *didn't* add
|
||||||
* Post-download file management (*never going to happen...*)
|
* Post-download file management (*never going to happen...*)
|
||||||
* Compress files (encrypted) and make available for direct download from server via download link posted to channel or DM'd to user
|
* Compress files (encrypted) and make available for direct download from server via download link posted to channel or DM'd to user
|
||||||
* Use JSON config file so that updating is non-destructive
|
* ~~Use JSON config file so that updating is non-destructive
|
||||||
* Add `set` command so owners can edit configuration through Discord
|
* Add `set` command so owners can edit configuration through Discord
|
||||||
* ~~Add a toggle for minimalised output for better display on mobile devices. Toggle using `t/compact` as standalone command or by clicking a 📱 reaction. Store as global variable so all commands output can be affected.~~
|
* ~~Add a toggle for minimalised output for better display on mobile devices. Toggle using `t/compact` as standalone command or by clicking a 📱 reaction. Store as global variable so all commands output can be affected.~~
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user