a telegram bot for downloading media from various platforms.
this project draws significant inspiration from yt-dlp.
- official instance: @govd_bot
- support group: govdsupport
- ffmpeg >= 7.x
- with shared libraries
- libheif >= 1.19.7
- pkg-config
- sql database
- mysql or mariadb
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
.env
file to set the database properties.
for enhanced security, it is recommended to change theDB_PASSWORD
property in the.env
file. -
make sure your database is up and running.
-
build and run the bot:
sh build.sh && ./govd
-
create or update the
.env
file to ensure the database properties match the environment variables defined for the mariadb service in thedocker-compose.yml
file.
for enhanced security, it is recommended to change theMARIADB_PASSWORD
property indocker-compose.yaml
and ensureDB_PASSWORD
in.env
matches it.the following line in the
.env
file must be set as:DB_HOST=db
-
build the image using the dockerfile:
docker build -t govd-bot .
-
run the compose to start all services:
docker compose up -d
Tip
after updating your .env
file, rebuilding the image is not necessary. simply restart the containers with the docker compose restart
command to apply the changes.
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 |
DOWNLOADS_DIR | directory for downloaded files | downloads |
HTTP_PROXY (?) | http proxy (optional) | none (disabled) |
HTTPS_PROXY (?) | https proxy (optional) | none (disabled) |
NO_PROXY (?) | no proxy domains (optional) | none (disabled) |
REPO_URL | project reposito 850E ry url | https://github.com/govdbot/govd |
PROFILER_PORT | port for profiler http server (pprof) | 0 (disabled) |
LOG_LEVEL | log level (debug, info, warn, error) | info |
LOG_FILE | whether to enable file logging | false |
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.
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_PROXY
andHTTPS_PROXY
environment 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.yaml
file (learn more).
Tip
by settings NO_PROXY
environment variable, you can specify domains that should not be proxied.
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.
- add tests
- add support for telegram webhooks
- switch to pgsql (maybe)
- better api
- better docs