用途
slack-messaging 用于在命令行中发送和读取 Slack 消息、检查 Slack 频道、测试 Slack 集成,或从命令行与 Slack 工作区交互。它基于 slackcli(shaharia-lab/slackcli)实现。
主要能力
- 发送消息到频道或私信(DM),并支持在消息线程中回复。
- 读取频道最近的消息,支持限制条数、JSON 输出以及读取指定线程。
- 列出所有公开频道、私有频道和私信及其 ID。
- 支持多个工作区,发送消息时根据频道 ID 自动路由到对应工作区。
- 可用于验证机器人或集成是否正确发布消息,或发送测试消息并读回验证。
使用方式
安装
下载二进制文件:
curl -sL -o /usr/local/bin/slackcli \
"https://github.com/shaharia-lab/slackcli/releases/download/v0.1.1/slackcli-linux"
chmod +x /usr/local/bin/slackcli
macOS(Intel):将 slackcli-linux 替换为 slackcli-macos。 macOS(Apple Silicon):替换为 slackcli-macos-arm64。
认证
slackcli 使用浏览器会话令牌(xoxc + xoxd),无需创建 Slack 应用。
交互式设置:
./scripts/extract-tokens <workspace-url>
该命令会引导用户从浏览器 DevTools 中提取令牌。
手动设置:
slackcli auth login-browser \
--xoxd="xoxd-..." \
--xoxc="xoxc-..." \
--workspace-url=https://your-workspace.slack.com
验证认证:
slackcli auth list
查找频道
使用 slackcli conversations list 发现频道及其 ID:
# 列出所有频道
slackcli conversations list
# 过滤输出
slackcli conversations list | grep -i "channel-name"
发送消息
# 发送到频道(使用 conversations list 中的频道 ID)
slackcli messages send --recipient-id=C0XXXXXXXX --message="Hello from CLI"
# 发送到私信(使用用户的 DM 频道 ID)
slackcli messages send --recipient-id=D0XXXXXXXX --message="Hey"
# 在线程中回复
slackcli messages send --recipient-id=C0XXXXXXXX --message="Thread reply" --thread-ts=1769756026.624319
--recipient-id 始终是频道 ID(C...)或私信频道 ID(D...)。
读取消息
# 读取频道最近 N 条消息
slackcli conversations read C0XXXXXXXX --limit=10
# 以 JSON 读取(便于解析)
slackcli conversations read C0XXXXXXXX --limit=10 --json
# 读取线程
slackcli conversations read C0XXXXXXXX --thread-ts=1769756026.624319
列出频道
slackcli conversations list
返回所有公开频道、私有频道和私信及其 ID。
测试 Slack 集成
验证机器人或集成是否正确发布消息:
# 读取频道,检查预期消息
slackcli conversations read CHANNEL_ID --limit=5 --json | jq '.messages[] | select(.text | contains("expected text"))'
发送测试消息并验证往返:
# 发送
slackcli messages send --recipient-id=CHANNEL_ID --message="integration test $(date +%s)"
# 读回
slackcli conversations read CHANNEL_ID --limit=1 --json
多工作区
slackcli 支持多个工作区。为每个需要的工作区运行认证流程:
# 添加第一个工作区
./scripts/extract-tokens https://workspace-one.slack.com
# 添加第二个工作区
./scripts/extract-tokens https://workspace-two.slack.com
# 列出所有已认证工作区
slackcli auth list
发送消息时,slackcli 会根据频道 ID 自动路由到正确的工作区。
适用场景
- 在命令行中快速发送或读取 Slack 消息。
- 检查频道内容或线程回复。
- 测试 Slack 机器人或集成是否正常工作。
- 在多个 Slack 工作区之间进行操作。
限制与注意事项
- 浏览器令牌(xoxc/xoxd)以登录用户身份而非机器人身份运行。
- 发送的消息显示为用户发送,而非应用发送。
- 令牌在用户退出浏览器会话后过期。
- 刷新方式:从已登录的浏览器会话重新提取令牌。
- 所有工作区凭据存储在 ~/.config/slackcli/workspaces.json。