diff --git a/Processor/ProcessC2CMessage.go b/Processor/ProcessC2CMessage.go index ca9eb43d..69ecde84 100644 --- a/Processor/ProcessC2CMessage.go +++ b/Processor/ProcessC2CMessage.go @@ -83,6 +83,7 @@ func (p *Processors) ProcessC2CMessage(data *dto.WSC2CMessageData) error { if config.GetArrayValue() { segmentedMessages = handlers.ConvertToSegmentedMessage(data) } + IsBindedUserId := idmap.CheckValue(data.Author.ID, userid64) privateMsg := OnebotPrivateMessage{ RawMessage: messageText, Message: segmentedMessages, @@ -95,9 +96,11 @@ func (p *Processors) ProcessC2CMessage(data *dto.WSC2CMessageData) error { Nickname: "", //这个不支持,但加机器人好友,会收到一个事件,可以对应储存获取,用idmaps可以做到. UserID: userid64, }, - SubType: "friend", - Time: time.Now().Unix(), - Avatar: "", //todo 同上 + SubType: "friend", + Time: time.Now().Unix(), + Avatar: "", //todo 同上 + RealMessageType: "group_private", + IsBindedUserId: IsBindedUserId, } // 根据条件判断是否添加Echo字段 if config.GetTwoWayEcho() { @@ -169,6 +172,7 @@ func (p *Processors) ProcessC2CMessage(data *dto.WSC2CMessageData) error { } messageID := int(messageID64) //todo 判断array模式 然后对Message处理成array格式 + IsBindedUserId := idmap.CheckValue(data.Author.ID, userid64) groupMsg := OnebotGroupMessage{ RawMessage: messageText, Message: messageText, @@ -186,9 +190,11 @@ func (p *Processors) ProcessC2CMessage(data *dto.WSC2CMessageData) error { Area: "0", Level: "0", }, - SubType: "normal", - Time: time.Now().Unix(), - Avatar: "", + SubType: "normal", + Time: time.Now().Unix(), + Avatar: "", + RealMessageType: "group_private", + IsBindedUserId: IsBindedUserId, } //根据条件判断是否增加nick和card var CaN = config.GetCardAndNick() diff --git a/Processor/ProcessChannelDirectMessage.go b/Processor/ProcessChannelDirectMessage.go index 0adaec0b..9f91f2e0 100644 --- a/Processor/ProcessChannelDirectMessage.go +++ b/Processor/ProcessChannelDirectMessage.go @@ -102,6 +102,7 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) if config.GetArrayValue() { segmentedMessages = handlers.ConvertToSegmentedMessage(data) } + IsBindedUserId := idmap.CheckValue(data.Author.ID, userid64) privateMsg := OnebotPrivateMessage{ RawMessage: messageText, Message: segmentedMessages, @@ -114,9 +115,11 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) Nickname: data.Member.Nick, UserID: userid64, }, - SubType: "friend", - Time: time.Now().Unix(), - Avatar: data.Author.Avatar, + SubType: "friend", + Time: time.Now().Unix(), + Avatar: data.Author.Avatar, + RealMessageType: "guild_private", + IsBindedUserId: IsBindedUserId, } // 根据条件判断是否添加Echo字段 if config.GetTwoWayEcho() { @@ -307,6 +310,7 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) if config.GetArrayValue() { segmentedMessages = handlers.ConvertToSegmentedMessage(data) } + IsBindedUserId := idmap.CheckValue(data.Author.ID, userid64) groupMsg := OnebotGroupMessage{ RawMessage: messageText, Message: segmentedMessages, @@ -326,9 +330,11 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) Area: "", Level: "0", }, - SubType: "normal", - Time: time.Now().Unix(), - Avatar: data.Author.Avatar, + SubType: "normal", + Time: time.Now().Unix(), + Avatar: data.Author.Avatar, + RealMessageType: "guild_private", + IsBindedUserId: IsBindedUserId, } // 根据条件判断是否添加Echo字段 if config.GetTwoWayEcho() { diff --git a/Processor/ProcessGroupMessage.go b/Processor/ProcessGroupMessage.go index 75014b00..2e088c64 100644 --- a/Processor/ProcessGroupMessage.go +++ b/Processor/ProcessGroupMessage.go @@ -84,6 +84,8 @@ func (p *Processors) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { if config.GetArrayValue() { segmentedMessages = handlers.ConvertToSegmentedMessage(data) } + IsBindedUserId := idmap.CheckValue(data.Author.ID, userid64) + IsBindedGroupId := idmap.CheckValue(data.GroupID, GroupID64) groupMsg := OnebotGroupMessage{ RawMessage: messageText, Message: segmentedMessages, @@ -100,9 +102,12 @@ func (p *Processors) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { Area: "0", Level: "0", }, - SubType: "normal", - Time: time.Now().Unix(), - Avatar: "", + SubType: "normal", + Time: time.Now().Unix(), + Avatar: "", + RealMessageType: "group", + IsBindedUserId: IsBindedUserId, + IsBindedGroupId: IsBindedGroupId, } //根据条件判断是否增加nick和card var CaN = config.GetCardAndNick() diff --git a/Processor/ProcessGuildATMessage.go b/Processor/ProcessGuildATMessage.go index faf4ab0a..4d392742 100644 --- a/Processor/ProcessGuildATMessage.go +++ b/Processor/ProcessGuildATMessage.go @@ -174,6 +174,8 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error { if config.GetArrayValue() { segmentedMessages = handlers.ConvertToSegmentedMessage(data) } + IsBindedUserId := idmap.CheckValue(data.Author.ID, userid64) + IsBindedGroupId := idmap.CheckValue(data.GroupID, ChannelID64) groupMsg := OnebotGroupMessage{ RawMessage: messageText, Message: segmentedMessages, @@ -192,9 +194,12 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error { Area: "", Level: "0", }, - SubType: "normal", - Time: time.Now().Unix(), - Avatar: data.Author.Avatar, + SubType: "normal", + Time: time.Now().Unix(), + Avatar: data.Author.Avatar, + RealMessageType: "guild", + IsBindedUserId: IsBindedUserId, + IsBindedGroupId: IsBindedGroupId, } // 根据条件判断是否添加Echo字段 if config.GetTwoWayEcho() { diff --git a/Processor/ProcessGuildNormalMessage.go b/Processor/ProcessGuildNormalMessage.go index 3add806a..e23725b9 100644 --- a/Processor/ProcessGuildNormalMessage.go +++ b/Processor/ProcessGuildNormalMessage.go @@ -178,6 +178,8 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) error { if config.GetArrayValue() { segmentedMessages = handlers.ConvertToSegmentedMessage(data) } + IsBindedUserId := idmap.CheckValue(data.Author.ID, userid64) + IsBindedGroupId := idmap.CheckValue(data.GroupID, ChannelID64) groupMsg := OnebotGroupMessage{ RawMessage: messageText, Message: segmentedMessages, @@ -196,9 +198,12 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) error { Area: "", Level: "0", }, - SubType: "normal", - Time: time.Now().Unix(), - Avatar: data.Author.Avatar, + SubType: "normal", + Time: time.Now().Unix(), + Avatar: data.Author.Avatar, + RealMessageType: "guild", + IsBindedUserId: IsBindedUserId, + IsBindedGroupId: IsBindedGroupId, } // 根据条件判断是否添加Echo字段 if config.GetTwoWayEcho() { diff --git a/Processor/Processor.go b/Processor/Processor.go index 2619bba1..2da9e050 100644 --- a/Processor/Processor.go +++ b/Processor/Processor.go @@ -69,39 +69,44 @@ type OnebotChannelMessage struct { // 群信息事件 type OnebotGroupMessage struct { - RawMessage string `json:"raw_message"` - MessageID int `json:"message_id"` - GroupID int64 `json:"group_id"` // Can be either string or int depending on p.Settings.CompleteFields - MessageType string `json:"message_type"` - PostType string `json:"post_type"` - SelfID int64 `json:"self_id"` // Can be either string or int - Sender Sender `json:"sender"` - SubType string `json:"sub_type"` - Time int64 `json:"time"` - Avatar string `json:"avatar,omitempty"` - Echo string `json:"echo,omitempty"` - Message interface{} `json:"message"` // For array format - MessageSeq int `json:"message_seq"` - Font int `json:"font"` - UserID int64 `json:"user_id"` + RawMessage string `json:"raw_message"` + MessageID int `json:"message_id"` + GroupID int64 `json:"group_id"` // Can be either string or int depending on p.Settings.CompleteFields + MessageType string `json:"message_type"` + PostType string `json:"post_type"` + SelfID int64 `json:"self_id"` // Can be either string or int + Sender Sender `json:"sender"` + SubType string `json:"sub_type"` + Time int64 `json:"time"` + Avatar string `json:"avatar,omitempty"` + Echo string `json:"echo,omitempty"` + Message interface{} `json:"message"` // For array format + MessageSeq int `json:"message_seq"` + Font int `json:"font"` + UserID int64 `json:"user_id"` + RealMessageType string `json:"real_message_type"` //当前信息的真实类型 group group_private guild guild_private + IsBindedGroupId bool `json:"is_binded_group_id"` //当前群号是否是binded后的 + IsBindedUserId bool `json:"is_binded_user_id"` //当前用户号号是否是binded后的 } // 私聊信息事件 type OnebotPrivateMessage struct { - RawMessage string `json:"raw_message"` - MessageID int `json:"message_id"` // Can be either string or int depending on logic - MessageType string `json:"message_type"` - PostType string `json:"post_type"` - SelfID int64 `json:"self_id"` // Can be either string or int depending on logic - Sender PrivateSender `json:"sender"` - SubType string `json:"sub_type"` - Time int64 `json:"time"` - Avatar string `json:"avatar,omitempty"` - Echo string `json:"echo,omitempty"` - Message interface{} `json:"message"` // For array format - MessageSeq int `json:"message_seq"` // Optional field - Font int `json:"font"` // Optional field - UserID int64 `json:"user_id"` // Can be either string or int depending on logic + RawMessage string `json:"raw_message"` + MessageID int `json:"message_id"` // Can be either string or int depending on logic + MessageType string `json:"message_type"` + PostType string `json:"post_type"` + SelfID int64 `json:"self_id"` // Can be either string or int depending on logic + Sender PrivateSender `json:"sender"` + SubType string `json:"sub_type"` + Time int64 `json:"time"` + Avatar string `json:"avatar,omitempty"` + Echo string `json:"echo,omitempty"` + Message interface{} `json:"message"` // For array format + MessageSeq int `json:"message_seq"` // Optional field + Font int `json:"font"` // Optional field + UserID int64 `json:"user_id"` // Can be either string or int depending on logic + RealMessageType string `json:"real_message_type"` //当前信息的真实类型 group group_private guild guild_private + IsBindedUserId bool `json:"is_binded_user_id"` //当前用户号号是否是binded后的 } type PrivateSender struct { diff --git a/idmap/service.go b/idmap/service.go index 6fa525a6..862197ee 100644 --- a/idmap/service.go +++ b/idmap/service.go @@ -88,6 +88,22 @@ func generateRowID(id string, length int) (int64, error) { return rowID, nil } +// 检查id和value是否是转换关系 +func CheckValue(id string, value int64) bool { + // 计算int64值的长度 + length := len(strconv.FormatInt(value, 10)) + + // 使用generateRowID转换id + generatedValue, err := generateRowID(id, length) + if err != nil { + fmt.Println("Error:", err) + return false + } + + // 比较生成的值与给定的值 + return generatedValue == value +} + // 根据a储存b func StoreID(id string) (int64, error) { var newRow int64