Личный бот на Go. Следит за новыми релизами на LostFilm и Kinozal, отдаёт их RSS-лентами, публикует в Telegram-каналы и Mastodon, а также сохраняет сообщения из чатов Twitch.
- LostFilm — парсинг новых серий, скачивание торрентов, RSS-лента, публикация в Telegram.
- Kinozal — отслеживание релизов, RSS-лента, публикация в Telegram.
- Telegram-бот — команды:
/lf list(или/lostfilm list) — последние релизы LostFilm;/lf resend <id>— переотправить релиз в канал;/dd [дата]— сколько времени прошло с указанной даты.
- Twitch — сохранение сообщений из чатов выбранных каналов и цитат.
- Mastodon — кросспостинг обновлений.
- HTTP API на Gin со Swagger-документацией.
- Опциональные SOCKS5-прокси, кэш в Redis, логирование в Logz.io.
| Метод | Путь | Описание |
|---|---|---|
| GET | /lostfilm/rss |
RSS-лента LostFilm |
| GET | /kinozal/rss |
RSS-лента Kinozal |
| GET | /dl/:fileId |
Скачать сохранённый файл (торрент) |
| GET | /twitch/messages |
Сообщения из Twitch |
| GET | /twitch/tushqa |
Цитаты |
| GET | /proxy |
Проксирование запроса |
| GET | /swagger/index.html |
Swagger UI |
| GET | /dev/pprof |
pprof (только при DEBUG=true) |
Нужны Go 1.26+ и MongoDB.
go run ./cmd/appИли через Docker:
docker build -t go-bot .
docker run --env-file .env -p 8080:8080 go-botВсё настраивается переменными окружения (или соответствующими флагами — см. --help).
| Переменная | По умолчанию | Описание |
|---|---|---|
DEBUG |
false |
Режим отладки, включает pprof |
LOG_LEVEL |
DEBUG |
Уровень логирования |
LOCALE |
ru |
Локаль приложения |
DATABASE_URI |
mongodb://localhost:27017/bot |
Строка подключения к MongoDB |
DATABASE_NAME |
bot |
Имя базы |
WEB_ADDR |
:8080 |
Адрес веб-сервера |
WEB_MODE |
release |
Режим Gin |
WEB_DOMAIN |
http://localhost:8080 |
Публичный адрес (для ссылок в RSS) |
LOSTFILM_ENABLE |
false |
Включить LostFilm |
LOSTFILM_DOMAIN |
https://www.lostfilm.pro |
Домен LostFilm |
LOSTFILM_COOKIE_NAME / LOSTFILM_COOKIE_VAL |
— | Cookie авторизации (обязательно) |
LOSTFILM_MAX_RETRIES |
5 |
Попыток скачать торрент |
KINOZAL_ENABLE |
false |
Включить Kinozal |
KINOZAL_DOMAIN |
http://kinozal.tv |
Домен Kinozal |
KINOZAL_COOKIE |
— | Cookie авторизации (обязательно) |
TELEGRAM_ENABLE |
false |
Включить Telegram-бота |
TELEGRAM_TOKEN |
— | Токен бота |
TELEGRAM_DEBUG |
false |
Отладка Telegram API |
TELEGRAM_LOSTFILM_UPDATE_CHANNEL |
— | ID канала для LostFilm |
TELEGRAM_KINOZAL_UPDATE_CHANNEL |
— | ID канала для Kinozal |
TWITCH_CHANNELS |
— | Каналы Twitch через запятую |
TWITCH_TUSHQA_USER_ID |
— | ID пользователей для цитат через запятую |
MASTODON_ENABLE |
false |
Включить Mastodon |
MASTODON_SERVER, MASTODON_EMAIL, MASTODON_PASSWORD, MASTODON_CLIENT_KEY, MASTODON_CLIENT_SECRET, MASTODON_ACCESS_TOKEN |
— | Доступ к Mastodon |
REDIS_ENABLE |
false |
Включить Redis |
REDIS_ADDR, REDIS_PASSWORD, REDIS_DB |
—, —, 0 |
Подключение к Redis |
PROXY_ENABLE |
false |
Включить SOCKS5-прокси |
PROXY_ADDR, PROXY_USER, PROXY_PASSWORD |
— | Параметры прокси |
LOGZIO_TOKEN |
— | Токен Logz.io (пусто — не отправлять) |
LOGZIO_HOST |
https://listener-eu.logz.io:8071 |
Адрес Logz.io |
cmd/app/ точка входа
internal/background/ фоновые задачи (парсеры, Telegram, Twitch, healthcheck)
internal/config/ конфигурация, логгер, подключения к БД/Redis/Mastodon
internal/delivery/web/ HTTP-контроллеры
internal/integration/ бизнес-логика интеграций
pkg/ клиенты LostFilm и Kinozal
docs/ сгенерированный Swagger
go test ./...
swag init -g cmd/app/main.go # обновить Swagger