Govd
a telegram bot for downloading media from various platforms.
this project draws significant inspiration from yt-dlp.
- official instance: @govd_bot
- support group: govdsupport
dependencies
- ffmpeg >= 7.x
- with shared libraries
- libheif >= 1.19.7
- pkg-config
- sql database
- mysql or mariadb
installation
build
Note
there’s no official support for windows yet. if you want to run the bot on it, please follow docker installation.
- clone the repository:
git clone https://github.com/govdbot/govd.git && cd govd
- edit the
.envfile to set the database properties.
for enhanced security, it is recommended to change theDB_PASSWORDproperty in the.envfile. - make sure your database is up and running.
- build and run the bot:
sh build.sh && ./govd
docker (recommended)
- build the image using the dockerfile:
docker build -t govd-bot .
- update the
.envfile to ensure the database properties match the environment variables defined for the mariadb service in thedocker-compose.ymlfile.
for enhanced security, it is recommended to change theMARIADB_PASSWORDproperty indocker-compose.yamland ensureDB_PASSWORDin.envmatches it.the following line in the.envfile must be set as:
DB_HOST=db
- run the compose to start all services:
docker compose up -d
configuration
you can configure the bot using the .env file. here are the available options:
| variable | description | default |
|---|---|---|
| DB_HOST | database host | localhost |
| DB_PORT | database port | 3306 |
| DB_NAME | database name | govd |
| DB_USER | database user | govd |
| DB_PASSWORD | database password | password |
| BOT_API_URL | telegram bot api url | https://api.telegram.org |
| BOT_TOKEN | telegram bot token | 12345678:ABC-DEF1234ghIkl-zyx57W2P0s |
| CONCURRENT_UPDATES | max concurrent updates handled | 50 |
| LOG_DISPATCHER_ERRORS | log dispatcher errors | 0 |
| DOWNLOADS_DIR | directory for downloaded files | downloads |
| HTTP_PROXY (?) | http proxy (optional) | |
| HTTPS_PROXY (?) | https proxy (optional) | |
| NO_PROXY (?) | no proxy domains (optional) | |
| REPO_URL | project repository url | https://github.com/govdbot/govd |
| PROFILER_PORT | port for profiler http server (pprof) | 0 (disabled) |
you can configure specific extractors options with ext-cfg.yaml file (learn more).
Important
to avoid limits on files, you should host your own telegram botapi and set BOT_API_URL variable according. public bot instance is currently running under a botapi fork, tdlight-telegram-bot-api, but you can use the official botapi client too.
proxying
there are two types of proxying available:
- http proxy: this is a standard http proxy that can be used to route requests through a proxy server. you can set the
HTTP_PROXYandHTTPS_PROXYenvironment variables to use this feature. (SOCKS5 is supported too) - edge proxy: this is a custom proxy that is used to route requests through a specific url. currenrly, you can only set this proxy with
ext-cfg.yamlfile (learn more).
Tip
by settings NO_PROXY environment variable, you can specify domains that should not be proxied.
authentication
some extractors require cookies to access the content. please refer to this page for more information on how to set up authentication for each extractor.
todo
- add tests
- add support for telegram webhooks
- switch to pgsql (maybe)
- better api
- better docs

!