-
Notifications
You must be signed in to change notification settings - Fork 170
/
webhook_message.go
70 lines (59 loc) · 1.7 KB
/
webhook_message.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
package workwx
// MentionAll 表示提醒所有人(“@所有人”)的特殊标记
const MentionAll = "@all"
// Mentions 群机器人消息的提醒设置
type Mentions struct {
// UserIDs userid 的列表,提醒群中的指定成员(@某个成员),MentionAll 表示提醒所有人
//
// 如果开发者获取不到 userid,可使用 Mobiles
UserIDs []string
// Mobiles 手机号列表,提醒手机号对应的群成员(@某个成员),MentionAll 表示提醒所有人
//
// 如果开发者获取不到 userid,可使用该列表,否则可使用 UserIDs
Mobiles []string
}
// SendTextMessage 发送文本消息
func (c *WebhookClient) SendTextMessage(
content string,
mentions *Mentions,
) error {
params := map[string]any{
"content": content,
}
if mentions != nil {
if len(mentions.UserIDs) > 0 {
params["mentioned_list"] = mentions.UserIDs
}
if len(mentions.Mobiles) > 0 {
params["mentioned_mobile_list"] = mentions.Mobiles
}
}
return c.sendMessage("text", params)
}
// SendMarkdownMessage 发送 Markdown 消息
//
// NOTE: 使用群机器人接口发送 Markdown 消息时,不能传递 Mentions 结构体,而需要使用
// `<@userid>` 的特殊扩展语法来表示 at 给定的 userid。
func (c *WebhookClient) SendMarkdownMessage(
content string,
) error {
params := map[string]any{
"content": content,
}
return c.sendMessage("markdown", params)
}
// sendMessage 发送消息底层接口
func (c *WebhookClient) sendMessage(
msgtype string,
content map[string]any,
) error {
req := map[string]any{
"msgtype": msgtype,
msgtype: content,
}
err := c.executeQyapiJSONPost("/cgi-bin/webhook/send", req, nil)
if err != nil {
return err
}
return nil
}