https://github.com/kreipikc/mattermost-botpoll
Бот для создания и управления голосованиями в Mattermost, разработанный на Golang с использованием Tarantool в качестве базы данных
https://github.com/kreipikc/mattermost-botpoll
docker-compose golang mattermost-bot postgresql tarantool
Last synced: about 2 months ago
JSON representation
Бот для создания и управления голосованиями в Mattermost, разработанный на Golang с использованием Tarantool в качестве базы данных
- Host: GitHub
- URL: https://github.com/kreipikc/mattermost-botpoll
- Owner: kreipikc
- Created: 2025-03-24T17:50:30.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-05-21T11:44:13.000Z (about 1 year ago)
- Last Synced: 2025-10-29T17:54:41.041Z (8 months ago)
- Topics: docker-compose, golang, mattermost-bot, postgresql, tarantool
- Language: Go
- Homepage:
- Size: 137 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Mattermost Bot-poll
## Быстрый старт
### 1. Клонируем репозиторий в удобное для вас место на устройстве:
```
git clone https://github.com/kreipikc/mattermost-botpoll.git
```
### 2. Настраиваем переменные окружения:
1. Находим файл `.env.example` в корне проекта;
2. Создаем в этой же директории файл `.env`;
3. Вставляем все данные из `.env.example`;
4. При необходимости меняем данные.
Дальше настраиваем переменные окружения в самом боте.
Находим `/app/envs/.env.example`, проделываем те же шаги, что и с первым файлом окружения, но при изменении данных нужно учитывать:
- *TARANTOOL_USER* и *TARANTOOL_PASSWORD* должны быть одинаковыми в обоих `.env` файлах;
- Для запуска через docker (с настройками по умолчанию) не нужно менять ничего кроме *MATTERMOST_TOKEN* (токен бота из Mattermost).
### 3. Запускаем все через `docker-compose`:
```
cd /mattermost-botpoll
docker-compose up --build -d
```
### 4. Все готово! Теперь можно протестировать бота в Mattermost по ссылке - http://localhost:8065/
Для посмотра всех команд для работы с голосованиями напишите в чат: `!help`
## Общая информация
Работа была выполнена в соответствии с ТЗ.
Все команды бота:
1. `!hello` - тестовая команда для проверки работы бота;
2. `!help` - вывод всех команд для работы с голосованиями;
3. `!poll ` - создание голосования;
4. `!info_poll ` - вывод данных о голосовании;
5. `!vote_poll ` - проголосовать за вариант;
6. `!end_poll ` - завершение голосования (только автор);
7. `!delete_poll ` - удаление голосования (только автор).
Все сервисы в `docker-compose`:
- **postgres** - сервис с базой данных PostgresSQL для работы Mattermost;
- **mattermost** - сервис с мессенджером Mattermost;
- **tarantool** - сервис с базой данных Tarantool для хранения информации о голосованиях;
- **bot** - сервис с ботом на Golang, обрабатывающий команды.
Структура проекта:
```
mattermost-botpoll
├── .dockerignore
├── .env.example
├── .gitignore
├── README.md
├── app // Директория с приложением
│ ├── Dockerfile
│ ├── bot // Модуль для работы бота
│ │ ├── client.go // Работа с клиентом бота в Mattermost (инициализация и т.д.)
│ │ └── handle.go // Обработка команд
│ ├── cmd // Модуль с иcполняемым приложением
│ │ └── main.go // Точка входа приложения
│ ├── commands // Модуль с командами
│ │ ├── hello.go
│ │ ├── help.go
│ │ ├── ...
│ │ └── pollVote.go
│ ├── config // Модуль с инициализацией конфига
│ │ └── config.go
│ ├── database // Модуль для работы с базой данных
│ │ └── tarantool.go // Инициализация и функции для базы данных Tarantool
│ ├── envs // Модуль с переменными окружения
│ │ └── .env.example // Шаблон для .env
│ ├── go.mod
│ ├── go.sum
│ ├── models // Модуль с моделями (структурами)
│ │ ├── poll.go
│ │ ├── post.go
│ │ └── user.go
│ └── utils // Модуль для утилит
│ ├── convertToInt.go
│ └── response.go
└── docker-compose.yml
```
## Возможные вопросы и ошибки
### При первом запуске контейнер `bot` не запускается
Пример вывода ошибки:
```
2025-05-21 11:21:21 Ошибка получения пользователя: ошибка: 401, тело: {"id":"api.context.session_expired.app_error","message":"Invalid or expired session, please login again.","detailed_error":"","request_id":"39ff5448fbd38pr8npg5qsrejr","status_code":401}
2025-05-21 14:21:21 exit status 1
```
Данная ошибка указывает на неудачную авторизацию бота в **Mattermost** чтобы её решить нужно:
1. Проверить токен *MATTERMOST_TOKEN* в `/app/envs/.env`;
2. Если он есть, то проверьте верность токена;
3. Если токена нет, то нужно зарегистрироваться в мессенджере **Mattermost** и создать его в настройках профиля;
4. Вставить токен в поле *MATTERMOST_TOKEN* в файле `/app/envs/.env`.