@kaa5945/slack-cli 2026.4.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +620 -0
- package/README.zh-TW.md +620 -0
- package/dist/commands/bookmark.d.ts +3 -0
- package/dist/commands/bookmark.d.ts.map +1 -0
- package/dist/commands/bookmark.js +62 -0
- package/dist/commands/bookmark.js.map +1 -0
- package/dist/commands/canvas.d.ts +3 -0
- package/dist/commands/canvas.d.ts.map +1 -0
- package/dist/commands/canvas.js +92 -0
- package/dist/commands/canvas.js.map +1 -0
- package/dist/commands/channel.d.ts +3 -0
- package/dist/commands/channel.d.ts.map +1 -0
- package/dist/commands/channel.js +53 -0
- package/dist/commands/channel.js.map +1 -0
- package/dist/commands/channels.d.ts +3 -0
- package/dist/commands/channels.d.ts.map +1 -0
- package/dist/commands/channels.js +41 -0
- package/dist/commands/channels.js.map +1 -0
- package/dist/commands/config-subcommands.d.ts +17 -0
- package/dist/commands/config-subcommands.d.ts.map +1 -0
- package/dist/commands/config-subcommands.js +170 -0
- package/dist/commands/config-subcommands.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +40 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/delete.d.ts +3 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +28 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/edit.d.ts +3 -0
- package/dist/commands/edit.d.ts.map +1 -0
- package/dist/commands/edit.js +29 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/history-display.d.ts +9 -0
- package/dist/commands/history-display.d.ts.map +1 -0
- package/dist/commands/history-display.js +17 -0
- package/dist/commands/history-display.js.map +1 -0
- package/dist/commands/history-validators.d.ts +5 -0
- package/dist/commands/history-validators.d.ts.map +1 -0
- package/dist/commands/history-validators.js +35 -0
- package/dist/commands/history-validators.js.map +1 -0
- package/dist/commands/history.d.ts +3 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +141 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/invite.d.ts +3 -0
- package/dist/commands/invite.d.ts.map +1 -0
- package/dist/commands/invite.js +34 -0
- package/dist/commands/invite.js.map +1 -0
- package/dist/commands/join.d.ts +3 -0
- package/dist/commands/join.d.ts.map +1 -0
- package/dist/commands/join.js +25 -0
- package/dist/commands/join.js.map +1 -0
- package/dist/commands/leave.d.ts +3 -0
- package/dist/commands/leave.d.ts.map +1 -0
- package/dist/commands/leave.js +25 -0
- package/dist/commands/leave.js.map +1 -0
- package/dist/commands/members.d.ts +3 -0
- package/dist/commands/members.d.ts.map +1 -0
- package/dist/commands/members.js +53 -0
- package/dist/commands/members.js.map +1 -0
- package/dist/commands/pin.d.ts +3 -0
- package/dist/commands/pin.d.ts.map +1 -0
- package/dist/commands/pin.js +91 -0
- package/dist/commands/pin.js.map +1 -0
- package/dist/commands/reaction.d.ts +3 -0
- package/dist/commands/reaction.d.ts.map +1 -0
- package/dist/commands/reaction.js +45 -0
- package/dist/commands/reaction.js.map +1 -0
- package/dist/commands/reminder.d.ts +3 -0
- package/dist/commands/reminder.d.ts.map +1 -0
- package/dist/commands/reminder.js +78 -0
- package/dist/commands/reminder.js.map +1 -0
- package/dist/commands/scheduled.d.ts +3 -0
- package/dist/commands/scheduled.d.ts.map +1 -0
- package/dist/commands/scheduled.js +69 -0
- package/dist/commands/scheduled.js.map +1 -0
- package/dist/commands/search.d.ts +3 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +51 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/send-ephemeral.d.ts +3 -0
- package/dist/commands/send-ephemeral.d.ts.map +1 -0
- package/dist/commands/send-ephemeral.js +36 -0
- package/dist/commands/send-ephemeral.js.map +1 -0
- package/dist/commands/send.d.ts +3 -0
- package/dist/commands/send.d.ts.map +1 -0
- package/dist/commands/send.js +125 -0
- package/dist/commands/send.js.map +1 -0
- package/dist/commands/unread.d.ts +3 -0
- package/dist/commands/unread.d.ts.map +1 -0
- package/dist/commands/unread.js +92 -0
- package/dist/commands/unread.js.map +1 -0
- package/dist/commands/upload.d.ts +3 -0
- package/dist/commands/upload.d.ts.map +1 -0
- package/dist/commands/upload.js +99 -0
- package/dist/commands/upload.js.map +1 -0
- package/dist/commands/users.d.ts +3 -0
- package/dist/commands/users.d.ts.map +1 -0
- package/dist/commands/users.js +138 -0
- package/dist/commands/users.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/types/commands.d.ts +216 -0
- package/dist/types/commands.d.ts.map +1 -0
- package/dist/types/commands.js +3 -0
- package/dist/types/commands.js.map +1 -0
- package/dist/types/config.d.ts +18 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/slack.d.ts +198 -0
- package/dist/types/slack.d.ts.map +1 -0
- package/dist/types/slack.js +3 -0
- package/dist/types/slack.js.map +1 -0
- package/dist/utils/attachment-downloader.d.ts +22 -0
- package/dist/utils/attachment-downloader.d.ts.map +1 -0
- package/dist/utils/attachment-downloader.js +138 -0
- package/dist/utils/attachment-downloader.js.map +1 -0
- package/dist/utils/channel-formatter.d.ts +13 -0
- package/dist/utils/channel-formatter.d.ts.map +1 -0
- package/dist/utils/channel-formatter.js +43 -0
- package/dist/utils/channel-formatter.js.map +1 -0
- package/dist/utils/channel-resolver.d.ts +27 -0
- package/dist/utils/channel-resolver.d.ts.map +1 -0
- package/dist/utils/channel-resolver.js +76 -0
- package/dist/utils/channel-resolver.js.map +1 -0
- package/dist/utils/client-factory.d.ts +6 -0
- package/dist/utils/client-factory.d.ts.map +1 -0
- package/dist/utils/client-factory.js +13 -0
- package/dist/utils/client-factory.js.map +1 -0
- package/dist/utils/command-support.d.ts +16 -0
- package/dist/utils/command-support.d.ts.map +1 -0
- package/dist/utils/command-support.js +29 -0
- package/dist/utils/command-support.js.map +1 -0
- package/dist/utils/command-wrapper.d.ts +6 -0
- package/dist/utils/command-wrapper.d.ts.map +1 -0
- package/dist/utils/command-wrapper.js +27 -0
- package/dist/utils/command-wrapper.js.map +1 -0
- package/dist/utils/config-helper.d.ts +8 -0
- package/dist/utils/config-helper.d.ts.map +1 -0
- package/dist/utils/config-helper.js +19 -0
- package/dist/utils/config-helper.js.map +1 -0
- package/dist/utils/constants.d.ts +64 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +77 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/date-utils.d.ts +4 -0
- package/dist/utils/date-utils.d.ts.map +1 -0
- package/dist/utils/date-utils.js +24 -0
- package/dist/utils/date-utils.js.map +1 -0
- package/dist/utils/error-utils.d.ts +4 -0
- package/dist/utils/error-utils.d.ts.map +1 -0
- package/dist/utils/error-utils.js +46 -0
- package/dist/utils/error-utils.js.map +1 -0
- package/dist/utils/errors.d.ts +17 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +36 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/format-utils.d.ts +4 -0
- package/dist/utils/format-utils.d.ts.map +1 -0
- package/dist/utils/format-utils.js +24 -0
- package/dist/utils/format-utils.js.map +1 -0
- package/dist/utils/formatters/base-formatter.d.ts +23 -0
- package/dist/utils/formatters/base-formatter.d.ts.map +1 -0
- package/dist/utils/formatters/base-formatter.js +27 -0
- package/dist/utils/formatters/base-formatter.js.map +1 -0
- package/dist/utils/formatters/bookmark-formatters.d.ts +14 -0
- package/dist/utils/formatters/bookmark-formatters.d.ts.map +1 -0
- package/dist/utils/formatters/bookmark-formatters.js +60 -0
- package/dist/utils/formatters/bookmark-formatters.js.map +1 -0
- package/dist/utils/formatters/channel-formatters.d.ts +7 -0
- package/dist/utils/formatters/channel-formatters.d.ts.map +1 -0
- package/dist/utils/formatters/channel-formatters.js +65 -0
- package/dist/utils/formatters/channel-formatters.js.map +1 -0
- package/dist/utils/formatters/channel-info-formatters.d.ts +6 -0
- package/dist/utils/formatters/channel-info-formatters.d.ts.map +1 -0
- package/dist/utils/formatters/channel-info-formatters.js +69 -0
- package/dist/utils/formatters/channel-info-formatters.js.map +1 -0
- package/dist/utils/formatters/channels-list-formatters.d.ts +6 -0
- package/dist/utils/formatters/channels-list-formatters.d.ts.map +1 -0
- package/dist/utils/formatters/channels-list-formatters.js +49 -0
- package/dist/utils/formatters/channels-list-formatters.js.map +1 -0
- package/dist/utils/formatters/history-formatters.d.ts +10 -0
- package/dist/utils/formatters/history-formatters.d.ts.map +1 -0
- package/dist/utils/formatters/history-formatters.js +87 -0
- package/dist/utils/formatters/history-formatters.js.map +1 -0
- package/dist/utils/formatters/members-formatters.d.ts +10 -0
- package/dist/utils/formatters/members-formatters.d.ts.map +1 -0
- package/dist/utils/formatters/members-formatters.js +42 -0
- package/dist/utils/formatters/members-formatters.js.map +1 -0
- package/dist/utils/formatters/message-formatters.d.ts +12 -0
- package/dist/utils/formatters/message-formatters.d.ts.map +1 -0
- package/dist/utils/formatters/message-formatters.js +95 -0
- package/dist/utils/formatters/message-formatters.js.map +1 -0
- package/dist/utils/formatters/reminder-formatters.d.ts +12 -0
- package/dist/utils/formatters/reminder-formatters.d.ts.map +1 -0
- package/dist/utils/formatters/reminder-formatters.js +64 -0
- package/dist/utils/formatters/reminder-formatters.js.map +1 -0
- package/dist/utils/formatters/search-formatters.d.ts +10 -0
- package/dist/utils/formatters/search-formatters.d.ts.map +1 -0
- package/dist/utils/formatters/search-formatters.js +87 -0
- package/dist/utils/formatters/search-formatters.js.map +1 -0
- package/dist/utils/mention-utils.d.ts +17 -0
- package/dist/utils/mention-utils.d.ts.map +1 -0
- package/dist/utils/mention-utils.js +45 -0
- package/dist/utils/mention-utils.js.map +1 -0
- package/dist/utils/option-parsers.d.ts +47 -0
- package/dist/utils/option-parsers.d.ts.map +1 -0
- package/dist/utils/option-parsers.js +75 -0
- package/dist/utils/option-parsers.js.map +1 -0
- package/dist/utils/profile-config.d.ts +19 -0
- package/dist/utils/profile-config.d.ts.map +1 -0
- package/dist/utils/profile-config.js +203 -0
- package/dist/utils/profile-config.js.map +1 -0
- package/dist/utils/schedule-utils.d.ts +3 -0
- package/dist/utils/schedule-utils.d.ts.map +1 -0
- package/dist/utils/schedule-utils.js +34 -0
- package/dist/utils/schedule-utils.js.map +1 -0
- package/dist/utils/slack-api-client.d.ts +3 -0
- package/dist/utils/slack-api-client.d.ts.map +1 -0
- package/dist/utils/slack-api-client.js +22 -0
- package/dist/utils/slack-api-client.js.map +1 -0
- package/dist/utils/slack-client-service.d.ts +66 -0
- package/dist/utils/slack-client-service.d.ts.map +1 -0
- package/dist/utils/slack-client-service.js +181 -0
- package/dist/utils/slack-client-service.js.map +1 -0
- package/dist/utils/slack-operations/base-client.d.ts +18 -0
- package/dist/utils/slack-operations/base-client.d.ts.map +1 -0
- package/dist/utils/slack-operations/base-client.js +52 -0
- package/dist/utils/slack-operations/base-client.js.map +1 -0
- package/dist/utils/slack-operations/canvas-operations.d.ts +10 -0
- package/dist/utils/slack-operations/canvas-operations.d.ts.map +1 -0
- package/dist/utils/slack-operations/canvas-operations.js +28 -0
- package/dist/utils/slack-operations/canvas-operations.js.map +1 -0
- package/dist/utils/slack-operations/channel-operations.d.ts +33 -0
- package/dist/utils/slack-operations/channel-operations.d.ts.map +1 -0
- package/dist/utils/slack-operations/channel-operations.js +276 -0
- package/dist/utils/slack-operations/channel-operations.js.map +1 -0
- package/dist/utils/slack-operations/file-operations.d.ts +19 -0
- package/dist/utils/slack-operations/file-operations.d.ts.map +1 -0
- package/dist/utils/slack-operations/file-operations.js +51 -0
- package/dist/utils/slack-operations/file-operations.js.map +1 -0
- package/dist/utils/slack-operations/index.d.ts +5 -0
- package/dist/utils/slack-operations/index.d.ts.map +1 -0
- package/dist/utils/slack-operations/index.js +12 -0
- package/dist/utils/slack-operations/index.js.map +1 -0
- package/dist/utils/slack-operations/message-history-operations.d.ts +17 -0
- package/dist/utils/slack-operations/message-history-operations.d.ts.map +1 -0
- package/dist/utils/slack-operations/message-history-operations.js +101 -0
- package/dist/utils/slack-operations/message-history-operations.js.map +1 -0
- package/dist/utils/slack-operations/message-operations.d.ts +24 -0
- package/dist/utils/slack-operations/message-operations.d.ts.map +1 -0
- package/dist/utils/slack-operations/message-operations.js +61 -0
- package/dist/utils/slack-operations/message-operations.js.map +1 -0
- package/dist/utils/slack-operations/message-permalink-operations.d.ts +10 -0
- package/dist/utils/slack-operations/message-permalink-operations.d.ts.map +1 -0
- package/dist/utils/slack-operations/message-permalink-operations.js +49 -0
- package/dist/utils/slack-operations/message-permalink-operations.js.map +1 -0
- package/dist/utils/slack-operations/message-user-resolver.d.ts +7 -0
- package/dist/utils/slack-operations/message-user-resolver.d.ts.map +1 -0
- package/dist/utils/slack-operations/message-user-resolver.js +27 -0
- package/dist/utils/slack-operations/message-user-resolver.js.map +1 -0
- package/dist/utils/slack-operations/message-write-operations.d.ts +17 -0
- package/dist/utils/slack-operations/message-write-operations.d.ts.map +1 -0
- package/dist/utils/slack-operations/message-write-operations.js +76 -0
- package/dist/utils/slack-operations/message-write-operations.js.map +1 -0
- package/dist/utils/slack-operations/pin-operations.d.ts +11 -0
- package/dist/utils/slack-operations/pin-operations.d.ts.map +1 -0
- package/dist/utils/slack-operations/pin-operations.js +34 -0
- package/dist/utils/slack-operations/pin-operations.js.map +1 -0
- package/dist/utils/slack-operations/reaction-operations.d.ts +10 -0
- package/dist/utils/slack-operations/reaction-operations.d.ts.map +1 -0
- package/dist/utils/slack-operations/reaction-operations.js +32 -0
- package/dist/utils/slack-operations/reaction-operations.js.map +1 -0
- package/dist/utils/slack-operations/reminder-operations.d.ts +10 -0
- package/dist/utils/slack-operations/reminder-operations.d.ts.map +1 -0
- package/dist/utils/slack-operations/reminder-operations.js +32 -0
- package/dist/utils/slack-operations/reminder-operations.js.map +1 -0
- package/dist/utils/slack-operations/search-operations.d.ts +11 -0
- package/dist/utils/slack-operations/search-operations.d.ts.map +1 -0
- package/dist/utils/slack-operations/search-operations.js +116 -0
- package/dist/utils/slack-operations/search-operations.js.map +1 -0
- package/dist/utils/slack-operations/star-operations.d.ts +9 -0
- package/dist/utils/slack-operations/star-operations.d.ts.map +1 -0
- package/dist/utils/slack-operations/star-operations.js +32 -0
- package/dist/utils/slack-operations/star-operations.js.map +1 -0
- package/dist/utils/slack-operations/user-operations.d.ts +12 -0
- package/dist/utils/slack-operations/user-operations.d.ts.map +1 -0
- package/dist/utils/slack-operations/user-operations.js +69 -0
- package/dist/utils/slack-operations/user-operations.js.map +1 -0
- package/dist/utils/slack-patterns.d.ts +20 -0
- package/dist/utils/slack-patterns.d.ts.map +1 -0
- package/dist/utils/slack-patterns.js +54 -0
- package/dist/utils/slack-patterns.js.map +1 -0
- package/dist/utils/terminal-sanitizer.d.ts +7 -0
- package/dist/utils/terminal-sanitizer.d.ts.map +1 -0
- package/dist/utils/terminal-sanitizer.js +51 -0
- package/dist/utils/terminal-sanitizer.js.map +1 -0
- package/dist/utils/token-crypto-service.d.ts +40 -0
- package/dist/utils/token-crypto-service.d.ts.map +1 -0
- package/dist/utils/token-crypto-service.js +273 -0
- package/dist/utils/token-crypto-service.js.map +1 -0
- package/dist/utils/token-utils.d.ts +7 -0
- package/dist/utils/token-utils.d.ts.map +1 -0
- package/dist/utils/token-utils.js +18 -0
- package/dist/utils/token-utils.js.map +1 -0
- package/dist/utils/update-notifier.d.ts +10 -0
- package/dist/utils/update-notifier.d.ts.map +1 -0
- package/dist/utils/update-notifier.js +147 -0
- package/dist/utils/update-notifier.js.map +1 -0
- package/dist/utils/validators.d.ts +147 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/utils/validators.js +401 -0
- package/dist/utils/validators.js.map +1 -0
- package/package.json +58 -0
package/README.zh-TW.md
ADDED
|
@@ -0,0 +1,620 @@
|
|
|
1
|
+
# Slack CLI
|
|
2
|
+
|
|
3
|
+
[](https://github.com/adamtan945/slack-cli/blob/main/CHANGELOG.md)
|
|
4
|
+
[](https://nodejs.org/)
|
|
5
|
+
[](https://www.typescriptlang.org/)
|
|
6
|
+
[](https://github.com/adamtan945/slack-cli/blob/main/LICENSE)
|
|
7
|
+
[](https://github.com/adamtan945/slack-cli/blob/main/README.md)
|
|
8
|
+
[](https://github.com/adamtan945/slack-cli/blob/main/CHANGELOG.md)
|
|
9
|
+
|
|
10
|
+
透過 Slack API 發送訊息的命令列工具。
|
|
11
|
+
|
|
12
|
+
## 安裝
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install -g @kaa5945/slack-cli
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
執行指令時,若 npm 有新版本,CLI 預設會顯示更新提示。若要關閉,設定 `SLACK_CLI_DISABLE_UPDATE_NOTIFIER=1`。
|
|
19
|
+
|
|
20
|
+
## 設定
|
|
21
|
+
|
|
22
|
+
首次使用前需設定 Slack API Token:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# 互動式安全輸入(推薦)
|
|
26
|
+
slack-cli config set
|
|
27
|
+
|
|
28
|
+
# 非互動式(CI/腳本環境)
|
|
29
|
+
printf '%s\n' "$SLACK_API_TOKEN" | slack-cli config set --token-stdin
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Token 儲存安全性:
|
|
33
|
+
- Token 以 AES-256-GCM 加密後寫入磁碟。
|
|
34
|
+
- 主金鑰建立於 `~/.slack-cli-secrets/master.key`,僅擁有者可讀。
|
|
35
|
+
- 舊版 `~/.slack-cli/master.key` 首次使用時自動遷移。
|
|
36
|
+
- 臨時環境可設定 `SLACK_CLI_MASTER_KEY` 環境變數覆蓋本地金鑰。
|
|
37
|
+
|
|
38
|
+
## 使用方式
|
|
39
|
+
|
|
40
|
+
### 管理多個工作區(Profile)
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# 設定不同工作區的 token
|
|
44
|
+
printf '%s\n' "$WORK_SLACK_TOKEN" | slack-cli config set --profile work --token-stdin
|
|
45
|
+
printf '%s\n' "$PERSONAL_SLACK_TOKEN" | slack-cli config set --profile personal --token-stdin
|
|
46
|
+
|
|
47
|
+
# 顯示所有 profile
|
|
48
|
+
slack-cli config profiles
|
|
49
|
+
|
|
50
|
+
# 切換預設 profile
|
|
51
|
+
slack-cli config use work
|
|
52
|
+
|
|
53
|
+
# 查看目前使用的 profile
|
|
54
|
+
slack-cli config current
|
|
55
|
+
|
|
56
|
+
# 查看指定 profile 設定
|
|
57
|
+
slack-cli config get --profile personal
|
|
58
|
+
|
|
59
|
+
# 清除指定 profile
|
|
60
|
+
slack-cli config clear --profile work
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 發送訊息
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# 基本用法(使用預設 profile)
|
|
67
|
+
slack-cli send -c channel-name -m "訊息內容"
|
|
68
|
+
|
|
69
|
+
# 使用指定 profile
|
|
70
|
+
slack-cli send -c channel-name -m "訊息內容" --profile personal
|
|
71
|
+
|
|
72
|
+
# 使用頻道 ID
|
|
73
|
+
slack-cli send -c C1234567890 -m "訊息內容"
|
|
74
|
+
|
|
75
|
+
# 多行訊息
|
|
76
|
+
slack-cli send -c general -m "第一行\n第二行\n第三行"
|
|
77
|
+
|
|
78
|
+
# 從檔案讀取訊息
|
|
79
|
+
slack-cli send -c random -f message.txt
|
|
80
|
+
|
|
81
|
+
# 回覆 thread
|
|
82
|
+
slack-cli send -c channel-name -m "回覆內容" --thread 1719207629.000100
|
|
83
|
+
|
|
84
|
+
# 回覆 thread(簡短選項)
|
|
85
|
+
slack-cli send -c channel-name -m "回覆內容" -t 1719207629.000100
|
|
86
|
+
|
|
87
|
+
# 排程發送(絕對時間,Unix 秒或 ISO 8601)
|
|
88
|
+
slack-cli send -c channel-name -m "排程訊息" --at "2026-03-01T09:00:00+08:00"
|
|
89
|
+
|
|
90
|
+
# N 分鐘後發送
|
|
91
|
+
slack-cli send -c channel-name -m "排程訊息" --after 30
|
|
92
|
+
|
|
93
|
+
# 傳送 DM(依使用者名稱)
|
|
94
|
+
slack-cli send --user @john -m "Hello via DM!"
|
|
95
|
+
|
|
96
|
+
# 傳送 DM(依 Email)
|
|
97
|
+
slack-cli send --email john@example.com -m "Hello via DM!"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 列出頻道
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# 列出所有頻道(使用預設 profile)
|
|
104
|
+
slack-cli channels
|
|
105
|
+
|
|
106
|
+
# 使用指定 profile
|
|
107
|
+
slack-cli channels --profile work
|
|
108
|
+
|
|
109
|
+
# 只列出公開頻道
|
|
110
|
+
slack-cli channels --type public
|
|
111
|
+
|
|
112
|
+
# 只列出私有頻道
|
|
113
|
+
slack-cli channels --type private
|
|
114
|
+
|
|
115
|
+
# 列出所有類型(包含 DM 和群組 DM)
|
|
116
|
+
slack-cli channels --type all
|
|
117
|
+
|
|
118
|
+
# 包含已封存頻道
|
|
119
|
+
slack-cli channels --include-archived
|
|
120
|
+
|
|
121
|
+
# 限制顯示數量
|
|
122
|
+
slack-cli channels --limit 20
|
|
123
|
+
|
|
124
|
+
# 指定輸出格式
|
|
125
|
+
slack-cli channels --format json
|
|
126
|
+
slack-cli channels --format simple
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 頻道資訊與管理
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# 顯示頻道詳細資訊
|
|
133
|
+
slack-cli channel info -c general
|
|
134
|
+
|
|
135
|
+
# 指定輸出格式
|
|
136
|
+
slack-cli channel info -c general --format json
|
|
137
|
+
slack-cli channel info -c general --format simple
|
|
138
|
+
|
|
139
|
+
# 設定頻道主題
|
|
140
|
+
slack-cli channel set-topic -c general --topic "目前衝刺:v2.0"
|
|
141
|
+
|
|
142
|
+
# 設定頻道用途
|
|
143
|
+
slack-cli channel set-purpose -c general --purpose "專案 X 開發頻道"
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 查看訊息歷史
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# 取得最新 10 則訊息(預設)
|
|
150
|
+
slack-cli history -c general
|
|
151
|
+
|
|
152
|
+
# 指定筆數
|
|
153
|
+
slack-cli history -c general -n 20
|
|
154
|
+
|
|
155
|
+
# 取得指定日期後的訊息(本地時間)
|
|
156
|
+
slack-cli history -c general --since "2024-01-01 00:00:00"
|
|
157
|
+
|
|
158
|
+
# 取得完整 thread 對話(依 timestamp)
|
|
159
|
+
slack-cli history -c general --thread 1719207629.000100
|
|
160
|
+
|
|
161
|
+
# 取得完整 thread 對話(直接貼 Slack URL)
|
|
162
|
+
slack-cli history -u "https://yourworkspace.slack.com/archives/C1234567890/p1719207629000100"
|
|
163
|
+
|
|
164
|
+
# 也支援回覆訊息的 URL(自動從 query param 取得 thread_ts)
|
|
165
|
+
slack-cli history -u "https://yourworkspace.slack.com/archives/C1234567890/p1719207629999999?thread_ts=1719207629.000100&cid=C1234567890"
|
|
166
|
+
|
|
167
|
+
# 下載訊息中的附件(預設放到 /tmp/slack-files/{channelId}_{threadTs 或 "history"}/)
|
|
168
|
+
slack-cli history -u "https://yourworkspace.slack.com/archives/C1234567890/p1719207629000100" -a
|
|
169
|
+
|
|
170
|
+
# 自訂下載目錄
|
|
171
|
+
slack-cli history -c general -n 20 -a -o ~/Downloads/slack-assets
|
|
172
|
+
|
|
173
|
+
# 指定輸出格式
|
|
174
|
+
slack-cli history -c general --format json
|
|
175
|
+
slack-cli history -c general --format simple
|
|
176
|
+
|
|
177
|
+
# 每則訊息附上永久連結
|
|
178
|
+
slack-cli history -c general --with-link
|
|
179
|
+
|
|
180
|
+
# 使用指定 profile
|
|
181
|
+
slack-cli history -c general --profile work
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### 查看未讀訊息
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# 取得所有頻道的未讀訊息
|
|
188
|
+
slack-cli unread
|
|
189
|
+
|
|
190
|
+
# 取得指定頻道的未讀訊息
|
|
191
|
+
slack-cli unread -c general
|
|
192
|
+
|
|
193
|
+
# 只顯示未讀數量(不顯示訊息內容)
|
|
194
|
+
slack-cli unread --count-only
|
|
195
|
+
|
|
196
|
+
# 取得後標記為已讀
|
|
197
|
+
slack-cli unread --mark-read
|
|
198
|
+
|
|
199
|
+
# 指定頻道取得後標記為已讀
|
|
200
|
+
slack-cli unread -c general --mark-read
|
|
201
|
+
|
|
202
|
+
# 限制顯示頻道數量
|
|
203
|
+
slack-cli unread --limit 10
|
|
204
|
+
|
|
205
|
+
# 指定輸出格式
|
|
206
|
+
slack-cli unread --format json
|
|
207
|
+
slack-cli unread --format simple
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 搜尋訊息
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
# 基本搜尋
|
|
214
|
+
slack-cli search -q "deploy error"
|
|
215
|
+
|
|
216
|
+
# 依時間排序(最新優先)
|
|
217
|
+
slack-cli search -q "meeting" --sort timestamp
|
|
218
|
+
|
|
219
|
+
# 依時間排序(最舊優先)
|
|
220
|
+
slack-cli search -q "release" --sort timestamp --sort-dir asc
|
|
221
|
+
|
|
222
|
+
# 限制每頁筆數
|
|
223
|
+
slack-cli search -q "bug fix" -n 50
|
|
224
|
+
|
|
225
|
+
# 翻頁
|
|
226
|
+
slack-cli search -q "deploy" --page 2
|
|
227
|
+
|
|
228
|
+
# 使用 Slack 搜尋修飾詞
|
|
229
|
+
slack-cli search -q "in:general from:@alice deploy"
|
|
230
|
+
|
|
231
|
+
# 指定輸出格式
|
|
232
|
+
slack-cli search -q "error" --format json
|
|
233
|
+
slack-cli search -q "error" --format simple
|
|
234
|
+
|
|
235
|
+
# 使用指定 profile
|
|
236
|
+
slack-cli search -q "release" --profile work
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### 編輯訊息
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
# 編輯已發送的訊息
|
|
243
|
+
slack-cli edit -c general --ts 1234567890.123456 -m "修正後的訊息"
|
|
244
|
+
|
|
245
|
+
# 使用指定 profile
|
|
246
|
+
slack-cli edit -c general --ts 1234567890.123456 -m "修正錯字" --profile work
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### 刪除訊息
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
# 刪除訊息
|
|
253
|
+
slack-cli delete -c general --ts 1234567890.123456
|
|
254
|
+
|
|
255
|
+
# 使用指定 profile
|
|
256
|
+
slack-cli delete -c general --ts 1234567890.123456 --profile work
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### 上傳檔案
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
# 上傳檔案
|
|
263
|
+
slack-cli upload -c general -f ./report.csv
|
|
264
|
+
|
|
265
|
+
# 上傳並附上標題與說明
|
|
266
|
+
slack-cli upload -c general -f ./report.csv --title "每日報表" -m "報表附上"
|
|
267
|
+
|
|
268
|
+
# 上傳文字片段
|
|
269
|
+
slack-cli upload -c general --content 'console.log("hello")' --filename snippet.js --filetype javascript
|
|
270
|
+
|
|
271
|
+
# 在 thread 中上傳
|
|
272
|
+
slack-cli upload -c general -f ./logs.txt -t 1234567890.123456
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### 表情符號反應
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
# 新增反應
|
|
279
|
+
slack-cli reaction add -c general -t 1234567890.123456 -e thumbsup
|
|
280
|
+
|
|
281
|
+
# 移除反應
|
|
282
|
+
slack-cli reaction remove -c general -t 1234567890.123456 -e thumbsup
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### 釘選
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
# 釘選訊息
|
|
289
|
+
slack-cli pin add -c general -t 1234567890.123456
|
|
290
|
+
|
|
291
|
+
# 取消釘選
|
|
292
|
+
slack-cli pin remove -c general -t 1234567890.123456
|
|
293
|
+
|
|
294
|
+
# 列出頻道釘選項目
|
|
295
|
+
slack-cli pin list -c general
|
|
296
|
+
|
|
297
|
+
# 指定輸出格式
|
|
298
|
+
slack-cli pin list -c general --format json
|
|
299
|
+
slack-cli pin list -c general --format simple
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### 使用者
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
# 列出工作區使用者
|
|
306
|
+
slack-cli users list
|
|
307
|
+
|
|
308
|
+
# 限制數量
|
|
309
|
+
slack-cli users list --limit 50
|
|
310
|
+
|
|
311
|
+
# 指定輸出格式
|
|
312
|
+
slack-cli users list --format json
|
|
313
|
+
slack-cli users list --format simple
|
|
314
|
+
|
|
315
|
+
# 查詢指定使用者詳細資訊
|
|
316
|
+
slack-cli users info --id U01ABCDEF
|
|
317
|
+
|
|
318
|
+
# 依 Email 查詢使用者
|
|
319
|
+
slack-cli users lookup --email user@example.com
|
|
320
|
+
|
|
321
|
+
# 使用指定 profile
|
|
322
|
+
slack-cli users list --profile work
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### 排程訊息
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
# 列出排程訊息
|
|
329
|
+
slack-cli scheduled list
|
|
330
|
+
|
|
331
|
+
# 依頻道篩選
|
|
332
|
+
slack-cli scheduled list -c general
|
|
333
|
+
|
|
334
|
+
# 限制筆數
|
|
335
|
+
slack-cli scheduled list --limit 20
|
|
336
|
+
|
|
337
|
+
# 指定輸出格式
|
|
338
|
+
slack-cli scheduled list --format json
|
|
339
|
+
slack-cli scheduled list --format simple
|
|
340
|
+
|
|
341
|
+
# 取消排程訊息
|
|
342
|
+
slack-cli scheduled cancel -c general --id Q1298393284
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### Canvas
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
# 讀取 Canvas 區塊
|
|
349
|
+
slack-cli canvas read -i F01234567890
|
|
350
|
+
|
|
351
|
+
# 指定輸出格式
|
|
352
|
+
slack-cli canvas read -i F01234567890 --format json
|
|
353
|
+
slack-cli canvas read -i F01234567890 --format simple
|
|
354
|
+
|
|
355
|
+
# 列出頻道連結的 Canvas
|
|
356
|
+
slack-cli canvas list -c general
|
|
357
|
+
|
|
358
|
+
# 指定輸出格式
|
|
359
|
+
slack-cli canvas list -c general --format json
|
|
360
|
+
slack-cli canvas list -c general --format simple
|
|
361
|
+
|
|
362
|
+
# 使用指定 profile
|
|
363
|
+
slack-cli canvas read -i F01234567890 --profile work
|
|
364
|
+
slack-cli canvas list -c general --profile work
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### 其他指令
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
# 顯示說明
|
|
371
|
+
slack-cli --help
|
|
372
|
+
|
|
373
|
+
# 顯示版本
|
|
374
|
+
slack-cli --version
|
|
375
|
+
|
|
376
|
+
# 顯示目前設定
|
|
377
|
+
slack-cli config get
|
|
378
|
+
|
|
379
|
+
# 更新預設 profile 的 token
|
|
380
|
+
printf '%s\n' "$NEW_TOKEN" | slack-cli config set --token-stdin
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
## 選項說明
|
|
384
|
+
|
|
385
|
+
### 全域選項
|
|
386
|
+
|
|
387
|
+
| 選項 | 簡短 | 說明 |
|
|
388
|
+
| --------- | ---- | ------------------------- |
|
|
389
|
+
| --profile | -p | 使用指定的工作區 profile |
|
|
390
|
+
|
|
391
|
+
### send 指令
|
|
392
|
+
|
|
393
|
+
| 選項 | 簡短 | 說明 |
|
|
394
|
+
| --------- | ---- | -------------------------------------- |
|
|
395
|
+
| --channel | -c | 目標頻道名稱或 ID(必填) |
|
|
396
|
+
| --message | -m | 要發送的訊息 |
|
|
397
|
+
| --file | -f | 含有訊息內容的檔案 |
|
|
398
|
+
| --thread | -t | 要回覆的 thread timestamp |
|
|
399
|
+
| --at | | 排程時間(Unix 秒或 ISO 8601) |
|
|
400
|
+
| --after | | N 分鐘後發送 |
|
|
401
|
+
|
|
402
|
+
### channels 指令
|
|
403
|
+
|
|
404
|
+
| 選項 | 簡短 | 說明 |
|
|
405
|
+
| ------------------ | ---- | ----------------------------------------------------------- |
|
|
406
|
+
| --type | | 頻道類型:public, private, im, mpim, all(預設:public) |
|
|
407
|
+
| --include-archived | | 包含已封存頻道 |
|
|
408
|
+
| --format | | 輸出格式:table, simple, json(預設:table) |
|
|
409
|
+
| --limit | | 最大顯示數量(預設:100) |
|
|
410
|
+
|
|
411
|
+
### history 指令
|
|
412
|
+
|
|
413
|
+
| 選項 | 簡短 | 說明 |
|
|
414
|
+
| ------------- | ---- | ------------------------------------------------------------------- |
|
|
415
|
+
| --channel | -c | 目標頻道名稱或 ID(未使用 --url 時必填) |
|
|
416
|
+
| --url | -u | Slack thread URL(自動解析 channel 與 thread_ts) |
|
|
417
|
+
| --number | -n | 取得訊息筆數(預設:10) |
|
|
418
|
+
| --since | | 取得指定日期後的訊息(YYYY-MM-DD HH:MM:SS,本地時間) |
|
|
419
|
+
| --thread | -t | Thread timestamp,取得完整 thread 對話 |
|
|
420
|
+
| --attachments | -a | 下載訊息附帶的檔案附件 |
|
|
421
|
+
| --output | -o | 下載附件的目錄(需搭配 -a;預設為 /tmp/slack-files/…) |
|
|
422
|
+
| --with-link | | 每則訊息附上永久連結 |
|
|
423
|
+
| --format | | 輸出格式:table, simple, json(預設:table) |
|
|
424
|
+
|
|
425
|
+
### unread 指令
|
|
426
|
+
|
|
427
|
+
| 選項 | 簡短 | 說明 |
|
|
428
|
+
| ------------ | ---- | ------------------------------------------- |
|
|
429
|
+
| --channel | -c | 指定頻道 |
|
|
430
|
+
| --format | | 輸出格式:table, simple, json(預設:table) |
|
|
431
|
+
| --count-only | | 只顯示未讀數量 |
|
|
432
|
+
| --limit | | 最大顯示頻道數(預設:50) |
|
|
433
|
+
| --mark-read | | 取得後標記為已讀 |
|
|
434
|
+
|
|
435
|
+
### search 指令
|
|
436
|
+
|
|
437
|
+
| 選項 | 簡短 | 說明 |
|
|
438
|
+
| ---------- | ---- | ------------------------------------------- |
|
|
439
|
+
| --query | -q | 搜尋關鍵字(必填) |
|
|
440
|
+
| --sort | | 排序依據:score 或 timestamp(預設:score) |
|
|
441
|
+
| --sort-dir | | 排序方向:asc 或 desc(預設:desc) |
|
|
442
|
+
| --number | -n | 每頁筆數,1-100(預設:20) |
|
|
443
|
+
| --page | | 頁碼,1-100(預設:1) |
|
|
444
|
+
| --format | | 輸出格式:table, simple, json(預設:table) |
|
|
445
|
+
|
|
446
|
+
### edit 指令
|
|
447
|
+
|
|
448
|
+
| 選項 | 簡短 | 說明 |
|
|
449
|
+
| --------- | ---- | -------------------------- |
|
|
450
|
+
| --channel | -c | 目標頻道名稱或 ID(必填) |
|
|
451
|
+
| --ts | | 要編輯的訊息 timestamp(必填)|
|
|
452
|
+
| --message | -m | 新訊息內容(必填) |
|
|
453
|
+
|
|
454
|
+
### delete 指令
|
|
455
|
+
|
|
456
|
+
| 選項 | 簡短 | 說明 |
|
|
457
|
+
| --------- | ---- | -------------------------- |
|
|
458
|
+
| --channel | -c | 目標頻道名稱或 ID(必填) |
|
|
459
|
+
| --ts | | 要刪除的訊息 timestamp(必填)|
|
|
460
|
+
|
|
461
|
+
### upload 指令
|
|
462
|
+
|
|
463
|
+
| 選項 | 簡短 | 說明 |
|
|
464
|
+
| ---------- | ---- | --------------------------------- |
|
|
465
|
+
| --channel | -c | 目標頻道名稱或 ID(必填) |
|
|
466
|
+
| --file | -f | 要上傳的檔案路徑 |
|
|
467
|
+
| --content | | 要上傳的文字片段內容 |
|
|
468
|
+
| --filename | | 覆寫檔案名稱 |
|
|
469
|
+
| --title | | 檔案標題 |
|
|
470
|
+
| --message | -m | 附帶說明訊息 |
|
|
471
|
+
| --filetype | | 片段類型(如 python, javascript) |
|
|
472
|
+
| --thread | -t | 要回覆的 thread timestamp |
|
|
473
|
+
|
|
474
|
+
### reaction 指令
|
|
475
|
+
|
|
476
|
+
子指令:`add`、`remove`
|
|
477
|
+
|
|
478
|
+
| 選項 | 簡短 | 說明 |
|
|
479
|
+
| ----------- | ---- | ----------------------- |
|
|
480
|
+
| --channel | -c | 頻道名稱或 ID(必填) |
|
|
481
|
+
| --timestamp | -t | 訊息 timestamp(必填) |
|
|
482
|
+
| --emoji | -e | Emoji 名稱,不含冒號(必填)|
|
|
483
|
+
|
|
484
|
+
### pin 指令
|
|
485
|
+
|
|
486
|
+
子指令:`add`、`remove`、`list`
|
|
487
|
+
|
|
488
|
+
#### pin add / pin remove
|
|
489
|
+
|
|
490
|
+
| 選項 | 簡短 | 說明 |
|
|
491
|
+
| ----------- | ---- | ----------------------- |
|
|
492
|
+
| --channel | -c | 頻道名稱或 ID(必填) |
|
|
493
|
+
| --timestamp | -t | 訊息 timestamp(必填) |
|
|
494
|
+
|
|
495
|
+
#### pin list
|
|
496
|
+
|
|
497
|
+
| 選項 | 簡短 | 說明 |
|
|
498
|
+
| --------- | ---- | ------------------------------------------- |
|
|
499
|
+
| --channel | -c | 頻道名稱或 ID(必填) |
|
|
500
|
+
| --format | | 輸出格式:table, simple, json(預設:table) |
|
|
501
|
+
|
|
502
|
+
### users 指令
|
|
503
|
+
|
|
504
|
+
子指令:`list`、`info`、`lookup`
|
|
505
|
+
|
|
506
|
+
#### users list
|
|
507
|
+
|
|
508
|
+
| 選項 | 簡短 | 說明 |
|
|
509
|
+
| -------- | ---- | ------------------------------------------- |
|
|
510
|
+
| --limit | | 最大列出數量(預設:100) |
|
|
511
|
+
| --format | | 輸出格式:table, simple, json(預設:table) |
|
|
512
|
+
|
|
513
|
+
#### users info
|
|
514
|
+
|
|
515
|
+
| 選項 | 簡短 | 說明 |
|
|
516
|
+
| -------- | ---- | ------------------------------------------- |
|
|
517
|
+
| --id | | 使用者 ID(必填) |
|
|
518
|
+
| --format | | 輸出格式:table, simple, json(預設:table) |
|
|
519
|
+
|
|
520
|
+
#### users lookup
|
|
521
|
+
|
|
522
|
+
| 選項 | 簡短 | 說明 |
|
|
523
|
+
| -------- | ---- | ------------------------------------------- |
|
|
524
|
+
| --email | | 要查詢的 Email(必填) |
|
|
525
|
+
| --format | | 輸出格式:table, simple, json(預設:table) |
|
|
526
|
+
|
|
527
|
+
### scheduled 指令
|
|
528
|
+
|
|
529
|
+
子指令:`list`、`cancel`
|
|
530
|
+
|
|
531
|
+
#### scheduled list
|
|
532
|
+
|
|
533
|
+
| 選項 | 簡短 | 說明 |
|
|
534
|
+
| --------- | ---- | ------------------------------------------- |
|
|
535
|
+
| --channel | -c | 依頻道篩選 |
|
|
536
|
+
| --limit | | 最大顯示筆數(預設:50) |
|
|
537
|
+
| --format | | 輸出格式:table, simple, json(預設:table) |
|
|
538
|
+
|
|
539
|
+
#### scheduled cancel
|
|
540
|
+
|
|
541
|
+
| 選項 | 簡短 | 說明 |
|
|
542
|
+
| --------- | ---- | ----------------------- |
|
|
543
|
+
| --channel | -c | 頻道名稱或 ID(必填) |
|
|
544
|
+
| --id | | 排程訊息 ID(必填) |
|
|
545
|
+
|
|
546
|
+
### canvas 指令
|
|
547
|
+
|
|
548
|
+
子指令:`read`、`list`
|
|
549
|
+
|
|
550
|
+
#### canvas read
|
|
551
|
+
|
|
552
|
+
| 選項 | 簡短 | 說明 |
|
|
553
|
+
| -------- | ---- | ------------------------------------------- |
|
|
554
|
+
| --id | -i | Canvas ID(必填) |
|
|
555
|
+
| --format | | 輸出格式:table, simple, json(預設:table) |
|
|
556
|
+
|
|
557
|
+
#### canvas list
|
|
558
|
+
|
|
559
|
+
| 選項 | 簡短 | 說明 |
|
|
560
|
+
| --------- | ---- | ------------------------------------------- |
|
|
561
|
+
| --channel | -c | 頻道名稱或 ID(必填) |
|
|
562
|
+
| --format | | 輸出格式:table, simple, json(預設:table) |
|
|
563
|
+
|
|
564
|
+
## 所需權限
|
|
565
|
+
|
|
566
|
+
Slack API Token 需要以下 scopes:
|
|
567
|
+
|
|
568
|
+
- `chat:write` - 發送與編輯訊息
|
|
569
|
+
- `channels:read` - 列出公開頻道與取得頻道資訊
|
|
570
|
+
- `channels:write` - 設定公開頻道的主題/用途
|
|
571
|
+
- `groups:read` - 列出私有頻道與取得頻道資訊
|
|
572
|
+
- `groups:write` - 設定私有頻道的主題/用途
|
|
573
|
+
- `channels:history` - 讀取頻道訊息歷史
|
|
574
|
+
- `groups:history` - 讀取私有頻道訊息歷史
|
|
575
|
+
- `im:history` - 讀取私訊歷史
|
|
576
|
+
- `im:write` - 開啟 DM 頻道(供 --user/--email 使用)
|
|
577
|
+
- `users:read` - 取得使用者資訊
|
|
578
|
+
- `users:read.email` - 依 Email 查詢使用者
|
|
579
|
+
- `search:read` - 搜尋訊息(僅支援 user token,不支援 bot token)
|
|
580
|
+
- `reactions:write` - 新增與移除反應
|
|
581
|
+
- `pins:read` - 列出頻道釘選項目
|
|
582
|
+
- `pins:write` - 釘選與取消釘選訊息
|
|
583
|
+
- `files:write` - 上傳檔案與片段
|
|
584
|
+
- `files:read` - 列出頻道連結的 Canvas
|
|
585
|
+
- `canvases:read` - 讀取 Canvas 區塊
|
|
586
|
+
|
|
587
|
+
## 進階功能
|
|
588
|
+
|
|
589
|
+
### 速率限制
|
|
590
|
+
|
|
591
|
+
CLI 內建速率限制以因應 Slack API 限制:
|
|
592
|
+
|
|
593
|
+
- 並發請求數:3
|
|
594
|
+
- 自動指數退避重試(最多 3 次)
|
|
595
|
+
- 速率限制錯誤的優雅處理
|
|
596
|
+
|
|
597
|
+
### 輸出格式
|
|
598
|
+
|
|
599
|
+
大多數指令支援多種輸出格式:
|
|
600
|
+
|
|
601
|
+
- `table`(預設)- 人類可讀的表格格式
|
|
602
|
+
- `simple` - 簡化文字輸出
|
|
603
|
+
- `json` - 機器可讀的 JSON 格式
|
|
604
|
+
|
|
605
|
+
### Markdown 支援
|
|
606
|
+
|
|
607
|
+
`send` 指令發送的訊息自動支援 Slack 的 mrkdwn 格式:
|
|
608
|
+
|
|
609
|
+
- `*粗體*`
|
|
610
|
+
- `_斜體_`
|
|
611
|
+
- `~刪除線~`
|
|
612
|
+
- `` `行內程式碼` ``
|
|
613
|
+
- ` ```程式碼區塊``` `
|
|
614
|
+
- 連結會自動轉為超連結
|
|
615
|
+
- 使用者提及:`<@USER_ID>`
|
|
616
|
+
- 頻道提及:`<#CHANNEL_ID>`
|
|
617
|
+
|
|
618
|
+
## 授權
|
|
619
|
+
|
|
620
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bookmark.d.ts","sourceRoot":"","sources":["../../src/commands/bookmark.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,oBAAoB,IAAI,OAAO,CA8D9C"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.setupBookmarkCommand = setupBookmarkCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const commander_1 = require("commander");
|
|
9
|
+
const client_factory_1 = require("../utils/client-factory");
|
|
10
|
+
const command_wrapper_1 = require("../utils/command-wrapper");
|
|
11
|
+
const bookmark_formatters_1 = require("../utils/formatters/bookmark-formatters");
|
|
12
|
+
const option_parsers_1 = require("../utils/option-parsers");
|
|
13
|
+
const validators_1 = require("../utils/validators");
|
|
14
|
+
function setupBookmarkCommand() {
|
|
15
|
+
const bookmarkCommand = new commander_1.Command('bookmark').description('Manage saved items (あとで読む)');
|
|
16
|
+
const addCommand = new commander_1.Command('add')
|
|
17
|
+
.description('Save a message for later')
|
|
18
|
+
.requiredOption('-c, --channel <channel>', 'Channel ID')
|
|
19
|
+
.requiredOption('--ts <timestamp>', 'Message timestamp')
|
|
20
|
+
.option('--profile <profile>', 'Use specific workspace profile')
|
|
21
|
+
.action((0, command_wrapper_1.wrapCommand)(async (options) => {
|
|
22
|
+
const profile = (0, option_parsers_1.parseProfile)(options.profile);
|
|
23
|
+
const client = await (0, client_factory_1.createSlackClient)(profile);
|
|
24
|
+
await client.addStar(options.channel, options.ts);
|
|
25
|
+
console.log(chalk_1.default.green(`✓ Saved message ${options.ts} in ${options.channel}`));
|
|
26
|
+
}));
|
|
27
|
+
const listCommand = new commander_1.Command('list')
|
|
28
|
+
.description('List saved items')
|
|
29
|
+
.option('--limit <limit>', 'Number of items to display', '100')
|
|
30
|
+
.option('--format <format>', 'Output format: table, simple, json', 'table')
|
|
31
|
+
.option('--profile <profile>', 'Use specific workspace profile')
|
|
32
|
+
.hook('preAction', (0, validators_1.createValidationHook)([validators_1.optionValidators.format]))
|
|
33
|
+
.action((0, command_wrapper_1.wrapCommand)(async (options) => {
|
|
34
|
+
const profile = (0, option_parsers_1.parseProfile)(options.profile);
|
|
35
|
+
const client = await (0, client_factory_1.createSlackClient)(profile);
|
|
36
|
+
const limit = (0, option_parsers_1.parseLimit)(options.limit, 100);
|
|
37
|
+
const result = await client.listStars(limit);
|
|
38
|
+
if (result.items.length === 0) {
|
|
39
|
+
console.log('No saved items found');
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const format = (0, option_parsers_1.parseFormat)(options.format);
|
|
43
|
+
const formatter = (0, bookmark_formatters_1.createBookmarkFormatter)(format);
|
|
44
|
+
formatter.format({ items: result.items });
|
|
45
|
+
}));
|
|
46
|
+
const removeCommand = new commander_1.Command('remove')
|
|
47
|
+
.description('Remove a saved item')
|
|
48
|
+
.requiredOption('-c, --channel <channel>', 'Channel ID')
|
|
49
|
+
.requiredOption('--ts <timestamp>', 'Message timestamp')
|
|
50
|
+
.option('--profile <profile>', 'Use specific workspace profile')
|
|
51
|
+
.action((0, command_wrapper_1.wrapCommand)(async (options) => {
|
|
52
|
+
const profile = (0, option_parsers_1.parseProfile)(options.profile);
|
|
53
|
+
const client = await (0, client_factory_1.createSlackClient)(profile);
|
|
54
|
+
await client.removeStar(options.channel, options.ts);
|
|
55
|
+
console.log(chalk_1.default.green(`✓ Removed saved item ${options.ts} from ${options.channel}`));
|
|
56
|
+
}));
|
|
57
|
+
bookmarkCommand.addCommand(addCommand);
|
|
58
|
+
bookmarkCommand.addCommand(listCommand);
|
|
59
|
+
bookmarkCommand.addCommand(removeCommand);
|
|
60
|
+
return bookmarkCommand;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=bookmark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bookmark.js","sourceRoot":"","sources":["../../src/commands/bookmark.ts"],"names":[],"mappings":"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"}
|