关于 pachca-messages
pachca-messages 是通过 @pachca/cli 操作 Pachca 消息的技能,涵盖聊天和私信、线程、附件、表情回应及定时草稿,并提供常见沟通任务的操作流程。
主要功能
- 01搜索聊天和用户
- 02发送、编辑、删除及置顶消息
- 03管理线程和表情回应
- 04查看消息记录与附件
- 05创建定时草稿
适用场景
- 01向聊天或频道发送消息
- 02回复用户或消息线程
- 03发送定时或延迟通知
- 04查看阅读者和消息附件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pachca/ openapi --skill pachca-messages安装后在 Claude Code 中输入/pachca-messages确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/list-active-threads-in-a-time-window.mdmention-user.mdreply-to-user-who-messaged-the-bot.mdsend-message-with-files.md详细介绍
pachca-messages
快速开始
向用户索取 Pachca 令牌(机器人:前往「集成 → 机器人」中的机器人 API 选项卡;用户:前往「集成 → API」)。
使用 --token 标志,通过 npx -y @pachca/cli 运行命令:
npx -y @pachca/cli <command> --token $PACHCA_TOKEN
或者设置 PACHCA_TOKEN 环境变量:
export PACHCA_TOKEN=<token>
npx -y @pachca/cli <command>
帮助:npx -y @pachca/cli --help | 工作流:npx -y @pachca/cli guide
成功使用后,建议全局安装 CLI:
npm install -g @pachca/cli && pachca auth login --token $PACHCA_TOKEN
开始之前
-
如果用户有已保存的配置文件,请检查:
npx -y @pachca/cli auth status如果状态正常,则运行命令时无需使用
--token。 -
如果尚未配置配置文件,请索取令牌并使用
--token:npx -y @pachca/cli auth status --token $PACHCA_TOKEN -
如果不清楚参数,请运行
pachca <command> --help。
工作流
按名称查找聊天并发送消息
-
通过搜索按名称查找聊天:
pachca search list-chats --query="название"如果有多个结果,请根据
name选择最合适的一个 -
在找到的聊天中发送消息:
pachca messages create --entity-id=<chat_id> --content="Текст сообщения"
entity_type默认为"discussion",可以不指定。
在频道或讨论中发送消息(已知 chat_id 时)
- 在聊天中发送消息:
pachca messages create --entity-id=<chat_id> --content="Текст сообщения"
"entity_type": "discussion"为默认值,可以不指定
向用户发送私信
-
确定收件人的
user_id:pachca search list-users --query="имя"或从上下文中获取 user_id(Webhook、先前的请求)
-
发送私信:
pachca messages create --entity-type=user --entity-id=<user_id> --content="Привет!"
无需创建聊天,系统会自动创建
在话题串中回复(评论消息)
-
获取或创建话题串,并从响应中取得
thread.id:pachca threads add <ID>如果话题串已存在,将返回现有话题串
-
在话题串中发送消息:
pachca messages create --entity-type=thread --entity-id=<thread_id> --content="Ответ в тред"
skip_invite_mentions: true— 不自动将被提及的用户添加到话题串中。
发送带按钮的消息
-
构造
buttons数组——一个字符串数组,每个字符串都是一个按钮数组每个按钮:
{"text": "文本"},并且要么包含url(链接),要么包含data(回调) -
发送带按钮的消息:
pachca messages create --entity-id=<chat_id> --content="Выбери действие" --buttons='[[{"text":"Подробнее","url":"https://example.com"},{"text":"Отлично!","data":"awesome"}]]'
buttons是一个嵌套数组(行 × 按钮)。最多 100 个按钮,每行最多 8 个。带url的按钮会打开链接,带data的按钮会向 Webhook 发送事件。
获取聊天消息历史记录
- 分页获取聊天消息:
pachca messages list --chat-id=<chat_id>limit(1-50)、cursor、sort[id]=asc或desc(默认值)
获取话题串中的消息时,请使用话题串的
chat_id(thread.chat_id)。分页基于 cursor,而非 page。
获取消息附件
-
获取消息——
files[]中的每个对象都包含url、name、file_type、size:pachca messages get <ID> -
通过
files[].url下载所需文件这是直接链接,无需身份验证
新消息的 Webhook 不包含附件——
files字段不存在。请始终通过 GET /messages/{id} 检查附件。
置顶/取消置顶消息
-
置顶消息:
pachca messages pin <ID> -
取消置顶消息:
pachca messages unpin <ID> --force
一个聊天中可以有多条置顶消息。
订阅消息话题串
-
获取或创建话题串,并从响应中取得
chat_id:pachca threads add <ID> -
将机器人添加为话题串聊天的参与者:
pachca members add <thread_chat_id> --member-ids='[<bot_user_id>]' -
之后,机器人将收到此话题串中新消息的 Webhook 事件
POST /messages/{id}/thread 是幂等操作,可以安全地重复调用。
编辑消息
- 更新消息:
pachca messages update <ID> --content="Обновлённый текст"
只能编辑自己的消息(或以机器人身份发送的消息)。
Изменить вложения сообщения
-
Получи текущие вложения из
files[]:pachca messages get <ID>Сохрани нужные объекты (
key,name,file_type,size) -
Если нужно добавить новый файл — загрузи его:
pachca files uploads -
Обнови сообщение с новым массивом
files:pachca messages update <ID> --files='[...]'filesпри редактировании — replace-all: присылаемый массив полностью заменяет текущие
files: []удаляет все вложения. Если полеfilesне передавать — вложения не меняются.
Удалить сообщение
- Удали сообщение:
pachca messages delete <ID> --force
Добавить реакцию на сообщение
-
Добавь реакцию:
pachca reactions add <ID> --code="👍" -
Убрать реакцию:
pachca reactions remove <ID> --code="👍" --force
code— emoji-символ, не его текстовое название.
Проверить, кто прочитал сообщение
-
Получи массив
user_idпрочитавших:pachca read-member list-readers <ID> -
При необходимости сопоставь с именами сотрудников:
pachca users list
Разослать уведомление нескольким пользователям
-
Определи список
user_idполучателей:pachca users list --allИли получи user_id из тега — см. «Получить всех сотрудников тега/департамента»
-
Для каждого: отправь личное сообщение:
pachca messages create --entity-type=user --entity-id=<user_id> --content="Уведомление"Для каждого получателя
Соблюдай rate limit: ~4 req/sec для сообщений. Добавляй паузы при большом списке.
Отправить сообщение позже или по расписанию
-
Найди чат, в который нужно написать:
pachca search list-chats --query="название" -
Создай отложенное сообщение:
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— ближайшая отправка, сверься с ней. -
Чтобы отменить отправку — удали отложенное сообщение:
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 charactersmessage.display_name: max 255 characterslimit: 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)
端点
| Method | Path | Description |
|---|---|---|
| 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_previews | 展开链接 |
| 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 | 获取签名、密钥和其他参数 |
高级工作流
如需了解高级工作流,请阅读 references/ 中的文件: references/reply-to-user-who-messaged-the-bot.md — 回复给机器人发消息的用户 references/send-message-with-files.md — 发送带文件的消息 references/list-active-threads-in-a-time-window.md — 列出指定时间范围内的活跃话题串 references/mention-user.md — 提及用户
如果不确定如何完成某项任务,请阅读 references/ 中对应的文件。