Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Beta58 #180

Merged
merged 9 commits into from
Nov 28, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 38 additions & 11 deletions Processor/ProcessC2CMessage.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,25 @@ func (p *Processors) ProcessC2CMessage(data *dto.WSC2CMessageData) error {
//转换appidstring
AppIDString := strconv.FormatUint(p.Settings.AppID, 10)
echostr := AppIDString + "_" + strconv.FormatInt(s, 10)

//将真实id转为int userid64
userid64, err := idmap.StoreIDv2(data.Author.ID)
if err != nil {
log.Fatalf("Error storing ID: %v", err)
var userid64 int64
var err error
if config.GetIdmapPro() {
//将真实id转为int userid64
_, userid64, err = idmap.StoreIDv2Pro("group_private", data.Author.ID)
if err != nil {
mylog.Fatalf("Error storing ID: %v", err)
}
//当参数不全
_, _ = idmap.StoreIDv2(data.Author.ID)
if !config.GetHashIDValue() {
mylog.Fatalf("避坑日志:你开启了高级id转换,请设置hash_id为true,并且删除idmaps并重启")
}
} else {
//将真实id转为int userid64
userid64, err = idmap.StoreIDv2(data.Author.ID)
if err != nil {
mylog.Fatalf("Error storing ID: %v", err)
}
}

//收到私聊信息调用的具体还原步骤
Expand Down Expand Up @@ -115,19 +129,31 @@ func (p *Processors) ProcessC2CMessage(data *dto.WSC2CMessageData) error {
mylog.Printf("信息被自定义黑白名单拦截")
return nil
}
//框架内指令
p.HandleFrameworkCommand(messageText, data, "group_private")
//转换appid
AppIDString := strconv.FormatUint(p.Settings.AppID, 10)
//构造echo
echostr := AppIDString + "_" + strconv.FormatInt(s, 10)
//把userid作为群号
//映射str的userid到int
userid64, err := idmap.StoreIDv2(data.Author.ID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
var userid64 int64
var err error
if config.GetIdmapPro() {
//将真实id转为int userid64
_, userid64, err = idmap.StoreIDv2Pro("group_private", data.Author.ID)
if err != nil {
mylog.Fatalf("Error storing ID: %v", err)
}
//当参数不全,降级时
_, _ = idmap.StoreIDv2(data.Author.ID)
} else {
//将真实id转为int userid64
userid64, err = idmap.StoreIDv2(data.Author.ID)
if err != nil {
mylog.Fatalf("Error storing ID: %v", err)
}
}
//框架内指令
p.HandleFrameworkCommand(messageText, data, "group_private")
//映射str的messageID到int
messageID64, err := idmap.StoreIDv2(data.ID)
if err != nil {
Expand Down Expand Up @@ -180,6 +206,7 @@ func (p *Processors) ProcessC2CMessage(data *dto.WSC2CMessageData) error {
echo.AddMsgType(AppIDString, s, "group_private")
//为不支持双向echo的ob服务端映射
echo.AddMsgID(AppIDString, userid64, data.ID)
//映射类型
echo.AddMsgType(AppIDString, userid64, "group_private")
//懒message_id池
echo.AddLazyMessageId(strconv.FormatInt(userid64, 10), data.ID, time.Now())
Expand Down
95 changes: 74 additions & 21 deletions Processor/ProcessChannelDirectMessage.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,43 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData)
AppIDString := strconv.FormatUint(p.Settings.AppID, 10)
echostr := AppIDString + "_" + strconv.FormatInt(s, 10)

//将真实id转为int userid64
userid64, err := idmap.StoreIDv2(data.Author.ID)
if err != nil {
log.Fatalf("Error storing ID: %v", err)
var userid64 int64
var ChannelID64 int64
var err error
if config.GetIdmapPro() {
//将真实id转为int userid64
_, _, err = idmap.StoreIDv2Pro(data.ChannelID, data.Author.ID)
if err != nil {
mylog.Fatalf("Error storing ID: %v", err)
}
//将真实id转为int userid64
userid64, err = idmap.StoreIDv2(data.Author.ID)
if err != nil {
mylog.Fatalf("Error storing ID: %v", err)
}
ChannelID64, err = idmap.StoreIDv2(data.ChannelID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
}
if !config.GetHashIDValue() {
mylog.Fatalf("避坑日志:你开启了高级id转换,请设置hash_id为true,并且删除idmaps并重启")
}
} else {
//将真实id转为int userid64
userid64, err = idmap.StoreIDv2(data.Author.ID)
if err != nil {
mylog.Fatalf("Error storing ID: %v", err)
}
//将channelid写入数据库,可取出guild_id
ChannelID64, err = idmap.StoreIDv2(data.ChannelID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
}
}

//将真实id写入数据库,可取出ChannelID
idmap.WriteConfigv2(data.Author.ID, "channel_id", data.ChannelID)
//将channelid写入数据库,可取出guild_id
ChannelID64, err := idmap.StoreIDv2(data.ChannelID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
}
//转成int再互转
idmap.WriteConfigv2(fmt.Sprint(ChannelID64), "guild_id", data.GuildID)
//直接储存 适用于私信场景私聊
Expand Down Expand Up @@ -210,10 +233,40 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData)
} else {
//将频道信息转化为群信息(特殊需求情况下)
//将channelid写入bolt,可取出guild_id
ChannelID64, err := idmap.StoreIDv2(data.ChannelID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
var userid64 int64
var ChannelID64 int64
var err error
if config.GetIdmapPro() {
//将真实id转为int userid64
_, _, err = idmap.StoreIDv2Pro(data.ChannelID, data.Author.ID)
if err != nil {
mylog.Fatalf("Error storing ID: %v", err)
}
//将真实id转为int userid64
userid64, err = idmap.StoreIDv2(data.Author.ID)
if err != nil {
mylog.Fatalf("Error storing ID: %v", err)
}
ChannelID64, err = idmap.StoreIDv2(data.ChannelID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
}
if !config.GetHashIDValue() {
mylog.Fatalf("避坑日志:你开启了高级id转换,请设置hash_id为true,并且删除idmaps并重启")
}
} else {
//将真实id转为int userid64
userid64, err = idmap.StoreIDv2(data.Author.ID)
if err != nil {
mylog.Fatalf("Error storing ID: %v", err)
}
//将真实channelid和虚拟做映射
ChannelID64, err = idmap.StoreIDv2(data.ChannelID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
}
}
//转成int再互转 适用于群场景私聊
idmap.WriteConfigv2(fmt.Sprint(ChannelID64), "guild_id", data.GuildID)
Expand All @@ -225,16 +278,13 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData)
mylog.Printf("信息被自定义黑白名单拦截")
return nil
}
//框架内指令
p.HandleFrameworkCommand(messageText, data, "guild_private")
//转换appid
AppIDString := strconv.FormatUint(p.Settings.AppID, 10)
//构造echo
echostr := AppIDString + "_" + strconv.FormatInt(s, 10)
//映射str的userid到int
userid64, err := idmap.StoreIDv2(data.Author.ID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
}

//userid := int(userid64)
//映射str的messageID到int
messageID64, err := idmap.StoreIDv2(data.ID)
Expand Down Expand Up @@ -294,6 +344,9 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData)
echo.AddMsgID(AppIDString, userid64, data.ID)
//为频道私聊转群聊映射
echo.AddMsgID(AppIDString, ChannelID64, data.ID)
//将当前的userid和groupid和msgid进行一个更稳妥的映射
echo.AddMsgIDv2(AppIDString, ChannelID64, userid64, data.ID)
//映射类型
echo.AddMsgType(AppIDString, userid64, "guild_private")
//储存当前群或频道号的类型
idmap.WriteConfigv2(fmt.Sprint(ChannelID64), "type", "guild_private")
Expand Down
48 changes: 34 additions & 14 deletions Processor/ProcessGroupMessage.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,25 +31,43 @@ func (p *Processors) ProcessGroupMessage(data *dto.WSGroupATMessageData) error {
if config.GetAddAtGroup() {
messageText = "[CQ:at,qq=" + config.GetAppIDStr() + "] " + messageText
}
//框架内指令
p.HandleFrameworkCommand(messageText, data, "group")

// 转换appid
AppIDString := strconv.FormatUint(p.Settings.AppID, 10)

// 构造echo
echostr := AppIDString + "_" + strconv.FormatInt(s, 10)

// 映射str的GroupID到int
GroupID64, err := idmap.StoreIDv2(data.GroupID)
if err != nil {
return fmt.Errorf("failed to convert ChannelID to int: %v", err)
}
// 映射str的userid到int
userid64, err := idmap.StoreIDv2(data.Author.ID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
var userid64 int64
var GroupID64 int64
var err error
if config.GetIdmapPro() {
//将真实id转为int userid64
GroupID64, userid64, err = idmap.StoreIDv2Pro(data.GroupID, data.Author.ID)
if err != nil {
mylog.Fatalf("Error storing ID: %v", err)
}
//当参数不全
_, _ = idmap.StoreIDv2(data.GroupID)
_, _ = idmap.StoreIDv2(data.Author.ID)
if !config.GetHashIDValue() {
mylog.Fatalf("避坑日志:你开启了高级id转换,请设置hash_id为true,并且删除idmaps并重启")
}
} else {
// 映射str的GroupID到int
GroupID64, err = idmap.StoreIDv2(data.GroupID)
if err != nil {
mylog.Errorf("failed to convert ChannelID to int: %v", err)
return nil
}
// 映射str的userid到int
userid64, err = idmap.StoreIDv2(data.Author.ID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
}
}
//框架内指令
p.HandleFrameworkCommand(messageText, data, "group")
//映射str的messageID到int
messageID64, err := idmap.StoreIDv2(data.ID)
if err != nil {
Expand Down Expand Up @@ -109,9 +127,11 @@ func (p *Processors) ProcessGroupMessage(data *dto.WSGroupATMessageData) error {
echo.AddMsgType(AppIDString, s, "group")
//为不支持双向echo的ob服务端映射
echo.AddMsgID(AppIDString, GroupID64, data.ID)
echo.AddMsgType(AppIDString, GroupID64, "group")
//将当前的userid和groupid和msgid进行一个更稳妥的映射
echo.AddMsgIDv2(AppIDString, GroupID64, userid64, data.ID)
//储存当前群或频道号的类型
idmap.WriteConfigv2(fmt.Sprint(GroupID64), "type", "group")
//映射类型
echo.AddMsgType(AppIDString, GroupID64, "group")
//懒message_id池
echo.AddLazyMessageId(strconv.FormatInt(GroupID64, 10), data.ID, time.Now())
Expand Down
43 changes: 30 additions & 13 deletions Processor/ProcessGuildATMessage.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,34 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error {
//将频道转化为一个群
//获取s
s := client.GetGlobalS()
//将channelid写入ini,可取出guild_id
ChannelID64, err := idmap.StoreIDv2(data.ChannelID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
var userid64 int64
var ChannelID64 int64
var err error
if config.GetIdmapPro() {
//将真实id转为int userid64
ChannelID64, userid64, err = idmap.StoreIDv2Pro(data.ChannelID, data.Author.ID)
if err != nil {
mylog.Fatalf("Error storing ID: %v", err)
}
//当参数不全时
_, _ = idmap.StoreIDv2(data.ChannelID)
_, _ = idmap.StoreIDv2(data.Author.ID)
if !config.GetHashIDValue() {
mylog.Fatalf("避坑日志:你开启了高级id转换,请设置hash_id为true,并且删除idmaps并重启")
}
} else {
//将channelid写入ini,可取出guild_id
ChannelID64, err = idmap.StoreIDv2(data.ChannelID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
}
//映射str的userid到int
userid64, err = idmap.StoreIDv2(data.Author.ID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
}
}
//转成int再互转
idmap.WriteConfigv2(fmt.Sprint(ChannelID64), "guild_id", data.GuildID)
Expand All @@ -134,13 +157,6 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error {
AppIDString := strconv.FormatUint(p.Settings.AppID, 10)
//构造echo
echostr := AppIDString + "_" + strconv.FormatInt(s, 10)
//映射str的userid到int
userid64, err := idmap.StoreIDv2(data.Author.ID)
if err != nil {
mylog.Printf("Error storing ID: %v", err)
return nil
}
//userid := int(userid64)
//映射str的messageID到int
messageID64, err := idmap.StoreIDv2(data.ID)
if err != nil {
Expand Down Expand Up @@ -197,7 +213,8 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error {
echo.AddMsgType(AppIDString, s, "guild")
//为不支持双向echo的ob服务端映射
echo.AddMsgID(AppIDString, ChannelID64, data.ID)
echo.AddMsgType(AppIDString, ChannelID64, "guild")
//将当前的userid和groupid和msgid进行一个更稳妥的映射
echo.AddMsgIDv2(AppIDString, ChannelID64, userid64, data.ID)
//储存当前群或频道号的类型
idmap.WriteConfigv2(fmt.Sprint(ChannelID64), "type", "guild")
echo.AddMsgType(AppIDString, ChannelID64, "guild")
Expand Down
Loading
Loading