https://github.com/a-khakimov/whodrankmybeer
https://github.com/a-khakimov/whodrankmybeer
Last synced: 8 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/a-khakimov/whodrankmybeer
- Owner: a-khakimov
- Created: 2019-09-09T18:12:23.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-03-30T18:18:34.000Z (over 5 years ago)
- Last Synced: 2025-02-03T12:46:37.859Z (10 months ago)
- Language: C++
- Size: 238 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Who drank my beer
## Описание
Простой чат-бот, выполняющий список следующих функций:
* мониторинг активности в камерах
* уведомление пользователя
* выполнение команд пользователя
## Зависимости
* [plog](https://github.com/SergiusTheBest/plog) - логгирование
* [opencv](https://github.com/opencv/opencv) - используется для обработки и сравнения изображений
* [tgbot-cpp](https://github.com/reo7sp/tgbot-cpp) - библиотека для создания чат-ботов в телеграм
* [cpp-httplib](https://github.com/yhirose/cpp-httplib) - для выполнения http-запросов серверу изображений
* [cxxopts](https://github.com/jarro2783/cxxopts.git) - используется для парсинга аргументов коммандной строки
* [json](https://github.com/nlohmann/json.git) - для работы с json-файлами
### Сборка
Перед сборкой необходимо установить вышеперечисленные зависимости.
Склонировать проект и вытянуть модули
```bash
git clone https://github.com/a-khakimov/WhoDrankMyBeer.git
cd WhoDrankMyBeer
git submodule update --recursive --init
```
Для сборки используется **cmake**:
```bash
cd WhoDrankMyBeerBot
mkdir build
cd build
cmake ..
make
```
### Конфигурирование
Для конфигурирования бота необходимо создать json-файл со следующей структурой:
```json
{
"token" : "",
"proxy_host" : "socks5://localhost:9050",
"http_cameras": [
{ "host" : "192.168.0.2", "port" : 1234, "path" : "/PiCamera.png" },
{ "host" : "192.168.0.5", "port" : 8890, "path" : "/path/to/img.png" },
],
"chats" : [
123456789
]
}
```
* *token* - для авторизации бота в telegram
* *chats* - id-пользователей (чатов), которых будет уведомлять бот
* *proxy_host* - адрес прокси
* *http_cameras* - список камер
### Запуск бота
При запуске бота необходимо задать путь к конфигурационному файлу.
```bash
./WhoDrankMyBeer --configurations ./conf.json
```
После запуска бот начнет процесс мониторинга активности в камерах. При возникновении какой либо активности бот уведомит пользователя передав в чат изображение.
Так же бот поддерживает команды с помощью которых возможно управление ботом.
```
/help - help message
/start - start monitoring
/stop - stop monitoring
/id - send chat id
/list - list of cameras
/photo - take photo and send
```
Со врменем команды могут быть изменены. Поэтому список актуальных команд можно получить отправив команду `'/help'`.
### Документация
Документация формируется с помощью Doxygen.
Ссылка к документации - [https://a-khakimov.github.io/who-drank-my-beer/doxygen/](https://a-khakimov.github.io/who-drank-my-beer/doxygen/)
### Известные проблемы
#### Долгий ответ при недоступности камеры
##### Как воспроизвести
* Запустить бота с отсуствующими камерами
* Отправить команду /photo
* Вслед отправить еще пару комманд и убедиться, что бот не ответит пока не выполнена команда /photo
##### Предполагаемое решение
Перед выполнением команды /photo проверить доступность камеры и/или добавить время ожидания ответа.