2026-07-26 22:19:41 +08:00
|
|
|
// Package dingtalk 提供钉钉自定义机器人的提醒与规则执行能力
|
2026-04-05 10:36:22 +08:00
|
|
|
package dingtalk
|
|
|
|
|
|
2026-04-05 22:28:38 +08:00
|
|
|
import (
|
2026-07-26 22:19:41 +08:00
|
|
|
"fmt"
|
2026-04-05 10:36:22 +08:00
|
|
|
|
2026-04-05 22:28:38 +08:00
|
|
|
"github.com/CatchZeng/dingtalk/pkg/dingtalk"
|
|
|
|
|
"github.com/ssdomei232/goodBaby/model"
|
|
|
|
|
)
|
|
|
|
|
|
2026-07-26 22:19:41 +08:00
|
|
|
// SendDingTalkMsg 使用用户配置的钉钉机器人发送提醒
|
|
|
|
|
//
|
|
|
|
|
// 用户没有配置钉钉机器人时返回 ErrNoUserConfig
|
|
|
|
|
func SendDingTalkMsg(user *model.User, title string, msg string) error {
|
|
|
|
|
config := getDingTalkConfigFromUser(user)
|
|
|
|
|
if config == nil {
|
|
|
|
|
return ErrNoUserConfig
|
2026-04-05 22:28:38 +08:00
|
|
|
}
|
2026-07-26 22:19:41 +08:00
|
|
|
return send(config, title, msg)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ErrNoUserConfig 表示用户没有配置钉钉提醒
|
|
|
|
|
var ErrNoUserConfig = fmt.Errorf("用户未配置钉钉机器人")
|
|
|
|
|
|
|
|
|
|
func send(config *DingTalkConfig, title, msg string) error {
|
|
|
|
|
client := dingtalk.NewClient(config.AccessToken, config.Secret)
|
|
|
|
|
message := dingtalk.NewMarkdownMessage().SetMarkdown(title, msg)
|
|
|
|
|
|
|
|
|
|
if _, _, err := client.Send(message); err != nil {
|
|
|
|
|
return fmt.Errorf("发送钉钉消息失败: %w", err)
|
|
|
|
|
}
|
|
|
|
|
return nil
|
2026-04-05 22:28:38 +08:00
|
|
|
}
|