An open API service indexing awesome lists of open source software.

https://github.com/danielpancake/cloud-frog-bot


https://github.com/danielpancake/cloud-frog-bot

Last synced: 16 days ago
JSON representation

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` - получить ссылку на Яндекс.Диск