All checks were successful
Build and deploy / build-and-push-image (push) Successful in 8m37s
|
||
---|---|---|
.forgejo/workflows | ||
bot | ||
config | ||
cookies | ||
database | ||
enums | ||
ext | ||
models | ||
plugins | ||
util | ||
.env.example | ||
.gitignore | ||
.golangci.yml | ||
AUTHENTICATION.md | ||
build.sh | ||
CONFIGURATION.md | ||
docker-compose.yaml | ||
Dockerfile | ||
EDGEPROXY.md | ||
ext-cfg-example.yaml | ||
go.mod | ||
go.sum | ||
LICENSE | ||
main.go | ||
README.md |
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
.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
docker (recommended)
-
build the image using the dockerfile:
docker build -t govd-bot .
-
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
-
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_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.
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