go_dreamfactory/modules/robot/modulerobot_friend.go
2023-12-20 14:11:12 +08:00

94 lines
2.4 KiB
Go

package robot
import (
"errors"
"fmt"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/reflect/protoreflect"
)
//用户模块 机器人
type ModuleRobot_Friend struct {
friend *pb.DBFriend
applylist []*pb.FriendBase
}
func (this *ModuleRobot_Friend) Init() (err error) {
return
}
//接收到消息
func (this *ModuleRobot_Friend) Receive(robot IRobot, stype string, message proto.Message) (err error) {
switch stype {
case "list":
resp := message.(*pb.FriendListResp)
this.friend = resp.Friend
break
case "applylist":
resp := message.(*pb.FriendApplyListResp)
this.applylist = resp.List
break
}
return
}
func (this *ModuleRobot_Friend) OncePipeline(robot IRobot) (err error) {
var (
errdata *pb.ErrorData
)
if _, errdata = robot.SendMessage("friend", "list", &pb.FriendListReq{}); errdata != nil {
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
return
}
return
}
//机器人执行流
func (this *ModuleRobot_Friend) DoPipeline(robot IRobot) (err error) {
var (
resp protoreflect.ProtoMessage
errdata *pb.ErrorData
)
if _, errdata = robot.SendMessage("friend", "applylist", &pb.FriendApplyListReq{}); errdata != nil {
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
return
}
if this.applylist != nil && len(this.applylist) > 0 {
friendIds := make([]string, 0)
for _, v := range this.applylist {
friendIds = append(friendIds, v.UserId)
}
if _, errdata = robot.SendMessage("friend", "agree", &pb.FriendAgreeReq{
FriendIds: friendIds,
}); errdata != nil {
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
return
}
} else {
if resp, errdata = robot.SendMessage("friend", "randlist", &pb.FriendRandlistReq{}); errdata != nil {
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
return
}
for _, v := range resp.(*pb.FriendRandlistResp).List {
if _, errdata = robot.SendMessage("friend", "apply", &pb.FriendApplyReq{
FriendId: v.UserId,
}); errdata != nil {
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
return
}
break
}
}
return
}
//做任务
func (this *ModuleRobot_Friend) DoTask(robot IRobot, taskconf *cfg.GameWorldTaskData, condconf *cfg.GameBuriedCondiData) (err error) {
return
}