Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

telegram-download-daemon-ng

License: GPL v3 Test codecov

PyPI downloads Docker pulls

Ko-fi Buy me a coffee

A Telegram Daemon (not a bot) for file downloading automation for channels of which you have admin privileges.

Based on the original work of @alfem: https://github.com/alfem/telegram-download-daemon

If you have got an Internet connected computer or NAS and you want to automate file downloading from Telegram channels, this daemon is for you.

Telegram bots are limited to 20Mb file size downloads. So I wrote this agent or daemon to allow bigger downloads (limited to 2GB by Telegram APIs).

Installation

You need Python 3.9 or above

Install dependencies by running this command:

pip install telegram-download-daemon-ng

Obtain your own api id: https://core.telegram.org/api/obtaining_api_id

Usage

You need to configure these values:

Environment Variable Command Line argument Description Default Value
TELEGRAM_DAEMON_API_ID --api-id api_id from https://core.telegram.org/api/obtaining_api_id
TELEGRAM_DAEMON_API_HASH --api-hash api_hash from https://core.telegram.org/api/obtaining_api_id
TELEGRAM_DAEMON_CHANNEL --channel Channel id to download from it (Please, check Issue 45, Issue 48 and Issue 73)
TELEGRAM_DAEMON_BOT --bot Bot identifier to use. If not present, it will be requested (or the phone number) on first start
TELEGRAM_DAEMON_SESSION_PATH Path with session files
TELEGRAM_DAEMON_DEST --dest Destination path for downloaded files /telegram-downloads
TELEGRAM_DAEMON_TEMP --temp Destination path for temporary (download in progress) files use --dest
TELEGRAM_DAEMON_DUPLICATES --duplicates What to do with duplicated files: ignore, overwrite or rename them rename

You can define them as Environment Variables, or put them as a command line arguments, for example:

python3 telegram_download_daemon.py --api-id <your-id> --api-hash <your-hash> --channel <channel-number>

Finally, resend any file link to the channel to start the downloading. This daemon can manage many downloads simultaneously.

You can also 'talk' to this daemon using your Telegram client:

  • Say "list" and get a list of available files in the destination path.
  • Say "status" to the daemon to check the current status.
  • Say "clean" to remove stale (*.tdd) files from temporary directory.

Docker/Podman

If you are using Podman instead of Docker, just replace the docker word in the following commands by podman.

On a terminal run:

docker pull nyaran/telegram-download-daemon-ng

Then run it.

Replace values for TELEGRAM_DAEMON_API_ID, TELEGRAM_DAEMON_API_HASH and TELEGRAM_DAEMON_CHANNEL (see the table above), and set the paths for the volumes.

docker run \
 --rm \
 -e TELEGRAM_DAEMON_API_ID="YOUR_API_ID_HERE" \
 -e TELEGRAM_DAEMON_API_HASH="YOUR_API_HASH_HERE" \
 -e TELEGRAM_DAEMON_CHANNEL="YOUR_CHANNEL_ID_HERE" \
 -v "DOWNLOADS_VOLUME_PATH_HERE":/downloads \
 -v "SESSION_VOLUME_PATH_HERE":/session \
 -v "TEMP_VOLUME_PATH_HERE":/temp \
 --name telegram-download-daemon-ng \
 nyaran/telegram-download-daemon-ng

Note. The first time, you need to generate your session, to do that, and if you are not providing your bot ID, run the image in the interactive way, using -it (is important to use the same parameters)

docker run -it \
 --rm \
 -e TELEGRAM_DAEMON_API_ID="YOUR_API_ID_HERE" \
 -e TELEGRAM_DAEMON_API_HASH="YOUR_API_HASH_HERE" \
 -e TELEGRAM_DAEMON_CHANNEL="YOUR_CHANNEL_ID_HERE" \
 -v "DOWNLOADS_VOLUME_PATH_HERE":/downloads \
 -v "SESSION_VOLUME_PATH_HERE":/session \
 -v "TEMP_VOLUME_PATH_HERE":/temp \
 --name telegram-download-daemon-ng \
 nyaran/telegram-download-daemon-ng

Or just provide the bot ID (Replace "YOUR_BOT_ID" with the identifier of your bot):

docker run -it \
 --rm \
 -e TELEGRAM_DAEMON_API_ID="YOUR_API_ID_HERE" \
 -e TELEGRAM_DAEMON_API_HASH="YOUR_API_HASH_HERE" \
 -e TELEGRAM_DAEMON_CHANNEL="YOUR_CHANNEL_ID_HERE" \
 -e TELEGRAM_DAEMON_BOT="YOUR_BOT_ID" \
 -v "DOWNLOADS_VOLUME_PATH_HERE":/downloads \
 -v "SESSION_VOLUME_PATH_HERE":/session \
 -v "TEMP_VOLUME_PATH_HERE":/temp \
 --name telegram-download-daemon-ng \
 nyaran/telegram-download-daemon-ng

Metadata

Release files for telegram-download-daemon-ng 1.0.0b9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for telegram-download-daemon-ng 1.0.0b9
File Interpreter ABI Platform
telegram_download_daemon_ng-1.0.0b9-py3-none-any.whl Python 3 none any Details

Release files / telegram_download_daemon_ng-1.0.0b9-py3-none-any.whl

Download URL telegram_download_daemon_ng-1.0.0b9-py3-none-any.whl
Size 11.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fe091a2c51f044c85f3620d05600015bb89b40e009a870f4e5f238d3194d7d50
BLAKE2b-256 checksum
How to use checksums
96c2c229908471327cc7eaad31749fd9e304d352ca7fe49f30400c315807d61b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.0b9 This release

1 release file

1.0.0b8

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page