Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f11e1997fd | |||
| 54099b85c1 | |||
| e4757805ae | |||
| 97dc1dcb98 | |||
| 61dc5db6d0 | |||
|
|
fdc6df373d | ||
| 42b10a813f | |||
| bae9a5b967 | |||
| b1d050cb3c | |||
| ce076824a2 | |||
| 8fe3d2e5d1 | |||
| e0bbbd02f5 | |||
| d80746cd61 | |||
| f6197c144a | |||
| 2481ba778b | |||
| c5d619d450 | |||
| 547ccbbb0a | |||
| f862f46e16 | |||
| c4a1ccf770 | |||
| a050becc14 | |||
| e5e22b584a | |||
| 1f2c251e80 | |||
| a0b4a2087a | |||
| d62f6f6470 | |||
| 3b2328423b | |||
| 77f1b539e6 | |||
| c32875223c | |||
| 175d30abc9 | |||
| 642cf7341d | |||
| 1f97965599 | |||
| 2624f1ec06 | |||
| bfb16c503a |
26
.env
26
.env
@@ -1,26 +0,0 @@
|
|||||||
# Discord
|
|
||||||
DISCORD_TOKEN=your_discord_bot_token
|
|
||||||
PREFIX=!
|
|
||||||
GUILD_ID=123456789012345678
|
|
||||||
ADMIN_ROLE_IDS=111111111111111111,222222222222222222
|
|
||||||
REQUIRED_ROLE_IDS=333333333333333333,444444444444444444
|
|
||||||
|
|
||||||
# Jellyfin
|
|
||||||
JELLYFIN_URL=http://127.0.0.1:8096
|
|
||||||
JELLYFIN_API_KEY=your_jellyfin_api_key
|
|
||||||
ENABLE_TRIAL_ACCOUNTS=false
|
|
||||||
|
|
||||||
# Jellyseerr
|
|
||||||
JELLYSEERR_ENABLED=false
|
|
||||||
JELLYSEERR_URL=http://localhost:5055
|
|
||||||
JELLYSEERR_API_KEY=your_api_key_here
|
|
||||||
|
|
||||||
# MySQL
|
|
||||||
DB_HOST=localhost
|
|
||||||
DB_USER=root
|
|
||||||
DB_PASSWORD=password
|
|
||||||
DB_NAME=jellyfin_bot
|
|
||||||
|
|
||||||
# Logs
|
|
||||||
SYNC_LOG_CHANNEL_ID=555555555555555555
|
|
||||||
EVENT_LOGGING=false
|
|
||||||
68
.env.example
Normal file
68
.env.example
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
# Jellycord version 1.1.0
|
||||||
|
|
||||||
|
# |Discord|
|
||||||
|
DISCORD_TOKEN=your_discord_bot_token
|
||||||
|
PREFIX=!
|
||||||
|
GUILD_IDS=123456789012345678,123456789012345678
|
||||||
|
ADMIN_ROLE_IDS=111111111111111111,222222222222222222
|
||||||
|
REQUIRED_ROLE_IDS=333333333333333333,444444444444444444
|
||||||
|
|
||||||
|
# |Jellyfin|
|
||||||
|
JELLYFIN_URL=http://127.0.0.1:8096
|
||||||
|
JELLYFIN_API_KEY=your_jellyfin_api_key
|
||||||
|
ENABLE_TRIAL_ACCOUNTS=false
|
||||||
|
TRIAL_TIME=24 # In hours
|
||||||
|
|
||||||
|
# |Jellyseerr|
|
||||||
|
JELLYSEERR_ENABLED=false
|
||||||
|
JELLYSEERR_URL=http://localhost:5055
|
||||||
|
JELLYSEERR_API_KEY=your_api_key_here
|
||||||
|
|
||||||
|
# |JFA-Go|
|
||||||
|
ENABLE_JFA=false
|
||||||
|
JFA_URL=http://localhost:8056
|
||||||
|
JFA_USERNAME=yourusername
|
||||||
|
JFA_PASSWORD=yourpassword
|
||||||
|
JFA_API_KEY=your_api_key_here
|
||||||
|
JFA_TOKEN=
|
||||||
|
|
||||||
|
# |Servarr|
|
||||||
|
RADARR_URL=http://your-radarr-ip:7878
|
||||||
|
RADARR_API_KEY=yourradarrapikey
|
||||||
|
ENABLE_RADARR=false
|
||||||
|
|
||||||
|
SONARR_URL=http://your-sonarr-ip:8989
|
||||||
|
SONARR_API_KEY=yoursonarrapikey
|
||||||
|
ENABLE_SONARR=false
|
||||||
|
|
||||||
|
# |QBittorrent|
|
||||||
|
ENABLE_QBITTORRENT=false
|
||||||
|
QBIT_HOST=http://localhost:8080
|
||||||
|
QBIT_USERNAME=your_username
|
||||||
|
QBIT_PASSWORD=your_password
|
||||||
|
|
||||||
|
# |Proxmox|
|
||||||
|
ENABLE_PROXMOX=false
|
||||||
|
PROXMOX_HOST=https://your-proxmox-server:8006
|
||||||
|
PROXMOX_TOKEN_NAME=root@pam!yourtokenname
|
||||||
|
PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
||||||
|
PROXMOX_VERIFY_SSL=false
|
||||||
|
PROXMOX_NODE=pve1
|
||||||
|
PROXMOX_VM_ID=
|
||||||
|
# Proxmox type can be "qemu" for VM, "lxc" for container
|
||||||
|
PROXMOX_TYPE=
|
||||||
|
|
||||||
|
# |MySQL|
|
||||||
|
DB_HOST=localhost
|
||||||
|
DB_USER=root
|
||||||
|
DB_PASSWORD=password
|
||||||
|
DB_NAME=jellyfin_bot
|
||||||
|
|
||||||
|
# |General Settings|
|
||||||
|
TIMEZONE=America/Chicago
|
||||||
|
# Tracking only reports limited information about your instance for development reasons. (Tracking enabled Instance & Enabled Features)
|
||||||
|
TRACKING_ENABLED=true
|
||||||
|
|
||||||
|
# |Logs|
|
||||||
|
SYNC_LOG_CHANNEL_ID=555555555555555555
|
||||||
|
EVENT_LOGGING=false
|
||||||
45
CHANGELOG.md
45
CHANGELOG.md
@@ -1,3 +1,48 @@
|
|||||||
|
# 1.1.0
|
||||||
|
|
||||||
|
- The bot now sends limited info stats to a public frontend for development insight. (Reports enabled features and bot instance only | Jellyseerr, Proxmox, JFA, qBittorrent)
|
||||||
|
- Radarr & Sonarr Support
|
||||||
|
|
||||||
|
# 1.0.9
|
||||||
|
|
||||||
|
- You can now configure trial account duration
|
||||||
|
- Reformatted link command
|
||||||
|
- Added Updating via command
|
||||||
|
- Added Backup command
|
||||||
|
- Added restore command
|
||||||
|
|
||||||
|
# 1.0.8
|
||||||
|
|
||||||
|
- Fixed update message
|
||||||
|
- Added changelog command
|
||||||
|
- Fixed schedule loop for Jfa being enabled when JFA support is disabled
|
||||||
|
- Added metrics tracking for a Jellyfin container/vm in proxmox
|
||||||
|
|
||||||
|
# 1.0.7
|
||||||
|
|
||||||
|
- Fixed JFA-GO API keys expiring. The bot now schedules a key refresh
|
||||||
|
- Added Proxmox support for checking storage pool size
|
||||||
|
- !what2watch is now !movies2watch
|
||||||
|
- Added !shows2watch, now pulls 5 random shows
|
||||||
|
|
||||||
|
# 1.0.6
|
||||||
|
|
||||||
|
- Added Progress bar to Active Streams
|
||||||
|
- Added JFA-Go support for external invites
|
||||||
|
- Added qBittorrent Support
|
||||||
|
- Reformated Help Command
|
||||||
|
|
||||||
|
# 1.0.5
|
||||||
|
|
||||||
|
- Added Timezone support in .env
|
||||||
|
- Added the `what2watch` command. Lists 5 random movie suggestions from the Jellyfin Library
|
||||||
|
- Added `activestreams` command. Lists all active Jellyfin Streams
|
||||||
|
|
||||||
|
# 1.0.4
|
||||||
|
|
||||||
|
- Multi-Guild support (As long as a user has a required role or admin role in one server, they are able to use the bot and Jellyfin)
|
||||||
|
- Fixed link command instructions not updating based on Jellyseerr availability
|
||||||
|
|
||||||
# 1.0.3
|
# 1.0.3
|
||||||
|
|
||||||
- Fixed: `ValueError: too many values to unpack (expected 2)`
|
- Fixed: `ValueError: too many values to unpack (expected 2)`
|
||||||
|
|||||||
70
README.md
70
README.md
@@ -1,6 +1,13 @@
|
|||||||
# Jellycord
|
# Jellycord
|
||||||
|
|
||||||

|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
[](https://discord.gg/EdPJAhrDq8)
|
[](https://discord.gg/EdPJAhrDq8)
|
||||||

|

|
||||||
@@ -13,7 +20,24 @@ This is a very simple and lightweight Jellyfin Discord bot for managing users. I
|
|||||||
|
|
||||||
Fill out values in the .env and you're good to go!
|
Fill out values in the .env and you're good to go!
|
||||||
|
|
||||||
## Features
|
# 🛑 Disclaimer (Please Read) 🛑
|
||||||
|
|
||||||
|
This bot collects limited amounts of information, it is enabled by default and can be disabled in your environment file. Information Collected is limited to:
|
||||||
|
|
||||||
|
- Bot Instances
|
||||||
|
- Enabled Features
|
||||||
|
|
||||||
|
We do **not** and will **never** collect nor store:
|
||||||
|
|
||||||
|
- IP Address's.
|
||||||
|
- System Information.
|
||||||
|
- Information about Jellyfin or any related services.
|
||||||
|
|
||||||
|
## Why do we do this?
|
||||||
|
|
||||||
|
Adding these simply allows me to see what features users are interested in, allowing me to focus on improving/fixing highly used features.
|
||||||
|
|
||||||
|
# Features
|
||||||
|
|
||||||
- Automatic Account Cleanup
|
- Automatic Account Cleanup
|
||||||
- Creating Accounts
|
- Creating Accounts
|
||||||
@@ -24,7 +48,7 @@ Fill out values in the .env and you're good to go!
|
|||||||
- Change bot prefix live
|
- Change bot prefix live
|
||||||
- Checks for new releases
|
- Checks for new releases
|
||||||
|
|
||||||
## Command Overview
|
# Command Overview
|
||||||
|
|
||||||
**Pinging the bot will show you the necessary commands to create your account.**
|
**Pinging the bot will show you the necessary commands to create your account.**
|
||||||
|
|
||||||
@@ -44,22 +68,52 @@ Fill out values in the .env and you're good to go!
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
***User Commands***
|
***🎬 User Commands***
|
||||||
|
|
||||||
- `!createaccount` <username> <password> - Create your Jellyfin account
|
- `!createaccount` <username> <password> - Create your Jellyfin account
|
||||||
- `!recoveraccount` <username> <newpassword> - Reset your password
|
- `!recoveraccount` <username> <newpassword> - Reset your password
|
||||||
- `!deleteaccount` <username> - Delete your Jellyfin account
|
- `!deleteaccount` <username> - Delete your Jellyfin account
|
||||||
- `!trialaccount` <username> <password> - Create a 24-hour trial Jellyfin account. Only if ENABLE_TRIAL_ACCOUNTS=True
|
- `!trialaccount` <username> <password> - Create a 24-hour trial Jellyfin account. Only if ENABLE_TRIAL_ACCOUNTS=True
|
||||||
|
- `!movies2watch` - Lists 5 random movie suggestions from the Jellyfin Library
|
||||||
|
- `!shows2watch` - Lists 5 random show suggestions from the Jellyfin Library
|
||||||
|
- `!help` - Displays help command
|
||||||
|
|
||||||
***Admin Commands***
|
***🛠️ Admin Commands***
|
||||||
|
|
||||||
|
- `!link` @user <jellyfin_username> - Manually link accounts
|
||||||
|
- `!unlink` @user - Manually unlink accounts
|
||||||
|
- `!validusers` - Show number of valid and invalid accounts
|
||||||
- `!cleanup` - Remove Jellyfin accounts from users without roles
|
- `!cleanup` - Remove Jellyfin accounts from users without roles
|
||||||
- `!lastcleanup` - See Last cleanup time, and time remaining before next cleanup
|
- `!lastcleanup` - See Last cleanup time, and time remaining before next cleanup
|
||||||
- `!searchaccount` <jellyfin_username> - Find linked Discord user
|
- `!searchaccount` <jellyfin_username> - Find linked Discord user
|
||||||
- `!searchdiscord` @user - Find linked Jellyfin account
|
- `!searchdiscord` @user - Find linked Jellyfin account
|
||||||
- `!scanlibraries` - Scan all Jellyfin libraries
|
- `!scanlibraries` - Scan all Jellyfin libraries
|
||||||
- `!link` <jellyfin_username> @user - Manually link accounts
|
- `!activestreams` - View all Active Jellyfin streams
|
||||||
- `!unlink` @user - Manually unlink accounts
|
|
||||||
|
***💾 qBittorrent Commands***
|
||||||
|
|
||||||
|
- `!qbview` - View current qBittorrent downloads
|
||||||
|
|
||||||
|
***🗳️ Proxmox Commands***
|
||||||
|
|
||||||
|
- `!storage` - Show available storage pools and free space
|
||||||
|
- `!metrics` - Show Jellyfin container metrics
|
||||||
|
|
||||||
|
***🔑 JFA Commands***
|
||||||
|
|
||||||
|
- `!createinvite` - Create a new JFA invite link
|
||||||
|
- `!listinvites` - List all active JFA invite links
|
||||||
|
- `!deleteinvite <code>` - Delete a specific JFA Invite
|
||||||
|
- `!refreshjfakey` - Refreshes the JFA API Key Forcefully
|
||||||
|
|
||||||
|
***⚙️ Admin Bot Commands***
|
||||||
|
|
||||||
***Admin Bot Commands***
|
|
||||||
- `!setprefix` - Change the bots command prefix
|
- `!setprefix` - Change the bots command prefix
|
||||||
- `!updates` - Manually check for bot updates
|
- `!stats` - View Local and Global Jellycord Stats
|
||||||
|
- `!update` - Download latest bot version
|
||||||
|
- `!backup` - Create a backup of the bot and configurations
|
||||||
|
- `!backups` - List backups of the bot
|
||||||
|
- `!restore` - Restore a backup of the bot
|
||||||
|
- `!version` - Manually check for bot updates
|
||||||
|
- `!changelog` - View changelog for current bot version
|
||||||
- `!logging` - Enable/Disable Console Event Logging
|
- `!logging` - Enable/Disable Console Event Logging
|
||||||
8
ROADMAP.md
Normal file
8
ROADMAP.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
- **Future Features**
|
||||||
|
|
||||||
|
- Servarr Support
|
||||||
|
- Make Jellyfin admins exempt from account cleanup
|
||||||
|
|
||||||
|
- **To Do**
|
||||||
|
|
||||||
|
- Music/Podcast Support (Listening in VC from Jellyfin Library)
|
||||||
@@ -2,3 +2,9 @@ discord.py==2.3.2
|
|||||||
requests==2.32.3
|
requests==2.32.3
|
||||||
mysql-connector-python==9.0.0
|
mysql-connector-python==9.0.0
|
||||||
python-dotenv==1.0.1
|
python-dotenv==1.0.1
|
||||||
|
pytz==2025.2
|
||||||
|
apscheduler==3.11.0
|
||||||
|
qbittorrent-api==2025.7.0
|
||||||
|
proxmoxer==2.2.0
|
||||||
|
pymysql==1.1.2
|
||||||
|
psutil==7.1.3
|
||||||
@@ -1 +1 @@
|
|||||||
{ "version": "1.0.3" }
|
{ "version": "1.0.9" }
|
||||||
@@ -1 +1 @@
|
|||||||
1.0.3
|
1.0.9
|
||||||
Reference in New Issue
Block a user