A daemon, run in Docker, that keeps Jellyfin accounts in step with a private Telegram channel: leave the channel and your account is disabled, come back and it is enabled again. You link people to accounts from a private chat with a Telegram bot, which also reports every change.
- Disables a Jellyfin account once its person has been out of the channel for
GRACE_HOURS(72 by default), and enables it again when they rejoin. - Checks each linked person with the Bot API
getChatMember, so it works on channels past Telegram's 200-member listing cap. - Never acts on an unanswered lookup. It only undoes its own changes and never touches administrators or
EXEMPT_USERS. - A second rule disables accounts nobody has used for
INACTIVE_DAYS(365 by default). - Links several Telegram accounts to one Jellyfin user. Present if any of them is in the channel.
- Managed from your private chat with the bot (
/link,/unknown,/status,/inactive,/dryrun), which also reports every change. - Starts in dry-run mode. State, the grace clock and an audit log live in one SQLite file.
Run this in an empty folder, with Telegram API credentials, a bot that is an administrator of the channel, a Jellyfin API key and the channel id at hand (Getting started says where each comes from).
curl -O https://raw.githubusercontent.com/GeiserX/jellyfin-telegram-channel-sync/main/docker-compose.yml
docker compose run --rm jellytelegram-sync python -m app.login
docker compose up -dFill in the environment: block of docker-compose.yml before the second command. Then send /start to your bot, link people with /link, and send /dryrun off once /links looks right.
- Getting started: prerequisites, the five setup steps, upgrading from 0.x
- Configuration: environment variables
- Usage: the bot commands
- How it works: the decision rules, the inactivity rule, why two Telegram sessions, what is stored
- Troubleshooting
- Development
Part of the same family: quality-gate, smart-covers, whisper-subs, quality-gate-encoder, paperless-telegram-bot, telegram-slskd-local-bot. What each one does is in Related projects.