Compare commits

...

10 Commits

8 changed files with 83 additions and 4 deletions

View File

@@ -19,8 +19,8 @@ type changeStatusParam struct {
// changeUseAiModelParam
// @description: 修改使用的AI模型用的参数集
type changeUseAiModelParam struct {
WxId string `json:"wxid" binding:"required"` // 群Id或微信Id
Model string `json:"model" binding:"required"` // 模型代码
WxId string `json:"wxid" binding:"required"` // 群Id或微信Id
Model string `json:"model"` // 模型代码
}
// autoClearMembers

View File

@@ -1,4 +1,7 @@
system:
# 每日新闻接口 Token
# 获取地址: https://admin.alapi.cn/api_manager/token_manager
alApiToken: xxx
# 添加新好友或群之后通知给指定的人
newFriendNotify:
enable: true

View File

@@ -2,6 +2,7 @@ package config
// 系统配置
type system struct {
AlApiToken string `json:"alApiToken" yaml:"alApiToken"` // AL API Token
NewFriendNotify newFriendNotify `json:"newFriendNotify" yaml:"newFriendNotify"` // 新好友通知
DefaultRule defaultRule `json:"defaultRule" yaml:"defaultRule"` // 默认规则
}

View File

@@ -32,6 +32,39 @@ type systemMsgDataXml struct {
Type string `xml:"type,attr"`
}
// appMsgDataXml
// @description: 微信app消息的xml结构
type appMsgDataXml struct {
XMLName xml.Name `xml:"msg"`
Text string `xml:",chardata"`
AppMsg struct {
Text string `xml:",chardata"`
Appid string `xml:"appid,attr"`
SdkVer string `xml:"sdkver,attr"`
Title string `xml:"title"`
Des string `xml:"des"`
Action string `xml:"action"`
Type string `xml:"type"`
ShowType string `xml:"showtype"`
Content string `xml:"content"`
URL string `xml:"url"`
ThumbUrl string `xml:"thumburl"`
LowUrl string `xml:"lowurl"`
AppAttach struct {
Text string `xml:",chardata"`
TotalLen string `xml:"totallen"`
AttachId string `xml:"attachid"`
FileExt string `xml:"fileext"`
} `xml:"appattach"`
ExtInfo string `xml:"extinfo"`
} `xml:"appmsg"`
AppInfo struct {
Text string `xml:",chardata"`
Version string `xml:"version"`
AppName string `xml:"appname"`
} `xml:"appinfo"`
}
// atMsgDataXml
// @description: 微信@消息的xml结构
type atMsgDataXml struct {
@@ -163,3 +196,20 @@ func (m Message) CleanContentStartWith(prefix string) bool {
return strings.HasPrefix(content, prefix)
}
// IsInvitationJoinGroup
// @description: 是否是邀请入群消息
// @receiver m
// @return bool 是否是邀请入群消息
// @return string 邀请入群消息内容
func (m Message) IsInvitationJoinGroup() (flag bool, str string) {
if m.Type == types.MsgTypeApp {
// 解析xml
var md appMsgDataXml
if err := xml.Unmarshal([]byte(m.Content), &md); err != nil {
return
}
return md.AppMsg.Type == "5" && strings.Contains(md.AppMsg.Content, "邀请你加入群聊"), md.AppMsg.Des
}
return
}

View File

@@ -3,8 +3,10 @@ package mq
import (
"encoding/json"
"go-wechat/common/current"
"go-wechat/config"
"go-wechat/model"
"go-wechat/types"
"go-wechat/utils"
"log"
"strings"
)
@@ -37,6 +39,16 @@ func parse(msg []byte) {
}
log.Printf("收到新微信消息\n消息来源: %s\n群成员: %s\n消息类型: %v\n消息内容: %s", m.FromUser, m.GroupUser, m.Type, m.Content)
// 如果是邀请进群,推送到配置的用户
if flag, dec := m.IsInvitationJoinGroup(); flag {
for _, user := range config.Conf.System.NewFriendNotify.ToUser {
if user != "" {
// 发送一条新消息
utils.SendMessage(user, "", dec, 0)
}
}
}
// 插件不为空,开始执行
if p := current.GetRobotMessageHandler(); p != nil {
p(&m)

View File

@@ -24,7 +24,7 @@ func DailyNews() {
return
}
newsStr := fmt.Sprintf("#每日早报\n\n又是新的一天了让我们康康一觉醒来世界又发生了哪些变化~\n\n%s", strings.Join(news, "\n"))
newsStr := fmt.Sprintf("#每日早报\n\n又是新的一天了让我们康康一觉醒来世界又发生了哪些变化~\n\n%s", strings.Join(news, "\n \n"))
// 循环发送新闻
for _, group := range groups {

View File

@@ -3,8 +3,10 @@ package tcpserver
import (
"encoding/json"
"go-wechat/common/current"
"go-wechat/config"
"go-wechat/model"
"go-wechat/types"
"go-wechat/utils"
"log"
"net"
"strings"
@@ -38,6 +40,16 @@ func parse(remoteAddr net.Addr, msg []byte) {
}
log.Printf("%s\n消息来源: %s\n群成员: %s\n消息类型: %v\n消息内容: %s", remoteAddr, m.FromUser, m.GroupUser, m.Type, m.Content)
// 如果是邀请进群,推送到配置的用户
if flag, dec := m.IsInvitationJoinGroup(); flag {
for _, user := range config.Conf.System.NewFriendNotify.ToUser {
if user != "" {
// 发送一条新消息
utils.SendMessage(user, "", dec, 0)
}
}
}
// 插件不为空,开始执行
if p := current.GetRobotMessageHandler(); p != nil {
p(&m)

View File

@@ -2,6 +2,7 @@ package utils
import (
"github.com/go-resty/resty/v2"
"go-wechat/config"
"go-wechat/model"
"log"
)
@@ -33,7 +34,7 @@ func (news) MorningPost() (records []string) {
res := resty.New()
resp, err := res.R().
SetHeader("Content-Type", "application/json;chartset=utf-8").
SetQueryParam("token", "cFoMZNNBxT4jQovS").
SetQueryParam("token", config.Conf.System.AlApiToken).
SetResult(&newsResp).
Post("https://v2.alapi.cn/api/zaobao")
if err != nil {