https://github.com/danielpancake/cloud-frog-bot
https://github.com/danielpancake/cloud-frog-bot
Last synced: 16 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/danielpancake/cloud-frog-bot
- Owner: danielpancake
- License: mit
- Created: 2025-07-23T16:06:14.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2026-04-28T15:33:58.000Z (about 2 months ago)
- Last Synced: 2026-04-28T17:26:08.593Z (about 2 months ago)
- Language: Scala
- Homepage:
- Size: 35.2 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CloudFrogBot
Это Telegram-бот, который помогает загружать файлы в облако Яндекс.Диск. Бот написан на Scala и использует [canoe](https://github.com/augustjune/canoe).
## Переменные окружения
Для работы бота необходимо определить следующие переменные окружения:
- `BOT_TOKEN` - токен бота, который можно получить у [@BotFather](https://t.me/BotFather)
- `YANDEX_API_CLIENT_ID` - идентификатор приложения, которое необходимо зарегистрировать в [Яндекс.ID](https://oauth.yandex.ru/)
- `YANDEX_API_CLIENT_SECRET` - секрет приложения, который можно получить в [Яндекс.ID](https://oauth.yandex.ru/)
## Авторизация через Яндекс
Авторизация через сервисы Яндекса происходит посредством обмена временного кода на токен доступа. Т.к. Яндекс перенаправляет пользователя на указанный в настройках приложения URL в формате, который не поддерживается Telegram напрямую, то необходимо использовать промежуточную страницу. Смотри: [`cloudfrogbot.html`](./misc/cloudfrogbot.html).
## Порядок сборки и запуска
### 1. Компиляция и сборка проекта
Компилируем код проекта и собираем FAT JAR, который включает в себя все зависимости.
```bash
sbt
sbt:CloudFrogBot> compile
sbt:CloudFrogBot> assembly
```
После выполнения этих команд в корне проекта появится файл `CloudFrogBot-assembly-x.y.z.jar`, где `x.y.z` - версия проекта. Из `sbt` можно выйти командой `exit`.
### 2. Импорт переменных окружения
Для Windows подготовлен скрипт `winenv.ps1`, который импортирует все переменные из файла `.env` в текущую сессию.
```bash
.\winenv.ps1
```
> Важно: `.env` файл должен находиться в корне проекта.
### 3. Поднятие Redis
Для работы бота необходимо поднять Redis. Для этого можно воспользоваться `docker-compose`:
```bash
docker-compose up -d
```
### 4. Запуск бота
Если все предыдущие шаги были выполнены успешно, то можно запустить бота:
```bash
java -jar .\CloudFrogBot-assembly-x.y.z.jar
```
## Поддерживаемые типы файлов
Бот умеет загружать на Яндекс.Диск следующие типы сообщений Telegram размером до 20МБ:
- анимации (GIF / MPEG-4)
- аудио
- документы
- фотографии (загружается версия максимального разрешения)
- стикеры (сохраняются как `.webp`)
- видео
- видео- и аудиосообщения (кружочки)
## Структура файлов на Яндекс.Диске
Все загрузки сохраняются в корень Яндекс.Диска под общим префиксом `/CloudFrog//`, где `chat_id` -- это идентификатор чата с ботом. Внутри этой папки используется та же категоризация, что и в Telegram: `photos/`, `videos/`, `voice/`, `stickers/` и т.д.
Если у файла есть оригинальное имя (например, документ или аудио с тегом), оно используется как имя файла на Диске. Иначе имя формируется из уникального идентификатора файла Telegram и его расширения.
## Команды бота
- `/start` - начало работы с ботом
- `/login` - то же самое, что и `/start`
- `/reset` - сбросить все данные о пользователе
- `/logout` - то же самое, что и `/reset`
- `/disk` - получить ссылку на Яндекс.Диск