Skip to content

Repository files navigation

Mattermost Voting Bot

Описание

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

Установка и запуск

Через Docker Compose

  1. Клонирование репозитория:
git clone https://github.com/Snake1-1eyes/mattermost_voting_bot.git
cd mattermost_voting_bot
  1. Настройка конфигурации:
cp .env.example .env
  1. Пример .env:
TARANTOOL_USER=storage
TARANTOOL_PASSWORD=passw0rd
TARANTOOL_HOST=tarantool
TARANTOOL_PORT=3301

APP_PORT=8080
APP_HOST=0.0.0.0
  1. Запуск:
docker-compose up -d

API

1. Создание первого опроса

curl -X POST http://localhost:8080/polls \
  -H "Content-Type: application/json" \
  -H "X-User-ID: user123" \
  -d '{
    "title": "Выбор места для встречи",
    "options": ["Офис", "Кафе", "Онлайн"],
    "expires_at": "2026-03-29T15:00:00Z"
  }'

2. Создание второго опроса

curl -X POST http://localhost:8080/polls \
  -H "Content-Type: application/json" \
  -H "X-User-ID: user2" \
  -d '{
    "title": "Любимый футбольный клуб?",
    "options": ["Спартак", "ЦСКА", "Краснодар", "Динамо"],
    "expires_at": "2026-01-29T15:00:00Z"
  }'

3. Голосование в первом опросе

curl -X POST http://localhost:8080/polls/{poll_id_1}/vote \
  -H "Content-Type: application/json" \
  -H "X-User-ID: user459" \
  -d '{
    "option_index": 2
  }'

4. Голосование во втором опросе (user22)

curl -X POST http://localhost:8080/polls/{poll_id_2}/vote \
  -H "Content-Type: application/json" \
  -H "X-User-ID: user22" \
  -d '{
    "option_index": 0
  }'

5. Голосование во втором опросе (user33)

curl -X POST http://localhost:8080/polls/{poll_id_2}/vote \
  -H "Content-Type: application/json" \
  -H "X-User-ID: user33" \
  -d '{
    "option_index": 1
  }'

6. Получение результатов первого опроса

curl -X GET http://localhost:8080/polls/{poll_id_1}/results \
  -H "X-User-ID: user123"

7. Получение результатов второго опроса

curl -X GET http://localhost:8080/polls/{poll_id_2}/results \
  -H "X-User-ID: user2"

8. Завершение второго опроса

curl -X POST http://localhost:8080/polls/{poll_id_2}/end \
  -H "X-User-ID: user2"

9. Удаление первого опроса

curl -X DELETE http://localhost:8080/polls/{poll_id_1} \
  -H "X-User-ID: user123"

10. Проверка удаления первого опроса

curl -X GET http://localhost:8080/polls/{poll_id_1}/results \
  -H "X-User-ID: user123"

11. Проверка результатов завершенного второго опроса

curl -X GET http://localhost:8080/polls/{poll_id_2}/results \
  -H "X-User-ID: user2"

12. Попытка голосования в завершенном опросе

curl -X POST http://localhost:8080/polls/{poll_id_2}/vote \
  -H "Content-Type: application/json" \
  -H "X-User-ID: user44" \
  -d '{
    "option_index": 1
  }'

Примечание: Замените {poll_id_1} и {poll_id_2} на реальные ID, полученные после создания опросов.(В коллекции постман для этого есть отдельные скрипты для добавления в глобальные перменные)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages