Skip to content

Commit 338f843

Browse files
soaskaboudyai
andauthored
Local telegram api (#6)
* Max file size is 500mb * Dockerfiles&compose are tested and updated * Only local telegram api for telegram-bot is supported * Build test added to actions * Less deps for job-manager * Typo fix --------- Co-authored-by: AleX <soaska@cornspace.su>
1 parent 9e9e7e1 commit 338f843

File tree

16 files changed

+569
-3312
lines changed

16 files changed

+569
-3312
lines changed

.github/workflows/docker-image.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: If it builds, it probably works.
2+
3+
on:
4+
push:
5+
pull_request:
6+
jobs:
7+
build-telegram-bot:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- uses: actions/checkout@v4
11+
- name: Build the telegram-bot Docker image
12+
run: docker build ./telegram-bot -t telegram-bot:$(date +%s)
13+
build-job-manager:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v4
17+
- name: Build the job-manager Docker image
18+
run: docker build ./job-manager -t job-manager:$(date +%s)
19+
build-pocketbase:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- uses: actions/checkout@v4
23+
- name: Build the pocketbase Docker image with migrations
24+
run: docker build ./pocketbase -t pocketbase:$(date +%s)

README.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Отдельно запускаются телеграм бот, который отвечает на запросы пользователя, работает с базой данных и
44
создает задачи, база данных pocketbase и обработчик задач, который может быть запущен в нескольких
55
экземплярах на разных устройствах для ускорения вычислений. В данном примере представлена обработка видео
6-
с помощью ffmpeg для создания кружочков в телеграме. При этом не требудется большая мощность, поэтому
6+
с помощью ffmpeg для создания кружочков в телеграме. При этом не требуется большая мощность, поэтому
77
возможость горизонтального масштабирования не играет роли. Играет роль улучшеная модель контроля задач,
88
отслеживания ошибок, которые сохраняются в базе данных с графическим интерфейсом. Задачи можно перезапускать,
99
и они не сбрасываются при перезапуске бота.
@@ -21,9 +21,7 @@ cp example.env .env
2121
vim .env
2222
```
2323

24-
Запустим pocketbase, удалим существующую коллекцию users, затем перейдем во вкладку
25-
settings / import collections. Далее в меню load from json выбираем [файл](https://github.com/soaska/faceswaper/blob/main/pocketbase/collections/PB%20Schema.json)
26-
`pocketbase/collections/PB Schema.json`
24+
Запустим pocketbase, перейдем по её [url](http://0.0.0.0:8080/_/), создадим пользователя.
2725
```shell
2826
podman compose up pocketbase
2927
```
@@ -34,9 +32,9 @@ podman compose up -d --build
3432
```
3533

3634
# Запуск
37-
Запустим pocketbase по [этой](https://pocketbase.io/docs/) инструкции.
38-
Зайдем во вкладку settings / import collections. Далее в меню load from json выбираем [файл](https://github.com/soaska/faceswaper/blob/main/pocketbase/collections/PB%20Schema.json)
39-
pocketbase/collections/PB Schema.json
35+
Запустим pocketbase по [этой](https://pocketbase.io/docs/) инструкции. Удалим collection `users`.
36+
Зайдем во вкладку *settings / import* collections. Далее в меню *load from json* выбираем [файл](https://github.com/soaska/faceswaper/blob/main/pocketbase/collections/PB%20Schema.json)
37+
`pocketbase/collections/PB Schema.json`
4038

4139
Скопируем код
4240
```shell

compose.yaml

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,63 @@
11
services:
2+
# own telegram api server
3+
# needed to download / upload large files
4+
# Container link: https://github.com/aiogram/telegram-bot-api
5+
# Info about limitations: https://core.telegram.org/bots/api#using-a-local-bot-api-server
6+
telegram-bot-api:
7+
image: aiogram/telegram-bot-api:latest
8+
hostname: tgapi
9+
environment:
10+
- TELEGRAM_LOCAL=1
11+
env_file:
12+
- .env
13+
volumes:
14+
- ./data/telegram-bot-api:/var/lib/telegram-bot-api
15+
ports:
16+
- "8081:8081"
17+
- "8082:8082" # statistics
18+
219
pocketbase:
20+
hostname: pocketbase
321
build:
422
context: ./pocketbase
523
dockerfile: Dockerfile
624
restart: unless-stopped
725
ports:
826
- 8080:8080
927
volumes:
10-
- ./pb_data:/pb/pb_data
28+
- ./data/pocketbase:/pb/pb_data
29+
healthcheck:
30+
test: ["CMD", "curl", "-f", "http://localhost:8080/api/health"]
31+
interval: 30s
32+
timeout: 10s
33+
retries: 5
1134

12-
telegram-bot:
35+
job-manager:
1336
build:
1437
context: ./job-manager
1538
dockerfile: Dockerfile
1639
environment:
1740
- DOCKER_BUILD=yas
1841
env_file:
1942
- .env
43+
volumes:
44+
- ./data/telegram-bot-api:/var/lib/telegram-bot-api
2045
restart: unless-stopped
2146
depends_on:
2247
- pocketbase
48+
- telegram-bot-api
2349

24-
job-manager:
50+
telegram-bot:
2551
build:
2652
context: ./telegram-bot
2753
dockerfile: Dockerfile
2854
environment:
2955
- DOCKER_BUILD=yas
3056
env_file:
3157
- .env
58+
volumes:
59+
- ./data/telegram-bot-api:/var/lib/telegram-bot-api
3260
restart: unless-stopped
3361
depends_on:
3462
- pocketbase
63+
- telegram-bot-api

example.env

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
# telegram
2-
TELEGRAM_API = https://api.telegram.org
2+
TELEGRAM_API = "http://tgapi:8081"
33
TELEGRAM_APITOKEN = 1294890:asdasfdewioru3o2ier
4-
BOT_DEBUG = false
4+
BOT_DEBUG = true
5+
6+
# for own api server
7+
# get from https://my.telegram.org/apps
8+
TELEGRAM_API_ID=3456789
9+
TELEGRAM_API_HASH=ydgwgyu779cdddw9c9qwd
10+
TELEGRAM_STAT=1
511

612
# pocketbase
7-
POCKETBASE_URL = http://0.0.0.0:8080
13+
POCKETBASE_URL = "http://0.0.0.0:8080"
814
POCKETBASE_LOGIN = admin@supermario.carts
915
POCKETBASE_PASSWORD = MAShsRoOm

0 commit comments

Comments
 (0)