/
decl.go
202 lines (198 loc) · 5.92 KB
/
decl.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
package commands
import (
"github.com/urfave/cli/v2"
"github.com/xen0n/go-workwx"
)
// InitApp defines the workwxctl CLI.
func InitApp() *cli.App {
return &cli.App{
Name: "workwxctl",
Usage: "企业微信命令行客户端 powered by go-workwx",
Flags: []cli.Flag{
&cli.StringFlag{
Name: flagCorpID,
Usage: "使用 `CORPID` 作为企业 ID",
EnvVars: []string{"WORKWXCTL_CORPID"},
},
&cli.StringFlag{
Name: flagCorpSecret,
Usage: "使用 `SECRET` 作为应用凭证密钥",
EnvVars: []string{"WORKWXCTL_CORPSECRET"},
},
&cli.Int64Flag{
Name: flagAgentID,
Usage: "使用 `AGENTID` 作为企业应用 ID",
EnvVars: []string{"WORKWXCTL_AGENTID"},
},
&cli.StringFlag{
Name: flagWebhookKey,
Usage: "使用 `KEY` 作为群机器人 webhook key",
EnvVars: []string{"WORKWXCTL_WEBHOOK_KEY"},
},
&cli.StringFlag{
Name: flagQyapiHostOverride,
Usage: "使用 `HOST` 覆盖默认企业微信 API 地址",
EnvVars: []string{"WORKWXCTL_QYAPI_HOST_OVERRIDE"},
},
&cli.StringFlag{
Name: flagTLSKeyLogFile,
Usage: "将 HTTPS 会话所用密钥写入 `LOGFILE` 以便 Wireshark 等工具读取",
EnvVars: []string{"WORKWXCTL_TLS_KEY_LOGFILE"},
},
},
Commands: []*cli.Command{
{
Name: "user-get",
Usage: "读取成员",
Action: cmdUserGet,
},
{
Name: "user-list-by-dept",
Usage: "获取部门成员详情",
Action: cmdUserListByDept,
},
{
Name: "dept-list",
Usage: "获取部门列表",
Action: cmdDeptList,
},
{
Name: "appchat-create",
Usage: "创建群聊会话",
Action: cmdAppchatCreate,
Flags: []cli.Flag{
&cli.StringFlag{
Name: flagChatID,
Usage: "欲建立的群聊 chatid,不能与已有的群重复,最长32个字符。只允许字符0-9及字母a-zA-Z。如果不填,系统会随机生成群id",
},
&cli.StringFlag{
Name: flagName,
Usage: "群聊名。最多50个utf8字符,超过将截断",
},
&cli.StringFlag{
Name: flagOwner,
Usage: "群主的 ID。如果不指定,系统会随机从群成员列表中选一人作为群主",
},
&cli.StringSliceFlag{
Name: flagUser,
Aliases: []string{flagToUserShort},
Usage: "群成员 ID,可重复指定。至少2人,至多2000人",
},
},
},
{
Name: "appchat-get",
Usage: "获取群聊会话",
Action: cmdAppchatGet,
},
{
Name: "send-message",
Usage: "发送消息",
Action: cmdSendMessage,
Flags: []cli.Flag{
&cli.StringFlag{
Name: flagMessageType,
Usage: "发送消息的类型: text, image, voice, video, file, textcard, news, mpnews, markdown",
},
&cli.StringSliceFlag{
Name: flagToUser,
Aliases: []string{flagToUserShort},
Usage: "收信用户 ID (可指定多次)",
},
&cli.StringSliceFlag{
Name: flagToParty,
Aliases: []string{flagToPartyShort},
Usage: "收信部门 ID (可指定多次)",
},
&cli.StringSliceFlag{
Name: flagToTag,
Aliases: []string{flagToTagShort},
Usage: "收信标签 ID (可指定多次)",
},
&cli.StringFlag{
Name: flagToChat,
Aliases: []string{flagToChatShort},
Usage: "收信群聊 chatid (不可与其他收信人选项同时指定)",
},
&cli.BoolFlag{
Name: flagSafe,
Usage: "作为保密消息发送",
},
// 发消息参数
&cli.StringFlag{
Name: flagMediaID,
Usage: "图片媒体文件id,可以调用上传临时素材接口获取",
},
&cli.StringFlag{
Name: flagThumbMediaID,
Usage: "图文消息缩略图的media_id, 可以通过素材管理接口获得。",
},
&cli.StringFlag{
Name: flagAuthor,
Usage: "图文消息的作者,不超过64个字节",
},
&cli.StringFlag{
Name: flagDescription,
Usage: "描述,不超过512个字节,超过会自动截断",
},
&cli.StringFlag{
Name: flagTitle,
Usage: "标题,不超过128个字节,超过会自动截断",
},
&cli.StringFlag{
Name: flagURL,
Usage: "点击后跳转的链接。",
},
&cli.StringFlag{
Name: flagPicURL,
Usage: "图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图1068*455,小图150*150。",
},
&cli.StringFlag{
Name: flagButtonText,
Usage: "按钮文字。 默认为“详情”, 不超过4个文字,超过自动截断。",
},
&cli.StringFlag{
Name: flagSourceContentURL,
Usage: "图文消息点击“阅读原文”之后的页面链接",
},
&cli.StringFlag{
Name: flagDigest,
Usage: "图文消息的描述,不超过512个字节,超过会自动截断",
},
},
},
{
Name: "upload-temp-media",
Usage: "上传临时素材",
Action: cmdUploadTempMedia,
Flags: []cli.Flag{
&cli.StringFlag{
Name: flagMediaType,
Usage: "媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file)",
},
},
},
{
Name: "webhook-send-message",
Usage: "使用群机器人接口发送消息",
Action: cmdWebhookSendMessage,
Flags: []cli.Flag{
&cli.StringFlag{
Name: flagMessageType,
Usage: "发送消息的类型: text, markdown",
},
&cli.StringSliceFlag{
Name: flagMentionUser,
Aliases: []string{flagToUserShort},
Usage: "需要被提醒的用户 ID (可指定多次), 特殊值 '" + workwx.MentionAll + "' 表示提醒所有人",
},
&cli.StringSliceFlag{
Name: flagMentionMobile,
Aliases: []string{flagMentionMobileShort},
Usage: "需要被提醒的用户手机号 (可指定多次), 特殊值 '" + workwx.MentionAll + "' 表示提醒所有人",
},
},
},
},
}
}