fonchain-fiee/pkg/service/asChat/robot/rulerList.go

51 lines
1.5 KiB
Go

// Package autoReply -----------------------------
// @file : rulerList.go
// @author : JJXu
// @contact : wavingbear@163.com
// @time : 2025/6/13 16:16
// -------------------------------------------
package robot
import (
"fmt"
"fonchain-fiee/pkg/service/asChat/dto"
"strings"
)
// 自动回复规则结构转换
func ParseReplyRule(data []*dto.ChatAutoReplyData) (joinSessionRules, keywordsRules, noReplyAfterRules []IRobotTask) {
for _, responseRules := range data {
responseRules := responseRules
for ruleName, v := range responseRules.Rules {
if !v.Enable {
continue
}
switch ruleName {
case "keywords": //关键字回复
var keywords []string
if v.Content == "" {
continue
} else {
keywords = strings.Split(v.Content, ",")
}
fmt.Println("ParseReplyRule 解析keywords:", keywords)
r := NewReplyWhenHitKeywords(responseRules.Title+"-keywords", keywords)
r.SetResponse(responseRules.Response)
keywordsRules = append(keywordsRules, r)
case "joinSession": //加入聊天后回复
r := NewReplyWhenUserJoinSession(responseRules.Title + "-joinSession")
r.SetResponse(responseRules.Response)
joinSessionRules = append(joinSessionRules, r)
case "noReplyAfter": //指定时间没有回复则自动回复
if v.SecondDuration == 0 {
continue
}
r := NewReplyWhenWaiterNoAction(responseRules.Title+"-noReplyAfter", v.SecondDuration)
r.SetResponse(responseRules.Response)
noReplyAfterRules = append(noReplyAfterRules, r)
}
}
}
return
}