Задача
Необходимо разработать плагин для корпоративного мессенджера Mattermost версии 10.12.1. Плагин должен добавить новую слеш-команду и обеспечить интерактивное взаимодействие пользователей с задачами.
Функциональные требования
- Команда: При вводе пользователем команды формата
/task "Название" бот должен создать новое сообщение, содержащее три интерактивные кнопки: - Учёт пользователей: При нажатии на любую из кнопок под рядом этой кнопки должно отображаться имя пользователя (никнейм), который нажал на неё.
- Множественный выбор: Пользователь может нажать на несколько кнопок и даже повторить нажатие. Имя будет добавлено (если убрать вручную не требуется - система должна добавлять повторно или учитывать дубли, как реализация выберет, главное - конечный список уникальных имен). Фактически, под кнопкой формируется список пользователей, которые эту кнопку нажали.
- Сброс: Если пользователь выбрал хотя бы одну из кнопок (у него есть записи), должна появиться кнопка Сброс. При её нажатии все данные по нажатиям этого пользователя (или именно те, которые он вызвал, уточните в процессе) очищаются, и его имя удаляется из всех списков под кнопками в этом сообщении.
Технические заметки
Плагин должен быть написан на Go для Mattermost версии 10.12.1. Все операции происходят в реальном времени в интерфейсе мессенджера без перезагрузки. Кнопки реализуются с помощью стандартного механизма Interactive Messages (Interactive Message Buttons/Simple Polls) или Slash Commands с уведомлениями/хуками - используйте лучшую практику, подходящую для версии 10.x. Имя пользователя под кнопкой можно реализовать через обновление прежнего сообщения ссылками на пользователя или просто текстовым списком.
Критерии приемки
- Слеш-команда /task работает и создаёт интерактивное сообщение.
- При нажатии кнопки - имя нажавющего (не id, а отображаемый userName/LogicalKey) немедленно обновляется под кнопкой для всех пользователей в канале.
- Пользователь видит себя список и чужие нажатия корректно.
- Если у пользователя есть нажатие - ему доступна кнопка Сброс, которая очищает именно его активность (Имя убирается со всех кнопок этого сообщения при нажатии Сброс).