usar servidor de bot custom
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed

This commit is contained in:
Cat /dev/Nulo 2023-08-13 16:12:28 -03:00
parent a3ec00fdda
commit 92191d0b74
5 changed files with 99 additions and 16 deletions

View file

@ -13,3 +13,17 @@ pipeline:
- echo $REGISTRY_SECRET | apko login --username Nulo --password-stdin gitea.nulo.in
- apko publish --debug --arch x86_64 --repository-append "$(pwd)/packages" --keyring-append melange.rsa.pub apko.yaml gitea.nulo.in/nulo/dlbot4:latest
secrets: [REGISTRY_SECRET]
telegram-bot-api:
image: docker.io/woodpeckerci/plugin-docker-buildx
settings:
repo: gitea.nulo.in/Nulo/dlbot4/telegram-bot-api
context: ./telegram-bot-api-container
registry: https://gitea.nulo.in
username: Nulo
password:
from_secret: registry_secret
secrets: [REGISTRY_SECRET]
when:
branch: "antifascista"
event: "push"

View file

@ -11,20 +11,12 @@ tasks:
- ssh -p993 root@nulo.in sv stop dlbot
- scp -P993 dlbot dlbot@nulo.in:/home/dlbot/bin/
- ssh -p993 root@nulo.in sv start dlbot
melange:
cmds:
- podman run --privileged --rm -it
-v "$PWD":/work:Z
-v "$PWD"/.melange-cache:/work/melange-cache:Z
cgr.dev/chainguard/melange build
packaging/melange.yml
--arch x86_64 --signing-key packaging/melange.rsa
apko:
ko:
cmds:
- podman run --rm -it
-v "$PWD":/work:Z
cgr.dev/chainguard/apko:latest publish
--debug --arch x86_64
--repository-append "/work/packages" --keyring-append packaging/melange.rsa.pub
packaging/apko.yaml
gitea.nulo.in/nulo/dlbot:latest
-v ~/.docker/:/docker-config:Z,ro
-v $PWD:/work:Z
--workdir=/work
-e KO_DOCKER_REPO=gitea.nulo.in/nulo/dlbot4
-e DOCKER_CONFIG=/docker-config
cgr.dev/chainguard/ko build --bare .

17
main.go
View file

@ -142,7 +142,15 @@ func main() {
debug = true
}
bot, err := tgbotapi.NewBotAPI(token)
apiEndpoint := os.Getenv("TELEGRAM_API_ENDPOINT")
var bot *tgbotapi.BotAPI
var err error
if apiEndpoint == "" {
bot, err = tgbotapi.NewBotAPI(token)
} else {
log.Printf("Setting endpoint to %s", apiEndpoint)
bot, err = tgbotapi.NewBotAPIWithAPIEndpoint(token, apiEndpoint)
}
if err != nil {
log.Panic(err)
}
@ -151,6 +159,13 @@ func main() {
log.Printf("Authorized on account %s", bot.Self.UserName)
if len(os.Args) > 1 && os.Args[1] == "logout" {
logout := tgbotapi.LogOutConfig{}
bot.Send(logout)
log.Println("Logged out.")
return
}
u := tgbotapi.NewUpdate(0)
u.Timeout = 60

View file

@ -7,3 +7,32 @@ Un bot para Telegram que permite descargar videos de distintos lugares.
## TikTok
Previamente este bot descargaba directo de TikTok a través de distintas APIs internas, usando programas externos como yt-dlp. Lamentablemente TikTok seguía parcheando estas APIs internas, que hacía mantener un sideproject molesto. Por suerte, encontré [TikMate](https://tikmate.app) que es un sitio que los descarga por vos. Asumo que tiene desarrollador(es?) que mantienen el sitio. Así, uso su API interna (muy simple) y listo.
## Correr tu propio servidor de bot
El servidor de bots de Telegram por defecto (`https://api.telegram.org`) tiene un limite de subida de 50MB, y tenés que usar tu [propio servidor](https://github.com/tdlib/telegram-bot-api) para poder subir hasta 2000MB.
En ./telegram-bot-api-container hay un Containerfile para hostear este servidor.
Cuando ya tengas tu propio servidor, empezá deslogeandote del oficial (no vas a poder volver a logearte por 10 minutos):
```
dlbot logout
```
Después, tenés que reiniciar dlbot con el endpoint especificado con este formato: `$endpoint/bot%s/%s"`. Un ejemplo en docker-compose:
```
dlbot:
image: gitea.nulo.in/nulo/dlbot4
environment:
TELEGRAM_TOKEN: "${DLBOT_TELEGRAM_TOKEN}"
TELEGRAM_API_ENDPOINT: http://dlbot-telegram-bot-api:8081/bot%s/%s
links:
- dlbot-telegram-bot-api
dlbot-telegram-bot-api:
image: gitea.nulo.in/nulo/dlbot4/telegram-bot-api
entrypoint: ["telegram-bot-api", "--api-id=$DLBOT_TELEGRAM_API_ID", "--api-hash=$DLBOT_TELEGRAM_API_HASH", "--local"]
```
Podés ver como está hecho en producción [en la repo de infra](https://gitea.nulo.in/Nulo/infra/commit/1067c632d203f7b7304fabd7bc4e818eb9d90386).

View file

@ -0,0 +1,33 @@
FROM docker.io/alpine:3.18 AS build
RUN apk add --no-cache \
make cmake \
g++ \
gperf \
linux-headers openssl-dev \
zlib-dev \
git
RUN git clone --recursive https://github.com/tdlib/telegram-bot-api.git && \
cd telegram-bot-api/ && \
mkdir build && \
cd build
WORKDIR telegram-bot-api/build
RUN cmake .. -DCMAKE_BUILD_TYPE=Release \
&& cmake --build . --target install
FROM docker.io/alpine:3.18
ENV TZ=America/Argentina/Buenos_Aires
RUN apk add --no-cache \
openssl \
zlib \
libstdc++
COPY --from=build /usr/local/bin/telegram-bot-api /usr/local/bin/telegram-bot-api
ENTRYPOINT telegram-bot-api
EXPOSE 8081