На платформе Bothost боты собираются в Docker-контейнерах. Зависимости устанавливаются автоматически при сборке образа, если в репозитории есть стандартные файлы зависимостей. В этом руководстве описано, как добавить библиотеки для проектов на Python, Java и Go.
Python
Файлы зависимостей
Платформа распознаёт следующие файлы:
Файл
Описание
requirements.txt
Список пакетов pip (основной способ)
pyproject.toml
Современный формат (PEP 518), поддерживается для определения версии Python и зависимостей
requirements.txt
Добавьте в корень репозитория файл requirements.txt. При сборке выполняется:
pip install --no-cache-dir -r requirements.txt
Пример requirements.txt:
aiogram>=3.0.0
aiohttp
python-dotenv
С указанием версий (рекомендуется для стабильной сборки):
Для проектов с pyproject.toml укажите зависимости в секции [project]:
[project]
name = "my-bot"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
"aiogram>=3.0.0",
"aiohttp",
"python-dotenv",
]
Платформа может определять версию Python из requires-python и устанавливать пакеты через pip install . или pip install -e . при наличии соответствующего Dockerfile.
Рекомендации для Python
Храните requirements.txt или pyproject.toml в корне репозитория.
Фиксируйте версии в продакшене (package==1.2.3), чтобы сборки были воспроизводимы.
Не коммитьте виртуальное окружение (папки venv, .venv) в Git.
Java
Для Java-ботов зависимости задаются через Maven (pom.xml) или Gradle (build.gradle / build.gradle.kts). Сборка выполняется внутри Docker-образа.
Maven (pom.xml)
Добавьте в корень проекта файл pom.xml с зависимостями в :
Исполняемый JAR будет в target/*.jar. В Dockerfile команда запуска указывает на этот JAR.
Gradle (build.gradle)
Пример build.gradle (Kotlin DSL — build.gradle.kts):
plugins {
id 'java'
id 'application'
}
group = 'ru.example'
version = '1.0-SNAPSHOT'
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.telegram:telegrambots:6.8.0'
}
application {
mainClass = 'ru.example.BotMain'
}
jar {
manifest {
attributes 'Main-Class': 'ru.example.BotMain'
}
}
При сборке:
./gradlew build
# или для fat JAR:
./gradlew shadowJar # при использовании плагина shadow
Рекомендации для Java
Держите pom.xml или build.gradle в корне репозитория.
Указывайте конкретные версии зависимостей для предсказуемых сборок.
В Dockerfile используйте образ с Maven или Gradle, либо многоэтапную сборку (build stage → runtime stage с JRE).
Go
Зависимости в Go описываются в go.mod (и при необходимости в go.sum). Модуль должен находиться в корне репозитория.
go.mod
Инициализация модуля (если ещё нет go.mod):
go mod init github.com/username/my-bot
Пример go.mod:
module github.com/username/telegram-bot
go 1.21
require (
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1
)
После добавления импортов в код выполните:
go mod tidy
Это обновит go.mod и создаст/обновит go.sum.
Сборка в Docker
Типичные шаги в Dockerfile для Go:
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o /bot .
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /app
COPY --from=builder /bot .
CMD ["./bot"]
Платформа может определять версию Go по директиве go в go.mod и использовать её при сборке образа.
Рекомендации для Go
Храните go.mod и go.sum в корне репозитория и коммитьте оба файла.
Используйте go mod tidy перед коммитом, чтобы зависимости были согласованы.
Для минимального образа используйте многоэтапную сборку и статическую линковку (CGO_ENABLED=0).
Краткая сводка
Язык
Файл зависимостей
Команда установки / сборки
Python
requirements.txt
pip install -r requirements.txt
Python
pyproject.toml
Зависит от Dockerfile (pip/poetry)
Java
pom.xml (Maven)
mvn clean package
Java
build.gradle (Gradle)
./gradlew build
Go
go.mod + go.sum
go mod download && go build
Убедитесь, что выбранный файл зависимостей лежит в корне репозитория и закоммичен в Git — тогда при деплое на Bothost зависимости будут установлены или собраны в рамках сборки Docker-образа.