SKILL.md
pachca-messages
Quick start
Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → 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
- If the user has a saved profile — check:
npx -y @pachca/cli auth status
If OK — run commands without --token.
- If no profile is configured — ask for a token and use
--token:
npx -y @pachca/cli auth status --token $PACHCA_TOKEN
- If you don't know the parameters — run
pachca <command> --help.
Workflows
Найти чат по имени и отправить сообщение
- Найди чат по названию через поиск:
``bash pachca search list-chats --query="название" ` > Если результатов несколько — выбери наиболее подходящий по name`
- Отправь сообщение в найденный чат:
``bash pachca messages create --entity-id=<chat_id> --content="Текст сообщения" ``
entity_typeпо умолчанию"discussion", можно не указывать.
Отправить сообщение в канал или беседу (если chat_id известен)
- Отправь сообщение в чат:
``bash pachca messages create --entity-id=<chat_id> --content="Текст сообщения" ``
"entity_type": "discussion"используется по умолчанию, можно не указывать
Отправить личное сообщение пользователю
- Определи
user_idполучателя:
``bash pachca search list-users --query="имя" `` > Или возьми user_id из контекста (вебхук, предыдущий запрос)
- Отправь личное сообщение:
``bash pachca messages create --entity-type=user --entity-id=<user_id> --content="Привет!" ``
Создавать чат не требуется — он создаётся автоматически
Ответить в тред (комментарий к сообщению)
- Получи или создай тред, возьми
thread.idиз ответа:
``bash pachca threads add <ID> `` > Если тред уже существует, вернётся существующий
- Отправь сообщение в тред:
``bash pachca messages create --entity-type=thread --entity-id=<thread_id> --content="Ответ в тред" ``
skipinvitementions: true— не добавлять упомянутых пользователей в тред автоматически.
Отправить сообщение с кнопками
- Сформируй массив
buttons— массив строк, каждая строка — массив кнопок
> Каждая кнопка: {"text": "Текст"} + либо url (ссылка), либо data (callback)
- Отправь сообщение с кнопками:
``bash pachca messages create --entity-id=<chat_id> --content="Выбери действие" --buttons='[[{"text":"Подробнее","url":"https://example.com"},{"text":"Отлично!","data":"awesome"}]]'; ``
buttons— массив массивов (строки × кнопки). Максимум 100 кнопок, до 8 в строке. Кнопка сurlоткрывает ссылку, сdata— отправляет событие на вебхук.
Получить историю сообщений чата
- Получи сообщения чата с пагинацией:
``bash pachca messages list --chat-id=<chat_id> ` > limit (1-50), cursor, sort[id]=asc или desc` (по умолчанию)
Для сообщений треда используй
chatidтреда (thread.chatid). Пагинация cursor-based, не page-based.
Получить вложения из сообщения
- Получи сообщение — в
files[]каждый объект содержитurl,name,file_type,size:
``bash pachca messages get <ID> ``
- Скачай нужные файлы по
files[].url
> Ссылка прямая, авторизация не требуется
Вебхук о новом сообщении НЕ содержит вложений — поле
filesотсутствует. Всегда проверяй вложения через GET /messages/{id}.
Закрепить/открепить сообщение
- Закрепить сообщение:
``bash pachca messages pin <ID> ``
- Открепить сообщение:
``bash pachca messages unpin <ID> --force ``
В чате может быть несколько закреплённых сообщений.
Подписаться на тред сообщения
- Получи или создай тред, возьми
chat_idиз ответа:
``bash pachca threads add <ID> ``
- Добавь бота в участники чата треда:
``bash pachca members add <threadchatid> --member-ids='[<botuserid>]' ``
- Теперь бот будет получать вебхук-события о новых сообщениях в этом треде
POST /messages/{id}/thread идемпотентен — безопасно вызывать повторно.
Отредактировать сообщение
- Обнови сообщение:
``bash pachca messages update <ID> --content="Обновлённый текст" ``
Редактировать можно только свои сообщения (или от имени бота).
Изменить вложения сообщения
- Получи текущие вложения из
files[]:
``bash pachca messages get <ID> ` > Сохрани нужные объекты (key, name, file_type, size`)
- Если нужно добавить новый файл — загрузи его:
``bash pachca files uploads ``
- Обнови сообщение с новым массивом
files:
``bash pachca messages update <ID> --files='[...]' ` > files` при редактировании — replace-all: присылаемый массив полностью заменяет текущие
files: []удаляет все вложения. Если полеfilesне передавать — вложения не меняются.
Удалить сообщение
- Удали сообщение:
``bash pachca messages delete <ID> --force ``
Добавить реакцию на сообщение
- Добавь реакцию:
``bash pachca reactions add <ID> --code="👍" ``
- Убрать реакцию:
``bash pachca reactions remove <ID> --code="👍" --force ``
code— emoji-символ, не его текстовое название.
Проверить, кто прочитал сообщение
- Получи массив
user_idпрочитавших:
``bash pachca read-member list-readers <ID> ``
- При необходимости сопоставь с именами сотрудников:
``bash pachca users list ``
Разослать уведомление нескольким пользователям
- Определи список
user_idполучателей:
``bash pachca users list --all `` > Или получи user_id из тега — см. «Получить всех сотрудников тега/департамента»
- Для каждого: отправь личное сообщение:
``bash pachca messages create --entity-type=user --entity-id=<user_id> --content="Уведомление" `` > Для каждого получателя
Соблюдай rate limit: ~4 req/sec для сообщений. Добавляй паузы при большом списке.
Limitations
- Rate limit: ~50 req/sec, messages ~4 req/sec per chat. On 429 — wait and retry.
message.entity_type: allowed values —discussion(Беседа или канал),thread(Тред),user(Пользователь)message.displayavatarurl: max 255 charactersmessage.display_name: max 255 characterslimit: max — 50 (GET /messages), 50 (GET /messages/{id}/reactions), 300 (GET /messages/{id}/readmemberids), 50 (GET /threads)- Pagination: cursor-based (limit + cursor)
Endpoints
| Method | Path | Description |
|---|---|---|
| POST | /direct_url | Загрузка файла |
| POST | /messages | Новое сообщение |
| GET | /messages | Список сообщений чата |
| GET | /messages/{id} | Информация о сообщении |
| PUT | /messages/{id} | Редактирование сообщения |
| DELETE | /messages/{id} | Удаление сообщения |
| POST | /messages/{id}/link_previews | Unfurl (разворачивание ссылок) |
| POST | /messages/{id}/pin | Закрепление сообщения |
| DELETE | /messages/{id}/pin | Открепление сообщения |
| POST | /messages/{id}/reactions | Добавление реакции |
| DELETE | /messages/{id}/reactions | Удаление реакции |
| GET | /messages/{id}/reactions | Список реакций |
| GET | /messages/{id}/readmemberids | Список прочитавших сообщение |
| 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/.