Skip to content

Commit

Permalink
Beta56 (#175)
Browse files Browse the repository at this point in the history
* beta55

* beta55

* add idmaps pro

* add idmaps pr2o

* add idmaps pr3o
  • Loading branch information
Hoshinonyaruko authored Nov 26, 2023
1 parent 4a5b50f commit 2e6db5d
Show file tree
Hide file tree
Showing 17 changed files with 1,138 additions and 293 deletions.
45 changes: 36 additions & 9 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 @@ -123,10 +137,22 @@ func (p *Processors) ProcessC2CMessage(data *dto.WSC2CMessageData) error {
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)
}
}
//映射str的messageID到int
messageID64, err := idmap.StoreIDv2(data.ID)
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
43 changes: 31 additions & 12 deletions Processor/ProcessGroupMessage.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,34 @@ func (p *Processors) ProcessGroupMessage(data *dto.WSGroupATMessageData) error {

// 构造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
}
}
//映射str的messageID到int
messageID64, err := idmap.StoreIDv2(data.ID)
Expand Down Expand Up @@ -109,9 +126,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
45 changes: 32 additions & 13 deletions Processor/ProcessGuildNormalMessage.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) error {
echo.AddMsgType(AppIDString, s, "guild")
//为不支持双向echo的ob11服务端映射
echo.AddMsgID(AppIDString, userid64, data.ID)
//映射类型
echo.AddMsgType(AppIDString, userid64, "guild")
//储存当前群或频道号的类型
idmap.WriteConfigv2(data.ChannelID, "type", "guild")
Expand All @@ -116,12 +117,36 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) 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)
//转换at
Expand All @@ -136,13 +161,6 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) 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 @@ -199,7 +217,8 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) 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

0 comments on commit 2e6db5d

Please sign in to comment.