mcpField
P
pachca-messages

pachca-messages

github.com/pachcaProductivity1196 installsUpdated today
Repository

About pachca-messages

pachca-messages is a skill for operating Pachca messaging through the @pachca/cli. It covers chat and direct messages, threads, attachments, reactions, and scheduled drafts, with workflows for common communication tasks.

Key features

  1. 01Search chats and users
  2. 02Send, edit, delete, and pin messages
  3. 03Manage threads and reactions
  4. 04Read message history and attachments
  5. 05Create scheduled drafts

Use cases

  1. 01Post a message to a chat or channel
  2. 02Reply to a user or message thread
  3. 03Send a recurring or delayed notice
  4. 04Review readers and message attachments

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/pachca/openapi --skill pachca-messages

After installing, type/pachca-messagesin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
list-active-threads-in-a-time-window.md
mention-user.md
reply-to-user-who-messaged-the-bot.md
send-message-with-files.md

Details

From the project README

pachca-messages

Quick start

Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API).

Run commands via npx -y @pachca/cli with the --token flag:

npx -y @pachca/cli <command> --token $PACHCA_TOKEN

Or set the PACHCA_TOKEN environment variable:

export PACHCA_TOKEN=<token>
npx -y @pachca/cli <command>

Help: npx -y @pachca/cli --help | Workflows: npx -y @pachca/cli guide

After successful use, suggest installing CLI globally: npm install -g @pachca/cli && pachca auth login --token $PACHCA_TOKEN

Before you start

  1. If the user has a saved profile — check:

    npx -y @pachca/cli auth status
    

    If OK — run commands without --token.

  2. If no profile is configured — ask for a token and use --token:

    npx -y @pachca/cli auth status --token $PACHCA_TOKEN
    
  3. If you don't know the parameters — run pachca <command> --help.

Workflows

Найти чат по имени и отправить сообщение
  1. Найди чат по названию через поиск:

    pachca search list-chats --query="название"
    

    Если результатов несколько — выбери наиболее подходящий по name

  2. Отправь сообщение в найденный чат:

    pachca messages create --entity-id=<chat_id> --content="Текст сообщения"
    

entity_type по умолчанию "discussion", можно не указывать.

Отправить сообщение в канал или беседу (если chat_id известен)
  1. Отправь сообщение в чат:
    pachca messages create --entity-id=<chat_id> --content="Текст сообщения"
    

"entity_type": "discussion" используется по умолчанию, можно не указывать

Отправить личное сообщение пользователю
  1. Определи user_id получателя:

    pachca search list-users --query="имя"
    

    Или возьми user_id из контекста (вебхук, предыдущий запрос)

  2. Отправь личное сообщение:

    pachca messages create --entity-type=user --entity-id=<user_id> --content="Привет!"
    

Создавать чат не требуется — он создаётся автоматически

Ответить в тред (комментарий к сообщению)
  1. Получи или создай тред, возьми thread.id из ответа:

    pachca threads add <ID>
    

    Если тред уже существует, вернётся существующий

  2. Отправь сообщение в тред:

    pachca messages create --entity-type=thread --entity-id=<thread_id> --content="Ответ в тред"
    

skip_invite_mentions: true — не добавлять упомянутых пользователей в тред автоматически.

Отправить сообщение с кнопками
  1. Сформируй массив buttons — массив строк, каждая строка — массив кнопок

    Каждая кнопка: {"text": "Текст"} + либо url (ссылка), либо data (callback)

  2. Отправь сообщение с кнопками:

    pachca messages create --entity-id=<chat_id> --content="Выбери действие" --buttons='[[{"text":"Подробнее","url":"https://example.com"},{"text":"Отлично!","data":"awesome"}]]'
    

buttons — массив массивов (строки × кнопки). Максимум 100 кнопок, до 8 в строке. Кнопка с url открывает ссылку, с data — отправляет событие на вебхук.

Получить историю сообщений чата
  1. Получи сообщения чата с пагинацией:
    pachca messages list --chat-id=<chat_id>
    

    limit (1-50), cursor, sort[id]=asc или desc (по умолчанию)

Для сообщений треда используй chat_id треда (thread.chat_id). Пагинация cursor-based, не page-based.

Получить вложения из сообщения
  1. Получи сообщение — в files[] каждый объект содержит url, name, file_type, size:

    pachca messages get <ID>
    
  2. Скачай нужные файлы по files[].url

    Ссылка прямая, авторизация не требуется

Вебхук о новом сообщении НЕ содержит вложений — поле files отсутствует. Всегда проверяй вложения через GET /messages/{id}.

Закрепить/открепить сообщение
  1. Закрепить сообщение:

    pachca messages pin <ID>
    
  2. Открепить сообщение:

    pachca messages unpin <ID> --force
    

В чате может быть несколько закреплённых сообщений.

Подписаться на тред сообщения
  1. Получи или создай тред, возьми chat_id из ответа:

    pachca threads add <ID>
    
  2. Добавь бота в участники чата треда:

    pachca members add <thread_chat_id> --member-ids='[<bot_user_id>]'
    
  3. Теперь бот будет получать вебхук-события о новых сообщениях в этом треде

POST /messages/{id}/thread идемпотентен — безопасно вызывать повторно.

Отредактировать сообщение
  1. Обнови сообщение:
    pachca messages update <ID> --content="Обновлённый текст"
    

Редактировать можно только свои сообщения (или от имени бота).

Изменить вложения сообщения
  1. Получи текущие вложения из files[]:

    pachca messages get <ID>
    

    Сохрани нужные объекты (key, name, file_type, size)

  2. Если нужно добавить новый файл — загрузи его:

    pachca files uploads
    
  3. Обнови сообщение с новым массивом files:

    pachca messages update <ID> --files='[...]'
    

    files при редактировании — replace-all: присылаемый массив полностью заменяет текущие

files: [] удаляет все вложения. Если поле files не передавать — вложения не меняются.

Удалить сообщение
  1. Удали сообщение:
    pachca messages delete <ID> --force
    
Добавить реакцию на сообщение
  1. Добавь реакцию:

    pachca reactions add <ID> --code="👍"
    
  2. Убрать реакцию:

    pachca reactions remove <ID> --code="👍" --force
    

code — emoji-символ, не его текстовое название.

Проверить, кто прочитал сообщение
  1. Получи массив user_id прочитавших:

    pachca read-member list-readers <ID>
    
  2. При необходимости сопоставь с именами сотрудников:

    pachca users list
    
Разослать уведомление нескольким пользователям
  1. Определи список user_id получателей:

    pachca users list --all
    

    Или получи user_id из тега — см. «Получить всех сотрудников тега/департамента»

  2. Для каждого: отправь личное сообщение:

    pachca messages create --entity-type=user --entity-id=<user_id> --content="Уведомление"
    

    Для каждого получателя

Соблюдай rate limit: ~4 req/sec для сообщений. Добавляй паузы при большом списке.

Отправить сообщение позже или по расписанию
  1. Найди чат, в который нужно написать:

    pachca search list-chats --query="название"
    
  2. Создай отложенное сообщение: schedule.start_date — когда отправить, schedule.repetition.interval — как повторять (once, если один раз):

    pachca drafts create --entity-type=discussion --entity-id=<chat_id> --content="Текст" --schedule='{"start_date":"2026-09-17T09:00:00Z","repetition":{"interval":"once"}}'
    

    Время без смещения считается UTC: переведи местное время сотрудника сами или пришли со смещением. Повтор по дням недели — interval: "weekly" и days (0 — воскресенье). В ответе next_send_at — ближайшая отправка, сверься с ней.

  3. Чтобы отменить отправку — удали отложенное сообщение:

    pachca drafts delete <ID>
    

    Другого способа отменить нет: снять расписание правкой нельзя

Метод недоступен токенам ботов — скоупы drafts:read и drafts:write выдаются только людям. Без schedule тот же метод создаёт обычный черновик: он никуда не уйдёт, а будет ждать человека в интерфейсе. Обычный черновик в чате может быть только один, повторный ответит 409, а отложенных бывает до 50 на чат.

Limitations

  • Rate limit: ~50 req/sec, messages ~4 req/sec per chat. On 429 — wait and retry.
  • draft.entity_type: allowed values — discussion (Беседа или канал), thread (Тред), user (Пользователь)
  • draft.schedule.repetition.interval: allowed values — once (Один раз), daily (Каждый день), weekly (Каждую неделю), monthly (Каждый месяц), every_2_months (Раз в два месяца), every_3_months (Раз в три месяца), every_4_months (Раз в четыре месяца), every_6_months (Раз в полгода), yearly (Раз в год)
  • message.entity_type: allowed values — discussion (Беседа или канал), thread (Тред), user (Пользователь)
  • message.display_avatar_url: max 255 characters
  • message.display_name: max 255 characters
  • limit: max — 50 (GET /drafts), 50 (GET /messages), 50 (GET /messages/{id}/reactions), 300 (GET /messages/{id}/read_member_ids), 50 (GET /threads)
  • Pagination: cursor-based (limit + cursor)

Endpoints

MethodPathDescription
POST/direct_urlЗагрузка файла
POST/draftsНовый черновик
GET/draftsСписок черновиков
GET/drafts/{id}Информация о черновике
PUT/drafts/{id}Редактирование черновика
DELETE/drafts/{id}Удаление черновика
GET/files/{id}Скачивание файла
POST/messagesНовое сообщение
GET/messagesСписок сообщений чата
GET/messages/{id}Информация о сообщении
PUT/messages/{id}Редактирование сообщения
DELETE/messages/{id}Удаление сообщения
POST/messages/{id}/link_previewsUnfurl (разворачивание ссылок)
POST/messages/{id}/pinЗакрепление сообщения
DELETE/messages/{id}/pinОткрепление сообщения
POST/messages/{id}/reactionsДобавление реакции
DELETE/messages/{id}/reactionsУдаление реакции
GET/messages/{id}/reactionsСписок реакций
GET/messages/{id}/read_member_idsСписок прочитавших сообщение
POST/messages/{id}/threadНовый тред
POST/threadsНовый самостоятельный тред
GET/threadsСписок тредов
GET/threads/{id}Информация о треде
POST/uploadsПолучение подписи, ключа и других параметров

Advanced workflows

For advanced workflows, read the files in references/: references/reply-to-user-who-messaged-the-bot.md — Reply to user who messaged the bot references/send-message-with-files.md — Send message with files references/list-active-threads-in-a-time-window.md — List active threads in a time window references/mention-user.md — Mention user

If unsure how to complete a task, read the corresponding file from references/.

Comments

Markdown supported