51 lines
1.5 KiB
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
|
|
}
|