Skip to content

Бот для создания и управления голосованиями в Mattermost, разработанный на Golang с использованием Tarantool в качестве базы данных

Notifications You must be signed in to change notification settings

kreipikc/mattermost-botpoll

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 <your_path>/mattermost-botpoll
docker-compose up --build -d

4. Все готово! Теперь можно протестировать бота в Mattermost по ссылке - http://localhost:8065/

Для посмотра всех команд для работы с голосованиями напишите в чат: !help

Общая информация

Работа была выполнена в соответствии с ТЗ.

Все команды бота:

  1. !hello - тестовая команда для проверки работы бота;
  2. !help - вывод всех команд для работы с голосованиями;
  3. !poll <title> <description> <date_end> <variants: obj1, obj2...> - создание голосования;
  4. !info_poll <id_poll> - вывод данных о голосовании;
  5. !vote_poll <id_poll> <variant> - проголосовать за вариант;
  6. !end_poll <id_poll> - завершение голосования (только автор);
  7. !delete_poll <id_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.

About

Бот для создания и управления голосованиями в Mattermost, разработанный на Golang с использованием Tarantool в качестве базы данных

Topics

Resources

Stars

Watchers

Forks