SuperAPI AI 工具集

slack-messaging

办公与效率

查看项目

更新于 10-15 15:10

技能介绍

用途

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。