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

Beta116 #283

Merged
merged 11 commits into from
Dec 29, 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
4 changes: 2 additions & 2 deletions Processor/ProcessC2CMessage.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ func (p *Processors) ProcessC2CMessage(data *dto.WSC2CMessageData) error {
}
}
//转换at
messageText := handlers.RevertTransformedText(data, "group_private", p.Api, p.Apiv2, userid64, userid64)
messageText := handlers.RevertTransformedText(data, "group_private", p.Api, p.Apiv2, userid64, userid64, config.GetWhiteEnable(5))
if messageText == "" {
mylog.Printf("信息被自定义黑白名单拦截")
return nil
Expand Down Expand Up @@ -172,7 +172,7 @@ func (p *Processors) ProcessC2CMessage(data *dto.WSC2CMessageData) error {
}
}
//转换at
messageText := handlers.RevertTransformedText(data, "group_private", p.Api, p.Apiv2, userid64, userid64)
messageText := handlers.RevertTransformedText(data, "group_private", p.Api, p.Apiv2, userid64, userid64, config.GetWhiteEnable(5))
if messageText == "" {
mylog.Printf("信息被自定义黑白名单拦截")
return nil
Expand Down
6 changes: 3 additions & 3 deletions Processor/ProcessChannelDirectMessage.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData)
}
messageID := int(messageID64)
//转换at
messageText := handlers.RevertTransformedText(data, "guild_private", p.Api, p.Apiv2, userid64, userid64)
messageText := handlers.RevertTransformedText(data, "guild_private", p.Api, p.Apiv2, userid64, userid64, config.GetWhiteEnable(3))
if messageText == "" {
mylog.Printf("信息被自定义黑白名单拦截")
return nil
Expand Down Expand Up @@ -172,7 +172,7 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData)
//获取s
s := client.GetGlobalS()
//转换at
messageText := handlers.RevertTransformedText(data, "guild_private", p.Api, p.Apiv2, 10000, 10000) //todo 这里未转换
messageText := handlers.RevertTransformedText(data, "guild_private", p.Api, p.Apiv2, 10000, 10000, config.GetWhiteEnable(3)) //todo 这里未转换
if messageText == "" {
mylog.Printf("信息被自定义黑白名单拦截")
return nil
Expand Down Expand Up @@ -306,7 +306,7 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData)
//直接储存 适用于私信场景私聊
idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID)
//转换at
messageText := handlers.RevertTransformedText(data, "guild_private", p.Api, p.Apiv2, userid64, userid64)
messageText := handlers.RevertTransformedText(data, "guild_private", p.Api, p.Apiv2, userid64, userid64, config.GetWhiteEnable(3))
if messageText == "" {
mylog.Printf("信息被自定义黑白名单拦截")
return nil
Expand Down
2 changes: 1 addition & 1 deletion Processor/ProcessGroupMessage.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func (p *Processors) ProcessGroupMessage(data *dto.WSGroupATMessageData) error {
}
}
// 转换at
messageText := handlers.RevertTransformedText(data, "group", p.Api, p.Apiv2, GroupID64, userid64)
messageText := handlers.RevertTransformedText(data, "group", p.Api, p.Apiv2, GroupID64, userid64, config.GetWhiteEnable(4))
if messageText == "" {
mylog.Printf("信息被自定义黑白名单拦截")
return nil
Expand Down
4 changes: 2 additions & 2 deletions Processor/ProcessGuildATMessage.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error {
//获取s
s := client.GetGlobalS()
//转换at
messageText := handlers.RevertTransformedText(data, "guild", p.Api, p.Apiv2, 10000, 10000) //todo 这里未转换
messageText := handlers.RevertTransformedText(data, "guild", p.Api, p.Apiv2, 10000, 10000, config.GetWhiteEnable(1)) //todo 这里未转换
if messageText == "" {
mylog.Printf("信息被自定义黑白名单拦截")
return nil
Expand Down Expand Up @@ -160,7 +160,7 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error {
//储存原来的(获取群列表需要)
idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID)
//转换at和图片
messageText := handlers.RevertTransformedText(data, "guild", p.Api, p.Apiv2, ChannelID64, userid64)
messageText := handlers.RevertTransformedText(data, "guild", p.Api, p.Apiv2, ChannelID64, userid64, config.GetWhiteEnable(1))
if messageText == "" {
mylog.Printf("信息被自定义黑白名单拦截")
return nil
Expand Down
4 changes: 2 additions & 2 deletions Processor/ProcessGuildNormalMessage.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) error {
//获取s
s := client.GetGlobalS()
//转换at
messageText := handlers.RevertTransformedText(data, "guild", p.Api, p.Apiv2, 10000, 10000) //这里未转换
messageText := handlers.RevertTransformedText(data, "guild", p.Api, p.Apiv2, 10000, 10000, config.GetWhiteEnable(2)) //这里未转换
if messageText == "" {
mylog.Printf("信息被自定义黑白名单拦截")
return nil
Expand Down Expand Up @@ -163,7 +163,7 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) error {
//储存原来的(获取群列表需要)
idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID)
//转换at
messageText := handlers.RevertTransformedText(data, "guild", p.Api, p.Apiv2, ChannelID64, userid64)
messageText := handlers.RevertTransformedText(data, "guild", p.Api, p.Apiv2, ChannelID64, userid64, config.GetWhiteEnable(2))
if messageText == "" {
mylog.Printf("信息被自定义黑白名单拦截")
return nil
Expand Down
23 changes: 23 additions & 0 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ type Settings struct {
AliyunAudit bool `yaml:"a_audit"`
Alias []string `yaml:"alias"`
SelfIntroduce []string `yaml:"self_introduce"`
WhiteEnable []bool `yaml:"white_enable"`
}

// LoadConfig 从文件中加载配置并初始化单例配置
Expand Down Expand Up @@ -1603,3 +1604,25 @@ func GetSelfIntroduce() []string {
}
return nil // 返回nil,如果instance为nil
}

// 获取WhiteEnable的值
func GetWhiteEnable(index int) bool {
mu.Lock()
defer mu.Unlock()

// 检查instance或instance.Settings.WhiteEnable是否为nil
if instance == nil || instance.Settings.WhiteEnable == nil {
return true // 如果为nil,返回默认值true
}

// 调整索引以符合从0开始的数组索引
adjustedIndex := index - 1

// 检查索引是否在数组范围内
if adjustedIndex >= 0 && adjustedIndex < len(instance.Settings.WhiteEnable) {
return instance.Settings.WhiteEnable[adjustedIndex]
}

// 如果索引超出范围,返回默认值true
return true
}
4 changes: 2 additions & 2 deletions handlers/message_parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ func createCQImageMessage(base64Image string) string {
}

// 处理at和其他定形文到onebotv11格式(cq码)
func RevertTransformedText(data interface{}, msgtype string, api openapi.OpenAPI, apiv2 openapi.OpenAPI, vgid int64, vuid int64) string {
func RevertTransformedText(data interface{}, msgtype string, api openapi.OpenAPI, apiv2 openapi.OpenAPI, vgid int64, vuid int64, whitenable bool) string {
var msg *dto.Message
var menumsg bool
var messageText string
Expand Down Expand Up @@ -392,7 +392,7 @@ func RevertTransformedText(data interface{}, msgtype string, api openapi.OpenAPI
}

// 检查是否启用白名单模式
if config.GetWhitePrefixMode() {
if config.GetWhitePrefixMode() && whitenable {
// 获取白名单反转标志
whiteBypassRevers := config.GetWhiteBypassRevers()

Expand Down
1 change: 1 addition & 0 deletions template/config_template.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ settings:
white_prefix_mode : false #公域 过审用 指令白名单模式开关 如果审核严格 请开启并设置白名单指令 以白名单开头的指令会被通过,反之被拦截
white_prefixs : [""] #可设置多个 比如设置 机器人 测试 则只有信息以机器人 测试开头会相应 remove_prefix remove_at 需为true时生效
white_bypass : [] #格式[1,2,3],白名单不生效的群或用户(私聊时),用于设置自己的灰度沙箱群/灰度沙箱私聊,避免开发测试时反复开关白名单的不便,请勿用于生产环境.
white_enable : [true,true,true,true,true] #指令白名单生效范围,5个分别对应,频道公(ATMessageEventHandler),频道私(CreateMessageHandler),频道私聊,群,群私聊,改成false,这个范围就不生效指令白名单(使用场景:群全量,频道私域的机器人,或有私信资质的机器人)
white_bypass_reverse : false #反转white_bypass的效果,可仅在white_bypass应用white_prefix_mode,场景:您的不同用户群,可以开放不同层次功能,便于您的运营和规化(测试/正式环境)
No_White_Response : "" #默认不兜底,强烈建议设置一个友善的兜底回复,告知审核机器人已无隐藏指令,如:你输入的指令不对哦,@机器人来获取可用指令

Expand Down
Loading