diff --git a/cmd/gocq/login.go b/cmd/gocq/login.go index 0b680ac2e..f5b030839 100644 --- a/cmd/gocq/login.go +++ b/cmd/gocq/login.go @@ -3,6 +3,7 @@ package gocq import ( "bufio" "bytes" + "image" "image/color" "image/png" "os" @@ -102,6 +103,34 @@ func printQRCode(imgData []byte) { _, _ = colorable.NewColorableStdout().Write(buf) } +func printQRCodeCommon(imgData []byte) { + const ( + black = "\033[48;5;0m \033[0m" + white = "\033[48;5;7m \033[0m" + ) + img, err := png.Decode(bytes.NewReader(imgData)) + if err != nil { + log.Panic(err) + } + data := img.(*image.Gray).Pix + bound := img.Bounds().Max.X + buf := make([]byte, 0, (bound*4+1)*(bound)) + i := 0 + for y := 0; y < bound; y++ { + i = y * bound + for x := 0; x < bound; x++ { + if data[i] != 255 { + buf = append(buf, white...) + } else { + buf = append(buf, black...) + } + i++ + } + buf = append(buf, '\n') + } + _, _ = colorable.NewColorableStdout().Write(buf) +} + func qrcodeLogin() error { qrcodeData, _, err := cli.FetchQRCode(1, 2, 1) if err != nil { diff --git a/cmd/gocq/main.go b/cmd/gocq/main.go index c873c8838..95fd7d06c 100644 --- a/cmd/gocq/main.go +++ b/cmd/gocq/main.go @@ -6,6 +6,7 @@ import ( "crypto/sha1" "encoding/hex" "fmt" + "net/url" "os" "path" "sync" @@ -297,13 +298,16 @@ func PasswordHashDecrypt(encryptedPasswordHash string, key []byte) ([]byte, erro } func newClient(appInfo *auth.AppInfo) *client.QQClient { - var signUrl string - if len(base.SignServers) != 0 { - signUrl = base.SignServers[0].URL - } else { - signUrl = "" + signUrls := make([]string, len(base.SignServers)) + for i, s := range base.SignServers { + u, err := url.Parse(s.URL) + if err != nil || u.Hostname() == "" { + continue + } + signUrls[i] = u.String() } - c := client.NewClient(0, signUrl, appInfo) + log.Warnf("signUrls: %#v", signUrls) + c := client.NewClient(0, appInfo, signUrls...) // TODO 服务器更新通知 // c.OnServerUpdated(func(bot *client.QQClient, e *client.ServerUpdatedEvent) bool { // if !base.UseSSOAddress { diff --git a/coolq/api.go b/coolq/api.go index 87555f142..784b7a658 100644 --- a/coolq/api.go +++ b/coolq/api.go @@ -5,6 +5,7 @@ import ( "encoding/hex" "encoding/json" "fmt" + "strconv" "github.com/LagrangeDev/LagrangeGo/client/entity" @@ -121,7 +122,7 @@ func (bot *CQBot) CQGetFriendList(spec *onebot.Spec) global.MSG { // @route(get_group_list) func (bot *CQBot) CQGetGroupList(noCache bool, spec *onebot.Spec) global.MSG { if noCache { - _ = bot.Client.RefreshAllGroupsInfo + _ = bot.Client.RefreshAllGroupsInfo() } grpInfos := bot.Client.GetCachedAllGroupsInfo() gs := make([]global.MSG, 0, len(grpInfos)) @@ -145,7 +146,7 @@ func (bot *CQBot) CQGetGroupList(noCache bool, spec *onebot.Spec) global.MSG { // @route(get_group_info) func (bot *CQBot) CQGetGroupInfo(groupID int64, noCache bool, spec *onebot.Spec) global.MSG { if noCache { - _ = bot.Client.RefreshAllGroupsInfo + _ = bot.Client.RefreshAllGroupsInfo() } group := bot.Client.GetCachedGroupInfo(uint32(groupID)) if group != nil { @@ -167,7 +168,7 @@ func (bot *CQBot) CQGetGroupInfo(groupID int64, noCache bool, spec *onebot.Spec) // @route(get_group_member_list) func (bot *CQBot) CQGetGroupMemberList(groupID int64, noCache bool) global.MSG { if noCache { - _ = bot.Client.RefreshAllGroupsInfo + _ = bot.Client.RefreshAllGroupsInfo() } groupMembers := bot.Client.GetCachedMembersInfo(uint32(groupID)) if groupMembers == nil { @@ -874,53 +875,52 @@ func (bot *CQBot) CQSetGroupLeave(groupID int64) global.MSG { // return OK(nil) //} -// TODO 计划实现的api 处理加群请求/邀请 // CQProcessGroupRequest 处理加群请求/邀请 // // https://git.io/Jtz1D // @route(set_group_add_request) // @rename(sub_type->"[sub_type\x2Ctype].0") // @default(approve=true) -//func (bot *CQBot) CQProcessGroupRequest(flag, subType, reason string, approve bool) global.MSG { -// msgs, err := bot.Client.GetGroupSystemMessages() -// if err != nil { -// log.Warnf("获取群系统消息失败: %v", err) -// return Failed(100, "SYSTEM_MSG_API_ERROR", err.Error()) -// } -// if subType == "add" { -// for _, req := range msgs.JoinRequests { -// if strconv.FormatInt(req.RequestId, 10) == flag { -// if req.Checked { -// log.Warnf("处理群系统消息失败: 无法操作已处理的消息.") -// return Failed(100, "FLAG_HAS_BEEN_CHECKED", "消息已被处理") -// } -// if approve { -// req.Accept() -// } else { -// req.Reject(false, reason) -// } -// return OK(nil) -// } -// } -// } else { -// for _, req := range msgs.InvitedRequests { -// if strconv.FormatInt(req.RequestId, 10) == flag { -// if req.Checked { -// log.Warnf("处理群系统消息失败: 无法操作已处理的消息.") -// return Failed(100, "FLAG_HAS_BEEN_CHECKED", "消息已被处理") -// } -// if approve { -// req.Accept() -// } else { -// req.Reject(false, reason) -// } -// return OK(nil) -// } -// } -// } -// log.Warnf("处理群系统消息失败: 消息 %v 不存在.", flag) -// return Failed(100, "FLAG_NOT_FOUND", "FLAG不存在") -//} +func (bot *CQBot) CQProcessGroupRequest(flag, subType, reason string, approve bool) global.MSG { + msgs, err := bot.Client.GetGroupSystemMessages() + if err != nil { + log.Warnf("获取群系统消息失败: %v", err) + return Failed(100, "SYSTEM_MSG_API_ERROR", err.Error()) + } + if subType == "add" { + for _, req := range msgs { + if strconv.FormatInt(int64(req.Sequence), 10) == flag { + if req.Checked() { + log.Warnf("处理群系统消息失败: 无法操作已处理的消息.") + return Failed(100, "FLAG_HAS_BEEN_CHECKED", "消息已被处理") + } + if approve { + bot.Client.SetGroupRequest(true, req.Sequence, req.EventType, req.GroupUin, "") + } else { + bot.Client.SetGroupRequest(false, req.Sequence, req.EventType, req.GroupUin, reason) + } + return OK(nil) + } + } + } else { + for _, req := range msgs { + if strconv.FormatInt(int64(req.Sequence), 10) == flag { + if req.Checked() { + log.Warnf("处理群系统消息失败: 无法操作已处理的消息.") + return Failed(100, "FLAG_HAS_BEEN_CHECKED", "消息已被处理") + } + if approve { + bot.Client.SetGroupRequest(true, req.Sequence, req.EventType, req.GroupUin, "") + } else { + bot.Client.SetGroupRequest(false, req.Sequence, req.EventType, req.GroupUin, reason) + } + return OK(nil) + } + } + } + log.Warnf("处理群系统消息失败: 消息 %v 不存在.", flag) + return Failed(100, "FLAG_NOT_FOUND", "FLAG不存在") +} // CQDeleteMessage 撤回消息 // @@ -1164,17 +1164,17 @@ func (bot *CQBot) CQHandleQuickOperation(context, operation gjson.Result) global } } } - // TODO 暂未支持 - //case "request": - // reqType := context.Get("request_type").Str - // if operation.Get("approve").Exists() { - // if reqType == "friend" { - // bot.CQProcessFriendRequest(context.Get("flag").String(), operation.Get("approve").Bool()) - // } - // if reqType == "group" { - // bot.CQProcessGroupRequest(context.Get("flag").String(), context.Get("sub_type").Str, operation.Get("reason").Str, operation.Get("approve").Bool()) - // } - // } + case "request": + reqType := context.Get("request_type").Str + if operation.Get("approve").Exists() { + // TODO 暂未支持 + //if reqType == "friend" { + // bot.CQProcessFriendRequest(context.Get("flag").String(), operation.Get("approve").Bool()) + //} + if reqType == "group" { + bot.CQProcessGroupRequest(context.Get("flag").String(), context.Get("sub_type").Str, operation.Get("reason").Str, operation.Get("approve").Bool()) + } + } } return OK(nil) } diff --git a/coolq/bot.go b/coolq/bot.go index c0e248478..26572e4f5 100644 --- a/coolq/bot.go +++ b/coolq/bot.go @@ -86,20 +86,17 @@ func NewQQBot(cli *client.QQClient) *CQBot { //bot.Client.TempMessageEvent.Subscribe(bot.tempMessageEvent) bot.Client.GroupMuteEvent.Subscribe(bot.groupMutedEvent) bot.Client.GroupRecallEvent.Subscribe(bot.groupRecallEvent) - // TODO 群聊通知消息 运气王 bot.Client.GroupNotifyEvent.Subscribe(bot.groupNotifyEvent) - // TODO 好友戳一戳事件 - //bot.Client.FriendNotifyEvent.Subscribe(bot.friendNotifyEvent) - // TODO 成员获得特殊群头衔 - //bot.Client.MemberSpecialTitleUpdatedEvent.Subscribe(bot.memberTitleUpdatedEvent) + bot.Client.FriendNotifyEvent.Subscribe(bot.friendNotifyEvent) + bot.Client.MemberSpecialTitleUpdatedEvent.Subscribe(bot.memberTitleUpdatedEvent) bot.Client.FriendRecallEvent.Subscribe(bot.friendRecallEvent) // TODO 离线文件 //bot.Client.OfflineFileEvent.Subscribe(bot.offlineFileEvent) // TODO bot加群 - //bot.Client.GroupJoinEvent.Subscribe(bot.joinGroupEvent) + bot.Client.GroupJoinEvent.Subscribe(bot.joinGroupEvent) // TODO bot退群 - //bot.Client.GroupLeaveEvent.Subscribe(bot.leaveGroupEvent) - //bot.Client.GroupMemberJoinEvent.Subscribe(bot.memberJoinEvent) + bot.Client.GroupLeaveEvent.Subscribe(bot.leaveGroupEvent) + bot.Client.GroupMemberJoinEvent.Subscribe(bot.memberJoinEvent) bot.Client.GroupMemberLeaveEvent.Subscribe(bot.memberLeaveEvent) // TODO 群成员权限变更 //bot.Client.GroupMemberPermissionChangedEvent.Subscribe(bot.memberPermissionChangedEvent) @@ -113,7 +110,7 @@ func NewQQBot(cli *client.QQClient) *CQBot { // TODO 客户端变更 //bot.Client.OtherClientStatusChangedEvent.Subscribe(bot.otherClientStatusChangedEvent) // TODO 精华消息 - //bot.Client.GroupDigestEvent.Subscribe(bot.groupEssenceMsg) + bot.Client.GroupDigestEvent.Subscribe(bot.groupEssenceMsg) go func() { if base.HeartbeatInterval == 0 { log.Warn("警告: 心跳功能已关闭,若非预期,请检查配置文件。") @@ -330,30 +327,11 @@ func (bot *CQBot) SendGroupMessage(groupID int64, m *message.SendingMessage) (in m.Elements = newElem bot.checkMedia(newElem, groupID) ret, err := bot.Client.SendGroupMessage(uint32(groupID), m.Elements) - if err != nil || ret == nil || ret.GroupSequence.IsNone() { + if err != nil || ret == nil { log.Warnf("群 %v 发送消息失败: 账号可能被风控.", groupID) return -1, errors.New("send group message failed: blocked by server") } - // TODO 发送完成之后获取*message.GroupMessage - group := bot.Client.GetCachedGroupInfo(uint32(groupID)) - minfo := bot.Client.GetCachedMemberInfo(bot.Client.Uin, uint32(groupID)) - return bot.InsertGroupMessage(&message.GroupMessage{ - Id: int32(ret.GroupSequence.Unwrap()), - InternalId: int32(ret.Timestamp1), - GroupUin: uint32(groupID), - GroupName: group.GroupName, - Sender: &message.Sender{ - Uin: bot.Client.Uin, - Uid: bot.Client.GetUid(bot.Client.Uin), - Nickname: bot.Client.NickName(), - CardName: minfo.MemberCard, - AnonymousInfo: nil, - IsFriend: true, - }, - Time: uint64(ret.Timestamp1), - Elements: m.Elements, - OriginalObject: nil, - }, source), nil + return bot.InsertGroupMessage(ret, source), nil } // SendPrivateMessage 发送私聊消息 @@ -401,22 +379,8 @@ func (bot *CQBot) SendPrivateMessage(target int64, groupID int64, m *message.Sen //session, ok := bot.tempSessionCache.Load(target) var id int32 = -1 ret, err := bot.Client.SendPrivateMessage(uint32(groupID), m.Elements) - if err != nil { - id = bot.InsertPrivateMessage(&message.PrivateMessage{ - Id: int32(ret.PrivateSequence), - InternalId: int32(ret.Timestamp1), - Self: int64(bot.Client.Uin), - Target: target, - Time: int32(ret.Timestamp1), - Sender: &message.Sender{ - Uin: bot.Client.Uin, - Uid: bot.Client.GetUid(bot.Client.Uin), - Nickname: bot.Client.NickName(), - AnonymousInfo: nil, - IsFriend: true, - }, - Elements: nil, - }, source) + if err != nil || ret == nil { + id = bot.InsertPrivateMessage(ret, source) } //switch { //case bot.Client.FindFriend(target) != nil: // 双向好友 @@ -424,7 +388,7 @@ func (bot *CQBot) SendPrivateMessage(target int64, groupID int64, m *message.Sen // if msg != nil { // id = bot.InsertPrivateMessage(msg, source) // } - // TODO 临时会话 + // TODO 应该是不支持临时会话了 //case ok || groupID != 0: // 临时会话 // if !base.AllowTempSession { // log.Warnf("发送临时会话消息失败: 已关闭临时会话信息发送功能") @@ -618,7 +582,7 @@ func formatMemberName(mem *entity.GroupMember) string { if mem == nil { return "未知" } - return fmt.Sprintf("%s(%d)", mem.MemberName, mem.Uin) + return fmt.Sprintf("%s(%d)", mem.DisplayName(), mem.Uin) } // encodeMessageID 临时先这样, 暂时用不上 diff --git a/coolq/event.go b/coolq/event.go index 35adba53d..586a68ccf 100644 --- a/coolq/event.go +++ b/coolq/event.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "path" + "strconv" "strings" "github.com/LagrangeDev/LagrangeGo/utils/binary" @@ -286,11 +287,9 @@ func (bot *CQBot) groupNotifyEvent(c *client.QQClient, e event2.INotifyEvent) { } } -// TODO 好友通知 -/* -func (bot *CQBot) friendNotifyEvent(c *client.QQClient, e client.INotifyEvent) { - friend := c.FindFriend(e.From()) - if notify, ok := e.(*client.FriendPokeNotifyEvent); ok { +func (bot *CQBot) friendNotifyEvent(c *client.QQClient, e event2.INotifyEvent) { + friend := c.GetCachedFriendInfo(e.From()) + if notify, ok := e.(*event2.FriendPokeEvent); ok { if notify.Receiver == notify.Sender { log.Infof("好友 %v 戳了戳自己.", friend.Nickname) } else { @@ -302,19 +301,19 @@ func (bot *CQBot) friendNotifyEvent(c *client.QQClient, e client.INotifyEvent) { "target_id": notify.Receiver, }) } -}*/ +} // TODO 获得新头衔 -/*func (bot *CQBot) memberTitleUpdatedEvent(c *client.QQClient, e *client.MemberSpecialTitleUpdatedEvent) { - group := c.FindGroup(e.GroupCode) - mem := group.FindMember(e.Uin) - log.Infof("群 %v(%v) 内成员 %v(%v) 获得了新的头衔: %v", group.Name, group.Code, mem.DisplayName(), mem.Uin, e.NewTitle) +func (bot *CQBot) memberTitleUpdatedEvent(c *client.QQClient, e *event2.MemberSpecialTitleUpdated) { + group := c.GetCachedGroupInfo(e.GroupUin) + mem := c.GetCachedMemberInfo(e.Uin, e.GroupUin) + log.Infof("群 %v(%v) 内成员 %v(%v) 获得了新的头衔: %v", group.GroupName, group.GroupUin, mem.MemberCard, mem.Uin, e.NewTitle) bot.dispatchEvent("notice/notify/title", global.MSG{ - "group_id": group.Code, + "group_id": group.GroupUin, "user_id": e.Uin, "title": e.NewTitle, }) -}*/ +} func (bot *CQBot) friendRecallEvent(c *client.QQClient, e *event2.FriendRecall) { f := c.GetCachedFriendInfo(c.GetUin(e.FromUid)) @@ -350,35 +349,32 @@ func (bot *CQBot) friendRecallEvent(c *client.QQClient, e *event2.FriendRecall) }*/ // TODO bot自身进群退群 -//func (bot *CQBot) joinGroupEvent(c *client.QQClient, group *entity.Group) { -// if group == nil { -// return -// } -// log.Infof("Bot进入了群 %v.", formatGroupName(group)) -// bot.dispatch(bot.groupIncrease(int64(group.GroupUin), 0, int64(c.Uin))) -//} -// -//func (bot *CQBot) leaveGroupEvent(c *client.QQClient, e *client.GroupLeaveEvent) { -// if e.Operator != nil { -// log.Infof("Bot被 %v T出了群 %v.", formatMemberName(e.Operator), formatGroupName(e.Group)) -// } else { -// log.Infof("Bot退出了群 %v.", formatGroupName(e.Group)) -// } -// bot.dispatch(bot.groupDecrease(e.Group.Code, c.Uin, e.Operator)) -//} +func (bot *CQBot) joinGroupEvent(c *client.QQClient, event *event2.GroupMemberIncrease) { + log.Infof("Bot进入了群 %v.", formatGroupName(c.GetCachedGroupInfo(event.GroupUin))) + bot.dispatch(bot.groupIncrease(int64(event.GroupUin), 0, int64(c.Uin))) +} -// TODO 群权限变更和名片变更 -//func (bot *CQBot) memberPermissionChangedEvent(_ *client.QQClient, e *client.MemberPermissionChangedEvent) { -// st := "unset" -// if e.NewPermission == client.Administrator { -// st = "set" -// } -// bot.dispatchEvent("notice/group_admin/"+st, global.MSG{ -// "group_id": e.Group.Code, -// "user_id": e.Member.Uin, -// }) -//} -// +func (bot *CQBot) leaveGroupEvent(c *client.QQClient, e *event2.GroupMemberDecrease) { + if e.IsKicked() { + log.Infof("Bot被 %v T出了群 %v.", formatMemberName(c.GetCachedMemberInfo(e.OperatorUin, e.GroupUin)), formatGroupName(c.GetCachedGroupInfo(e.GroupUin))) + } else { + log.Infof("Bot退出了群 %v.", formatGroupName(c.GetCachedGroupInfo(e.GroupUin))) + } + bot.dispatch(bot.groupDecrease(int64(e.GroupUin), int64(c.Uin), c.GetCachedMemberInfo(e.OperatorUin, e.GroupUin))) +} + +func (bot *CQBot) memberPermissionChangedEvent(_ *client.QQClient, e *event2.GroupMemberPermissionChanged) { + st := "unset" + if e.IsAdmin { + st = "set" + } + bot.dispatchEvent("notice/group_admin/"+st, global.MSG{ + "group_id": e.GroupUin, + "user_id": e.TargetUin, + }) +} + +// TODO 群名片变更 //func (bot *CQBot) memberCardUpdatedEvent(_ *client.QQClient, e *client.MemberCardUpdatedEvent) { // log.Infof("群 %v 的 %v 更新了名片 %v -> %v", formatGroupName(e.Group), formatMemberName(e.Member), e.OldCard, e.Member.CardName) // bot.dispatchEvent("notice/group_card", global.MSG{ @@ -389,18 +385,16 @@ func (bot *CQBot) friendRecallEvent(c *client.QQClient, e *event2.FriendRecall) // }) //} -// TODO 群成员增加,已实现,等缓存问题解决 -//func (bot *CQBot) memberJoinEvent(c *client.QQClient, e *event2.GroupMemberIncrease) { -// log.Infof("新成员 %v 进入了群 %v.", formatMemberName(c.GetCachedMemberInfo()), formatGroupName(e.Group)) -// bot.dispatch(bot.groupIncrease(e.Group.Code, 0, e.Member.Uin)) -//} +func (bot *CQBot) memberJoinEvent(c *client.QQClient, e *event2.GroupMemberIncrease) { + log.Infof("新成员 %v 进入了群 %v.", formatMemberName(c.GetCachedMemberInfo(e.MemberUin, e.GroupUin)), formatGroupName(c.GetCachedGroupInfo(e.GroupUin))) + bot.dispatch(bot.groupIncrease(int64(e.GroupUin), 0, int64(e.MemberUin))) +} func (bot *CQBot) memberLeaveEvent(c *client.QQClient, e *event2.GroupMemberDecrease) { member := c.GetCachedMemberInfo(c.GetUin(e.MemberUid), e.GroupUin) op := c.GetCachedMemberInfo(c.GetUin(e.OperatorUid), e.GroupUin) group := c.GetCachedGroupInfo(e.GroupUin) if e.IsKicked() { - log.Infof("成员 %v 被 %v T出了群 %v.", formatMemberName(member), formatMemberName(op), formatGroupName(group)) } else { log.Infof("成员 %v 离开了群 %v.", formatMemberName(member), formatGroupName(group)) @@ -409,8 +403,8 @@ func (bot *CQBot) memberLeaveEvent(c *client.QQClient, e *event2.GroupMemberDecr } // TODO 实现了,但是不想写 -//func (bot *CQBot) friendRequestEvent(_ *client.QQClient, e *client.NewFriendRequest) { -// log.Infof("收到来自 %v(%v) 的好友请求: %v", e.RequesterNick, e.RequesterUin, e.Message) +//func (bot *CQBot) friendRequestEvent(_ *client.QQClient, e *event2.NewFriendRequest) { +// log.Infof("收到来自 %v(%v) 的好友请求: %v", e., e.RequesterUin, e.Message) // flag := strconv.FormatInt(e.RequestId, 10) // bot.friendReqCache.Store(flag, e) // bot.dispatchEvent("request/friend", global.MSG{ @@ -428,29 +422,31 @@ func (bot *CQBot) memberLeaveEvent(c *client.QQClient, e *event2.GroupMemberDecr // }) //} -//func (bot *CQBot) groupInvitedEvent(_ *client.QQClient, e *client.GroupInvitedRequest) { -// log.Infof("收到来自群 %v(%v) 内用户 %v(%v) 的加群邀请.", e.GroupName, e.GroupCode, e.InvitorNick, e.InvitorUin) -// flag := strconv.FormatInt(e.RequestId, 10) -// bot.dispatchEvent("request/group/invite", global.MSG{ -// "group_id": e.GroupCode, -// "user_id": e.InvitorUin, -// "invitor_id": 0, -// "comment": "", -// "flag": flag, -// }) -//} +func (bot *CQBot) groupInvitedEvent(_ *client.QQClient, e *event2.GroupInvite) { + // todo: 暂时先这样吧,群名不好拿 + log.Infof("收到来自群 %v(%v) 内用户 %v(%v) 的加群邀请.", e.GroupUin, e.GroupUin, e.InvitorNick, e.InvitorUin) + flag := strconv.FormatInt(int64(e.RequestSeq), 10) + bot.dispatchEvent("request/group/invite", global.MSG{ + "group_id": e.GroupUin, + "user_id": e.InvitorUin, + "invitor_id": 0, + "comment": "", + "flag": flag, + }) +} -//func (bot *CQBot) groupJoinReqEvent(_ *client.QQClient, e *client.UserJoinGroupRequest) { -// log.Infof("群 %v(%v) 收到来自用户 %v(%v) 的加群请求.", e.GroupName, e.GroupCode, e.RequesterNick, e.RequesterUin) -// flag := strconv.FormatInt(e.RequestId, 10) -// bot.dispatchEvent("request/group/add", global.MSG{ -// "group_id": e.GroupCode, -// "user_id": e.RequesterUin, -// "invitor_id": e.ActionUin, -// "comment": e.Message, -// "flag": flag, -// }) -//} +func (bot *CQBot) groupJoinReqEvent(c *client.QQClient, e *event2.GroupMemberJoinRequest) { + group := c.GetCachedGroupInfo(e.GroupUin) + log.Infof("群 %v(%v) 收到来自用户 %v(%v) 的加群请求.", group.GroupName, e.GroupUin, e.TargetNick, e.TargetUin) + flag := strconv.FormatInt(int64(e.RequestSeq), 10) + bot.dispatchEvent("request/group/add", global.MSG{ + "group_id": e.GroupUin, + "user_id": e.TargetUin, + "invitor_id": e.InvitorUin, + "comment": e.Answer, + "flag": flag, + }) +} //func (bot *CQBot) otherClientStatusChangedEvent(_ *client.QQClient, e *client.OtherClientStatusChangedEvent) { // if e.Online { @@ -469,40 +465,40 @@ func (bot *CQBot) memberLeaveEvent(c *client.QQClient, e *event2.GroupMemberDecr //} // TODO 精华消息 -//func (bot *CQBot) groupEssenceMsg(c *client.QQClient, e *client.GroupDigestEvent) { -// g := c.FindGroup(e.GroupCode) -// gid := db.ToGlobalID(e.GroupCode, e.MessageID) -// if e.OperationType == 1 { -// log.Infof( -// "群 %v 内 %v 将 %v 的消息(%v)设为了精华消息.", -// formatGroupName(g), -// formatMemberName(g.FindMember(e.OperatorUin)), -// formatMemberName(g.FindMember(e.SenderUin)), -// gid, -// ) -// } else { -// log.Infof( -// "群 %v 内 %v 将 %v 的消息(%v)移出了精华消息.", -// formatGroupName(g), -// formatMemberName(g.FindMember(e.OperatorUin)), -// formatMemberName(g.FindMember(e.SenderUin)), -// gid, -// ) -// } -// if e.OperatorUin == bot.Client.Uin { -// return -// } -// subtype := "delete" -// if e.OperationType == 1 { -// subtype = "add" -// } -// bot.dispatchEvent("notice/essence/"+subtype, global.MSG{ -// "group_id": e.GroupCode, -// "sender_id": e.SenderUin, -// "operator_id": e.OperatorUin, -// "message_id": gid, -// }) -//} +func (bot *CQBot) groupEssenceMsg(c *client.QQClient, e *event2.GroupDigestEvent) { + g := c.GetCachedGroupInfo(e.GroupUin) + gid := db.ToGlobalID(int64(e.GroupUin), int32(e.MessageID)) + if e.OperationType == 1 { + log.Infof( + "群 %v 内 %v 将 %v 的消息(%v)设为了精华消息.", + formatGroupName(g), + formatMemberName(c.GetCachedMemberInfo(e.OperatorUin, e.GroupUin)), + formatMemberName(c.GetCachedMemberInfo(e.SenderUin, e.GroupUin)), + gid, + ) + } else { + log.Infof( + "群 %v 内 %v 将 %v 的消息(%v)移出了精华消息.", + formatGroupName(g), + formatMemberName(c.GetCachedMemberInfo(e.OperatorUin, e.GroupUin)), + formatMemberName(c.GetCachedMemberInfo(e.SenderUin, e.GroupUin)), + gid, + ) + } + if e.OperatorUin == bot.Client.Uin { + return + } + subtype := "delete" + if e.IsSet() { + subtype = "add" + } + bot.dispatchEvent("notice/essence/"+subtype, global.MSG{ + "group_id": e.GroupUin, + "sender_id": e.SenderUin, + "operator_id": e.OperatorUin, + "message_id": gid, + }) +} func (bot *CQBot) groupIncrease(groupCode, operatorUin, userUin int64) *event { return bot.event("notice/group_increase/approve", global.MSG{ diff --git a/go.mod b/go.mod index d16ceeb91..f2eb3195c 100644 --- a/go.mod +++ b/go.mod @@ -4,12 +4,11 @@ go 1.20 require ( github.com/FloatTech/sqlite v1.6.3 - github.com/LagrangeDev/LagrangeGo v0.0.0-20240717024318-203a7c0610d3 + github.com/LagrangeDev/LagrangeGo v0.0.0-20240724134415-4d4678c79116 github.com/Microsoft/go-winio v0.6.2-0.20230724192519-b29bbd58a65a github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5 github.com/fumiama/go-base16384 v1.7.0 - github.com/fumiama/go-hide-param v0.1.4 github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible github.com/mattn/go-colorable v0.1.13 github.com/pkg/errors v0.9.1 @@ -23,7 +22,6 @@ require ( golang.org/x/crypto v0.23.0 golang.org/x/image v0.18.0 golang.org/x/sys v0.20.0 - golang.org/x/term v0.20.0 golang.org/x/time v0.3.0 gopkg.ilharper.com/x/isatty v1.1.1 gopkg.in/yaml.v3 v3.0.1 @@ -35,17 +33,14 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/fumiama/gofastTEA v0.0.10 // indirect github.com/fumiama/imgsz v0.0.4 // indirect - github.com/fumiama/terasu v0.0.0-20240507144117-547a591149c0 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/uuid v1.3.0 // indirect github.com/jonboulle/clockwork v0.3.0 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/compress v1.13.6 // indirect - github.com/kr/pretty v0.3.1 // indirect github.com/lestrrat-go/strftime v1.0.6 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect - github.com/pierrec/lz4/v4 v4.1.15 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/tidwall/match v1.1.1 // indirect @@ -55,11 +50,9 @@ require ( github.com/xdg-go/stringprep v1.0.4 // indirect github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.25.0 // indirect golang.org/x/sync v0.7.0 // indirect golang.org/x/text v0.16.0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect - google.golang.org/protobuf v1.33.0 // indirect lukechampine.com/uint128 v1.2.0 // indirect modernc.org/cc/v3 v3.40.0 // indirect modernc.org/ccgo/v3 v3.16.13 // indirect diff --git a/go.sum b/go.sum index 01e677d7c..14f1255ab 100644 --- a/go.sum +++ b/go.sum @@ -1,78 +1,35 @@ github.com/FloatTech/sqlite v1.6.3 h1:MQkqBNlkPuCoKQQgoNLuTL/2Ci3tBTFAnVYBdD0Wy4M= github.com/FloatTech/sqlite v1.6.3/go.mod h1:zFbHzRfB+CJ+VidfjuVbrcin3DAz283F7hF1hIeHzpY= -github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b h1:tvciXWq2nuvTbFeJGLDNIdRX3BI546D3O7k7vrVueZw= -github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs= github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1 h1:g4pTnDJUW4VbJ9NvoRfUvdjDrHz/6QhfN/LoIIpICbo= github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240416235247-b81d1b16fda6 h1:MQ8QSrIAi5jq2F55mJmZi0v3kv04SHpEsvKsSkKrrgg= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240416235247-b81d1b16fda6/go.mod h1:EAs5nU3Oq/zHsJt2gkWOl8TodHPphI+ELXZaj7ht2ZQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240417100118-966f6c6c0a52 h1:XZxiSfQNhTc01bhks2VvYIrPyoN/U05AZqSdQhyAzuo= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240417100118-966f6c6c0a52/go.mod h1:EAs5nU3Oq/zHsJt2gkWOl8TodHPphI+ELXZaj7ht2ZQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240417121129-528c6b1b17a5 h1:k7VH7I8hXgGbaG8otZb+KzbwcNmspRXxq7ZFW/UYf9Y= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240417121129-528c6b1b17a5/go.mod h1:EAs5nU3Oq/zHsJt2gkWOl8TodHPphI+ELXZaj7ht2ZQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240419110738-7327b70e6311 h1:AxP60VziJ+tVbTgH6p1K903AiMT/7gr8wNeC/0FL10E= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240419110738-7327b70e6311/go.mod h1:EAs5nU3Oq/zHsJt2gkWOl8TodHPphI+ELXZaj7ht2ZQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240419130028-f53caf3d6638 h1:9nhwslxQdG5y6UdZXfwLwS1yPEHQPPJXtLyrLcQ6/Aw= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240419130028-f53caf3d6638/go.mod h1:EAs5nU3Oq/zHsJt2gkWOl8TodHPphI+ELXZaj7ht2ZQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240420014935-725e7fce68f7 h1:26FfHnHYbIeGLRJKk7i0vsDUJBGp9lLSWHuFbcSwhDo= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240420014935-725e7fce68f7/go.mod h1:EAs5nU3Oq/zHsJt2gkWOl8TodHPphI+ELXZaj7ht2ZQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240420023837-8475ae7444aa h1:FFW2eogFhKrVuN3uGLuTfMWjQfpVzeHCkg3unPxim+8= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240420023837-8475ae7444aa/go.mod h1:EAs5nU3Oq/zHsJt2gkWOl8TodHPphI+ELXZaj7ht2ZQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240421014250-c9520d2d96c7 h1:csU90ZoWyihKg9IDbWdSRK9i4key7/5vTJeXVTH08DY= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240421014250-c9520d2d96c7/go.mod h1:EAs5nU3Oq/zHsJt2gkWOl8TodHPphI+ELXZaj7ht2ZQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240423105733-105692cf8efd h1:35UxgZx6/zoeS9BBXW8t3g9SV6w/LcySdEF0UoMbWIM= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240423105733-105692cf8efd/go.mod h1:EAs5nU3Oq/zHsJt2gkWOl8TodHPphI+ELXZaj7ht2ZQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240423113641-a46c398e835f h1:dpuZWDBtZ7hh44XzieWl8GxnL/4jYq+18Lu6vwbgxPY= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240423113641-a46c398e835f/go.mod h1:EAs5nU3Oq/zHsJt2gkWOl8TodHPphI+ELXZaj7ht2ZQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240423121333-8cb157fdd233 h1:UMItCB/AgS8DQNyvjXYnyoj+i9eYFFTEC1fDq/RXgWY= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240423121333-8cb157fdd233/go.mod h1:EAs5nU3Oq/zHsJt2gkWOl8TodHPphI+ELXZaj7ht2ZQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240423121727-a429a07c568b h1:CyIAB1l+Zshtbfl+T/KEvBKyUQl37Sdc1bJ3uE66E0M= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240423121727-a429a07c568b/go.mod h1:EAs5nU3Oq/zHsJt2gkWOl8TodHPphI+ELXZaj7ht2ZQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240424094005-d8fac1c2dbd2 h1:raTVEJqKyWhmEceVPS66tJj+XqRhNbsZ5GsHZ83D2Ds= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240424094005-d8fac1c2dbd2/go.mod h1:EAs5nU3Oq/zHsJt2gkWOl8TodHPphI+ELXZaj7ht2ZQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240615081559-d665d3b8a3d9 h1:XqORU1BvCoqyEQPlpSxiwqZLejuFrutaDSlI0pN0QuA= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240615081559-d665d3b8a3d9/go.mod h1:bXBGpyljx81ux9ItumiMB67xJGGpe2Sb5CTUFFeTR+Y= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240616110148-79ecc2aefeda h1:I1oLMzMyRcDO1hkjAJSJxq++KZkEffDfF6Hux+PQMOQ= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240616110148-79ecc2aefeda/go.mod h1:bXBGpyljx81ux9ItumiMB67xJGGpe2Sb5CTUFFeTR+Y= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240617074307-0b9e20dd3dd3 h1:rsDAzzXQ7iFoHdRWr+D+w5SizouYwk/kxlQ1l38Zdy0= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240617074307-0b9e20dd3dd3/go.mod h1:bXBGpyljx81ux9ItumiMB67xJGGpe2Sb5CTUFFeTR+Y= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240617132319-6b660aa21e70 h1:wMiF3KUBDm+CScGZZae0+qfmCiclLHRbpvoj4cq41kI= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240617132319-6b660aa21e70/go.mod h1:bXBGpyljx81ux9ItumiMB67xJGGpe2Sb5CTUFFeTR+Y= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240618043710-3a2e702a456d h1:0kfncL4Tjl3hlboChnmjz0KUe2PVs+xKyxbImTX54eI= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240618043710-3a2e702a456d/go.mod h1:bXBGpyljx81ux9ItumiMB67xJGGpe2Sb5CTUFFeTR+Y= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240618124420-cb293c334bcf h1:04hnyJwZOmt/YZM971SG4g1esenHfng0APrwUdmn83g= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240618124420-cb293c334bcf/go.mod h1:bXBGpyljx81ux9ItumiMB67xJGGpe2Sb5CTUFFeTR+Y= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240619132207-b41aaa86d4b0 h1:ZbtpwDZ9Y9FcjFV+QVh67RU7t1PDuMAI5vVlDdQycjo= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240619132207-b41aaa86d4b0/go.mod h1:bXBGpyljx81ux9ItumiMB67xJGGpe2Sb5CTUFFeTR+Y= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240619132605-6126240ba827 h1:kHadPqdFqvXbegZAHd4q8Df3i30J2kzbp+PdfSKZo3E= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240619132605-6126240ba827/go.mod h1:bXBGpyljx81ux9ItumiMB67xJGGpe2Sb5CTUFFeTR+Y= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240620044204-f5d774dbcde9 h1:0aqt14kc/x5jtVl2Xk/LHAjt6JW45+mMVu6jbvW6gaE= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240620044204-f5d774dbcde9/go.mod h1:bXBGpyljx81ux9ItumiMB67xJGGpe2Sb5CTUFFeTR+Y= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240627014402-be848f169052 h1:z5BAKvET+LeWpBmarOVa/cN23j6sM4c98Xve7zIGXzc= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240627014402-be848f169052/go.mod h1:bXBGpyljx81ux9ItumiMB67xJGGpe2Sb5CTUFFeTR+Y= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240628102308-7e959294274a h1:2P9ItthtlI+hZ6Fj033dBurh6SpCdILa2MMFbH3kuLs= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240628102308-7e959294274a/go.mod h1:bXBGpyljx81ux9ItumiMB67xJGGpe2Sb5CTUFFeTR+Y= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240628105048-21b1ba6e0035 h1:CEFp6oupY5IIs+15X1cWnKt/4AN5IYXsqAHpwVUUSMI= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240628105048-21b1ba6e0035/go.mod h1:bXBGpyljx81ux9ItumiMB67xJGGpe2Sb5CTUFFeTR+Y= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240715122710-e3a1cc4eeeb3 h1:xstGCRGX5xG98aQEjCC34nQwXeeBvlAEAIjPfvJZ0lI= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240715122710-e3a1cc4eeeb3/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240717021222-4aac6f33591d h1:3WbTYfInyyobBJY9KFUlHnYgrpOhS982gsKmSLN+5N4= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240717021222-4aac6f33591d/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240717021604-196373b15868 h1:d/BqScaOy55kAIQLZ7lgsLRCD+rut1Ng2DWKIBaxypo= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240717021604-196373b15868/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240717024318-203a7c0610d3 h1:lfHwBHpuGjpRSO2Aav5P1F6ASt+/kx6q1Whi9dE2d80= -github.com/LagrangeDev/LagrangeGo v0.0.0-20240717024318-203a7c0610d3/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240717110441-955af018f68e h1:ZoGD4nbWkSB9GMI3OuZKjxQ/cpch3wSuMvTUAZ/AyIk= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240717110441-955af018f68e/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724040919-856a58883909 h1:fTV+XMS24O0uwO52CX8auU2c6lJC47A0b8Ua+Kz9skI= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724040919-856a58883909/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724091346-e1b14ff9eaaf h1:cTlP0AeajxxXJ8wb8QDvd061rwjHs7WAKfVS7Ko2Ct0= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724091346-e1b14ff9eaaf/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724100811-9072f30ca468 h1:OcpRF76ARyrTIr9M2OvXDWdvatPuCk49+jNofmgj1dI= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724100811-9072f30ca468/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724124310-32be11c1b4e1 h1:d1xpXUJcnX1qeeM+cdQ6SHGfiSj6jMXADCnXSgfRUv8= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724124310-32be11c1b4e1/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724124832-7d9334879adf h1:joM6LLau/4TRkOWgmgrQ7gbuLTeRiH+BYAgd/7Gxs/4= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724124832-7d9334879adf/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724125649-5f59511e36d0 h1:ETgPBGtDYoky3wiFaeVabUv/7rVzxJRv+nD4Wvk9CIo= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724125649-5f59511e36d0/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724130847-7e3ce8889a11 h1:S/QkJc40duUB132Vq3vdqyJxeogUrsxbfzSzlTKnm4A= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724130847-7e3ce8889a11/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724133309-b575ba09ea7c h1:oTvqs/5B8EJnwq8AFvcr1uNffDEaHf1ViztuQjdhg1c= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724133309-b575ba09ea7c/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724134415-4d4678c79116 h1:GU7B1r8Wzuqcqiswpw1WDkZItMH6L+fdLaZ49vcBT74= +github.com/LagrangeDev/LagrangeGo v0.0.0-20240724134415-4d4678c79116/go.mod h1:I3O+WRwggAvE/ndsyF4u3aau52KUnt5U8R9gLabHqws= github.com/Microsoft/go-winio v0.6.2-0.20230724192519-b29bbd58a65a h1:aU1703IHxupjzipvhu16qYKLMR03e+8WuNR+JMsKfGU= github.com/Microsoft/go-winio v0.6.2-0.20230724192519-b29bbd58a65a/go.mod h1:OZqLNXdYJHmx7aqq/T6wAdFEdoGm5nmIfC4kU7M8P8o= github.com/RomiChan/protobuf v0.1.1-0.20230204044148-2ed269a2e54d h1:/Xuj3fIiMY2ls1TwvPKmaqQrtJsPY+c9s+0lOScVHd8= github.com/RomiChan/protobuf v0.1.1-0.20230204044148-2ed269a2e54d/go.mod h1:2Ie+hdBFQpQFDHfeklgxoFmQRCE7O+KwFpISeXq7OwA= -github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e h1:wR3MXQ3VbUlPKOOUwLOYgh/QaJThBTYtsl673O3lqSA= -github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w= github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 h1:S/ferNiehVjNaBMNNBxUjLtVmP/YWD6Yh79RfPv4ehU= github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w= github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5 h1:bBmmB7he0iVN4m5mcehfheeRUEer/Avo4ujnxI3uCqs= github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5/go.mod h1:0UcFaCkhp6vZw6l5Dpq0Dp673CoF9GdvA8lTfst0GiU= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -80,24 +37,17 @@ github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fumiama/go-base16384 v1.7.0 h1:6fep7XPQWxRlh4Hu+KsdH+6+YdUp+w6CwRXtMWSsXCA= github.com/fumiama/go-base16384 v1.7.0/go.mod h1:OEn+947GV5gsbTAnyuUW/SrfxJYUdYupSIQXOuGOcXM= -github.com/fumiama/go-hide-param v0.1.4 h1:y7TRTzZMdCH9GOXnIzU3B+1BSkcmvejVGmGsz4t0DGU= -github.com/fumiama/go-hide-param v0.1.4/go.mod h1:vJkQlJIEI56nIyp7tCQu1/2QOyKtZpudsnJkGk9U1aY= github.com/fumiama/gofastTEA v0.0.10 h1:JJJ+brWD4kie+mmK2TkspDXKzqq0IjXm89aGYfoGhhQ= github.com/fumiama/gofastTEA v0.0.10/go.mod h1:RIdbYZyB4MbH6ZBlPymRaXn3cD6SedlCu5W/HHfMPBk= -github.com/fumiama/imgsz v0.0.2 h1:fAkC0FnIscdKOXwAxlyw3EUba5NzxZdSxGaq3Uyfxak= -github.com/fumiama/imgsz v0.0.2/go.mod h1:dR71mI3I2O5u6+PCpd47M9TZptzP+39tRBcbdIkoqM4= github.com/fumiama/imgsz v0.0.4 h1:Lsasu2hdSSFS+vnD+nvR1UkiRMK7hcpyYCC0FzgSMFI= github.com/fumiama/imgsz v0.0.4/go.mod h1:bISOQVTlw9sRytPwe8ir7tAaEmyz9hSNj9n8mXMBG0E= -github.com/fumiama/terasu v0.0.0-20240507144117-547a591149c0 h1:So/3Bg/m2ZcUvqCzzEjjkjHBjcvnV3AN5tCxwsdMwYU= -github.com/fumiama/terasu v0.0.0-20240507144117-547a591149c0/go.mod h1:UVx8YP1jKKL1Cj+uy+OnQRM2Ih6U36Mqy9GSf7jabsI= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -109,10 +59,6 @@ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNU github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc h1:RKf14vYWi2ttpEmkA4aQ3j4u9dStX2t4M8UM6qqNsG8= github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopuH9ugFRkIXf3YoqHKyrJ9YfUFsckUU9S7B+XP+is= github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible h1:Y6sqxHMyB1D2YSzWkLibYKgg+SwmyFU9dF2hn6MdTj4= @@ -122,7 +68,6 @@ github.com/lestrrat-go/strftime v1.0.6/go.mod h1:f7jQKgV5nnJpYgdEasS+/y7EsTb8ykN github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= @@ -134,9 +79,6 @@ github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0= -github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -144,8 +86,6 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= @@ -161,8 +101,6 @@ github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKs github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= -github.com/tidwall/gjson v1.15.0 h1:5n/pM+v3r5ujuNl4YLZLsQ+UE5jlkLVm7jMzT5Mpolw= -github.com/tidwall/gjson v1.15.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -185,20 +123,11 @@ go.mongodb.org/mongo-driver v1.12.0/go.mod h1:AZkxhPnFJUoH7kZlFkVKucV20K387miPfm golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/image v0.9.0 h1:QrzfX26snvCM20hIhBwuHI/ThTg18b/+kcKdXHvnR+g= -golang.org/x/image v0.9.0/go.mod h1:jtrku+n79PfroUbvDdeUWMAI+heR786BofxrbiSF+J0= -golang.org/x/image v0.16.0 h1:9kloLAKhUufZhA12l5fwnx2NZW39/we1UhBesW433jw= -golang.org/x/image v0.16.0/go.mod h1:ugSZItdV4nOxyqp56HmXwH0Ry0nBCpjnZdpDaIHdoPs= golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ= golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -206,16 +135,10 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -230,31 +153,17 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= @@ -262,20 +171,15 @@ golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= -golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.ilharper.com/x/isatty v1.1.1 h1:RAg32Pxq/nIK4AVtdm9RBqxsxZZX1uRKRSS21E5SHMk= gopkg.ilharper.com/x/isatty v1.1.1/go.mod h1:ofpv77Td5qQO6R1dmDd3oNt8TZdRo+l5gYAMxopRyS0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= diff --git a/modules/api/api.go b/modules/api/api.go index b3a5627fc..9a96412ed 100644 --- a/modules/api/api.go +++ b/modules/api/api.go @@ -21,21 +21,8 @@ func (c *Caller) call(action string, spec *onebot.Spec, p Getter) global.MSG { return c.bot.CQCanSendRecord() case "get_login_info": return c.bot.CQGetLoginInfo() - //case "get_stranger_info": - // p0 := p.Get("user_id").Int() - // return c.bot.CQGetStrangerInfo(p0) case "get_version_info": return c.bot.CQGetVersionInfo() - //case "send_forward_msg": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("user_id").Int() - // p2 := p.Get("messages") - // p3 := p.Get("message_type").String() - // return c.bot.CQSendForwardMessage(p0, p1, p2, p3) - //case "send_group_forward_msg": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("messages") - // return c.bot.CQSendGroupForwardMessage(p0, p1) case "send_group_msg": p0 := p.Get("group_id").Int() p1 := p.Get("message") @@ -48,10 +35,6 @@ func (c *Caller) call(action string, spec *onebot.Spec, p Getter) global.MSG { p3 := p.Get("message_type").String() p4 := p.Get("auto_escape").Bool() return c.bot.CQSendMessage(p0, p1, p2, p3, p4) - //case "send_private_forward_msg": - // p0 := p.Get("user_id").Int() - // p1 := p.Get("messages") - // return c.bot.CQSendPrivateForwardMessage(p0, p1) case "send_private_msg": p0 := p.Get("user_id").Int() p1 := p.Get("group_id").Int() @@ -64,9 +47,6 @@ func (c *Caller) call(action string, spec *onebot.Spec, p Getter) global.MSG { switch action { case "get_self_info": return c.bot.CQGetLoginInfo() - //case "get_user_info": - // p0 := p.Get("user_id").Int() - // return c.bot.CQGetStrangerInfo(p0) case "get_version": return c.bot.CQGetVersion() case "send_message": @@ -78,92 +58,16 @@ func (c *Caller) call(action string, spec *onebot.Spec, p Getter) global.MSG { } } switch action { - //case ".get_word_slices": - // p0 := p.Get("content").String() - // return c.bot.CQGetWordSlices(p0) - //case ".ocr_image", "ocr_image": - // p0 := p.Get("image").String() - // return c.bot.CQOcrImage(p0) - //case "_del_group_notice": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("notice_id").String() - // return c.bot.CQDelGroupMemo(p0, p1) - //case "_get_group_notice": - // p0 := p.Get("group_id").Int() - // return c.bot.CQGetGroupMemo(p0) - //case "_get_model_show": - // p0 := p.Get("model").String() - // return c.bot.CQGetModelShow(p0) - //case "_send_group_notice": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("content").String() - // p2 := p.Get("image").String() - // return c.bot.CQSetGroupMemo(p0, p1, p2) - //case "_set_model_show": - // p0 := p.Get("model").String() - // p1 := p.Get("model_show").String() - // return c.bot.CQSetModelShow(p0, p1) - //case "check_url_safely": - // p0 := p.Get("url").String() - // return c.bot.CQCheckURLSafely(p0) - //case "create_group_file_folder": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("parent_id").String() - // p2 := p.Get("name").String() - // return c.bot.CQGroupFileCreateFolder(p0, p1, p2) - //case "delete_essence_msg": - // p0 := int32(p.Get("message_id").Int()) - // return c.bot.CQDeleteEssenceMessage(p0) - //case "delete_friend": - // p0 := p.Get("[user_id,id].0").Int() - // return c.bot.CQDeleteFriend(p0) - //case "delete_group_file": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("file_id").String() - // p2 := int32(p.Get("[busid,bus_id].0").Int()) - // return c.bot.CQGroupFileDeleteFile(p0, p1, p2) - //case "delete_group_folder": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("folder_id").String() - // return c.bot.CQGroupFileDeleteFolder(p0, p1) - //case "delete_msg": - // p0 := int32(p.Get("message_id").Int()) - // return c.bot.CQDeleteMessage(p0) - //case "delete_unidirectional_friend": - // p0 := p.Get("user_id").Int() - // return c.bot.CQDeleteUnidirectionalFriend(p0) - //case "download_file": - // p0 := p.Get("url").String() - // p1 := p.Get("headers") - // p2 := int(p.Get("thread_count").Int()) - // return c.bot.CQDownloadFile(p0, p1, p2) - //case "get_essence_msg_list": - // p0 := p.Get("group_id").Int() - // return c.bot.CQGetEssenceMessageList(p0) - //case "get_forward_msg": - // p0 := p.Get("[message_id,id].0").String() - // return c.bot.CQGetForwardMessage(p0) - //case "get_friend_list": - // return c.bot.CQGetFriendList(spec) - //case "get_group_at_all_remain": - // p0 := p.Get("group_id").Int() - // return c.bot.CQGetAtAllRemain(p0) - //case "get_group_file_system_info": - // p0 := p.Get("group_id").Int() - // return c.bot.CQGetGroupFileSystemInfo(p0) - //case "get_group_file_url": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("file_id").String() - // p2 := int32(p.Get("[busid,bus_id].0").Int()) - // return c.bot.CQGetGroupFileURL(p0, p1, p2) - //case "get_group_files_by_folder": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("folder_id").String() - // return c.bot.CQGetGroupFilesByFolderID(p0, p1) - //case "get_group_honor_info": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("type").String() - // return c.bot.CQGetGroupHonorInfo(p0, p1) + case "delete_msg": + p0 := int32(p.Get("message_id").Int()) + return c.bot.CQDeleteMessage(p0) + case "download_file": + p0 := p.Get("url").String() + p1 := p.Get("headers") + p2 := int(p.Get("thread_count").Int()) + return c.bot.CQDownloadFile(p0, p1, p2) + case "get_friend_list": + return c.bot.CQGetFriendList(spec) case "get_group_info": p0 := p.Get("group_id").Int() p1 := p.Get("no_cache").Bool() @@ -180,58 +84,28 @@ func (c *Caller) call(action string, spec *onebot.Spec, p Getter) global.MSG { p0 := p.Get("group_id").Int() p1 := p.Get("no_cache").Bool() return c.bot.CQGetGroupMemberList(p0, p1) - //case "get_group_msg_history": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("message_seq").Int() - // return c.bot.CQGetGroupMessageHistory(p0, p1) - //case "get_group_root_files": - // p0 := p.Get("group_id").Int() - // return c.bot.CQGetGroupRootFiles(p0) - //case "get_group_system_msg": - // return c.bot.CQGetGroupSystemMessages() case "get_image": p0 := p.Get("file").String() return c.bot.CQGetImage(p0) case "get_msg": p0 := int32(p.Get("message_id").Int()) return c.bot.CQGetMessage(p0) - //case "get_online_clients": - // p0 := p.Get("no_cache").Bool() - // return c.bot.CQGetOnlineClients(p0) case "get_status": return c.bot.CQGetStatus(spec) case "get_supported_actions": return c.bot.CQGetSupportedActions(spec) - //case "get_unidirectional_friend_list": - // return c.bot.CQGetUnidirectionalFriendList() - //case "mark_msg_as_read": - // p0 := int32(p.Get("message_id").Int()) - // return c.bot.CQMarkMessageAsRead(p0) case "reload_event_filter": p0 := p.Get("file").String() return c.bot.CQReloadEventFilter(p0) - //case "send_group_sign": - // p0 := p.Get("group_id").Int() - // return c.bot.CQSendGroupSign(p0) - //case "set_essence_msg": - // p0 := int32(p.Get("message_id").Int()) - // return c.bot.CQSetEssenceMessage(p0) - //case "set_friend_add_request": - // p0 := p.Get("flag").String() - // p1 := true - // if pt := p.Get("approve"); pt.Exists() { - // p1 = pt.Bool() - // } - // return c.bot.CQProcessFriendRequest(p0, p1) - //case "set_group_add_request": - // p0 := p.Get("flag").String() - // p1 := p.Get("[sub_type,type].0").String() - // p2 := p.Get("reason").String() - // p3 := true - // if pt := p.Get("approve"); pt.Exists() { - // p3 = pt.Bool() - // } - // return c.bot.CQProcessGroupRequest(p0, p1, p2, p3) + case "set_group_add_request": + p0 := p.Get("flag").String() + p1 := p.Get("[sub_type,type].0").String() + p2 := p.Get("reason").String() + p3 := true + if pt := p.Get("approve"); pt.Exists() { + p3 = pt.Bool() + } + return c.bot.CQProcessGroupRequest(p0, p1, p2, p3) case "set_group_admin": p0 := p.Get("group_id").Int() p1 := p.Get("user_id").Int() @@ -240,18 +114,6 @@ func (c *Caller) call(action string, spec *onebot.Spec, p Getter) global.MSG { p2 = pt.Bool() } return c.bot.CQSetGroupAdmin(p0, p1, p2) - //case "set_group_anonymous": - // p0 := p.Get("group_id").Int() - // p1 := true - // if pt := p.Get("enable"); pt.Exists() { - // p1 = pt.Bool() - // } - // return c.bot.CQSetGroupAnonymous(p0, p1) - //case "set_group_anonymous_ban": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("[anonymous_flag,anonymous.flag].0").String() - // p2 := int32(p.Get("duration").Int()) - // return c.bot.CQSetGroupAnonymousBan(p0, p1, p2) case "set_group_ban": p0 := p.Get("group_id").Int() p1 := p.Get("user_id").Int() @@ -278,11 +140,6 @@ func (c *Caller) call(action string, spec *onebot.Spec, p Getter) global.MSG { p0 := p.Get("group_id").Int() p1 := p.Get("group_name").String() return c.bot.CQSetGroupName(p0, p1) - //case "set_group_portrait": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("file").String() - // p2 := p.Get("cache").String() - // return c.bot.CQSetGroupPortrait(p0, p1, p2) case "set_group_special_title": p0 := p.Get("group_id").Int() p1 := p.Get("user_id").Int() @@ -295,24 +152,6 @@ func (c *Caller) call(action string, spec *onebot.Spec, p Getter) global.MSG { p1 = pt.Bool() } return c.bot.CQSetGroupWholeBan(p0, p1) - //case "set_qq_profile": - // p0 := p.Get("nickname") - // p1 := p.Get("company") - // p2 := p.Get("email") - // p3 := p.Get("college") - // p4 := p.Get("personal_note") - // return c.bot.CQSetQQProfile(p0, p1, p2, p3, p4) - //case "upload_group_file": - // p0 := p.Get("group_id").Int() - // p1 := p.Get("file").String() - // p2 := p.Get("name").String() - // p3 := p.Get("folder").String() - // return c.bot.CQUploadGroupFile(p0, p1, p2, p3) - //case "upload_private_file": - // p0 := p.Get("user_id").Int() - // p1 := p.Get("file").String() - // p2 := p.Get("name").String() - // return c.bot.CQUploadPrivateFile(p0, p1, p2) } return coolq.Failed(404, "API_NOT_FOUND", "API不存在") } diff --git a/modules/config/default_config.yml b/modules/config/default_config.yml index cbcba81e9..499114de3 100644 --- a/modules/config/default_config.yml +++ b/modules/config/default_config.yml @@ -22,10 +22,10 @@ account: # 账号相关 # - url: 'https://signserver.example.com' # 线上签名服务器 # ... # - # 服务器不提供自建方法 + # 服务器不提供自建 sign-servers: - url: 'https://sign.ciallo.site/api/sign' # 主签名服务器地址, 必填 - - url: '-' # 备用 + - url: 'https://sign.lagrangecore.org/api/sign/25765' # 备用 # 连续寻找可用签名服务器最大尝试次数 # 为 0 时会在连续 3 次没有找到可用签名服务器后保持使用主签名服务器,不再尝试进行切换备用