添加自定义消息推送
This commit is contained in:
parent
f2dfb8421e
commit
eca573fe05
|
@ -94,6 +94,11 @@ type Config struct {
|
||||||
// 热重载
|
// 热重载
|
||||||
HotReload bool `json:"hot_reload" yaml:"hot_reload" mapstructure:"hot_reload"`
|
HotReload bool `json:"hot_reload" yaml:"hot_reload" mapstructure:"hot_reload"`
|
||||||
|
|
||||||
|
// 自定义消息推送
|
||||||
|
CustomMessage string `json:"custom_message" yaml:"custom_message" mapstructure:"custom_message"`
|
||||||
|
|
||||||
|
CustomCron string `json:"custom_cron" yaml:"custom_cron" mapstructure:"custom_cron"`
|
||||||
|
|
||||||
version string `mapstructure:"version"`
|
version string `mapstructure:"version"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -126,6 +126,11 @@ github_proxy: https://github.com
|
||||||
# 是否开启配置文件热重载 ,在修改配置文件并保存后会自动重启
|
# 是否开启配置文件热重载 ,在修改配置文件并保存后会自动重启
|
||||||
hot_reload: true
|
hot_reload: true
|
||||||
|
|
||||||
|
# 自定义消息推送,会在定时任务执行之前推送信息
|
||||||
|
custom_message: ""
|
||||||
|
# 自定义消息推送定时
|
||||||
|
custom_cron: ""
|
||||||
|
|
||||||
weekly_min_score:
|
weekly_min_score:
|
||||||
|
|
||||||
ji_guang_push:
|
ji_guang_push:
|
||||||
|
|
|
@ -380,7 +380,6 @@ func (c *Core) RespondDaily(user *model.User, model string) {
|
||||||
err := FillBlank(page, tips)
|
err := FillBlank(page, tips)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorln("填空题答题失败" + err.Error())
|
log.Errorln("填空题答题失败" + err.Error())
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
case strings.Contains(categoryText, "多选题"):
|
case strings.Contains(categoryText, "多选题"):
|
||||||
|
|
13
main.go
13
main.go
|
@ -174,6 +174,19 @@ func main() {
|
||||||
}
|
}
|
||||||
getPush := push.GetPush(config)
|
getPush := push.GetPush(config)
|
||||||
getPush("", "flush", "学习强国助手已上线")
|
getPush("", "flush", "学习强国助手已上线")
|
||||||
|
|
||||||
|
if config.CustomCron != "" {
|
||||||
|
c2 := cron.New()
|
||||||
|
_, err := c2.AddFunc(config.CustomCron, func() {
|
||||||
|
getPush("all", "flush", config.CustomMessage)
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
log.Errorln("添加自定义定时消息推送错误" + err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c2.Run()
|
||||||
|
}
|
||||||
|
|
||||||
model.SetPush(getPush)
|
model.SetPush(getPush)
|
||||||
if !config.TG.Enable && config.Cron == "" && !config.Wechat.Enable {
|
if !config.TG.Enable && config.Cron == "" && !config.Wechat.Enable {
|
||||||
log.Infoln("已采用普通学习模式")
|
log.Infoln("已采用普通学习模式")
|
||||||
|
|
59
push/wx.go
59
push/wx.go
|
@ -159,6 +159,26 @@ func initWechat() {
|
||||||
(value.(WechatHandler))(r.FromUserName)
|
(value.(WechatHandler))(r.FromUserName)
|
||||||
}()
|
}()
|
||||||
})
|
})
|
||||||
|
wx.HandleFunc("text", func(wx *mp.WeiXin, w http.ResponseWriter, r *request.WeiXinRequest, timestamp, nonce string) {
|
||||||
|
|
||||||
|
if r.FromUserName != conf.GetConfig().Wechat.SuperOpenID {
|
||||||
|
log.Infoln("收到了微信文本消息,但不是管理员")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msg := strings.SplitN(r.Content, " ", 3)
|
||||||
|
if len(msg) < 3 {
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
if msg[0] == "发送" {
|
||||||
|
if msg[1] == "all" || msg[1] == "所有" {
|
||||||
|
sendMsg("all", msg[2])
|
||||||
|
} else {
|
||||||
|
sendMsg(msg[1], msg[2])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleGetOpenID(id string) {
|
func handleGetOpenID(id string) {
|
||||||
|
@ -211,6 +231,45 @@ func handleRestart(id string) {
|
||||||
// @param message
|
// @param message
|
||||||
//
|
//
|
||||||
func sendMsg(id, message string) {
|
func sendMsg(id, message string) {
|
||||||
|
|
||||||
|
if id == "all" {
|
||||||
|
userList, err := wx.GetUserList("")
|
||||||
|
if err != nil {
|
||||||
|
log.Errorln("获取关注列表错误")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
url := ""
|
||||||
|
color := ""
|
||||||
|
if strings.Contains(message, "$$$") {
|
||||||
|
splits := strings.Split(message, "$$$")
|
||||||
|
message = splits[0]
|
||||||
|
url = splits[1]
|
||||||
|
if len(splits) == 3 {
|
||||||
|
color = splits[2]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, user := range userList.Data.OpenId {
|
||||||
|
m := map[string]interface{}{
|
||||||
|
"data": map[string]string{
|
||||||
|
"value": message,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
data, _ := json.Marshal(m)
|
||||||
|
|
||||||
|
_, err = wx.SendTemplateMessage(&mp.TemplateMessage{
|
||||||
|
ToUser: user,
|
||||||
|
TemplateId: conf.GetConfig().Wechat.NormalTempID,
|
||||||
|
URL: url,
|
||||||
|
TopColor: color,
|
||||||
|
RawJSONData: data,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
log.Errorln("向用户" + user + "推送消息错误")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 登录消息单独采用模板发送
|
// 登录消息单独采用模板发送
|
||||||
if strings.Contains(message, "login.xuexi.cn") {
|
if strings.Contains(message, "login.xuexi.cn") {
|
||||||
_, err := wx.SendTemplateMessage(&mp.TemplateMessage{
|
_, err := wx.SendTemplateMessage(&mp.TemplateMessage{
|
||||||
|
|
Loading…
Reference in New Issue