| 61 | } |
| 62 | |
| 63 | type QQClient struct { |
| 64 | Uin uint32 |
| 65 | signProvider sign.Provider |
| 66 | |
| 67 | stat Statistics |
| 68 | once sync.Once |
| 69 | |
| 70 | Online atomic.Bool |
| 71 | |
| 72 | t106 []byte |
| 73 | t16a []byte |
| 74 | PasswordMD5 [16]byte |
| 75 | |
| 76 | UA string |
| 77 | |
| 78 | TCP network.TCPClient // todo: combine other protocol state into one struct |
| 79 | ConnectTime time.Time |
| 80 | transport network.Transport |
| 81 | oicq *oicq.Codec |
| 82 | logger log.Logger |
| 83 | highwaySession highway.Session |
| 84 | ticket *TicketService |
| 85 | |
| 86 | // internal state |
| 87 | handlers syncx.Map[uint32, *handlerInfo] |
| 88 | waiters syncx.Map[string, func(any, error)] |
| 89 | initServerOnce sync.Once |
| 90 | servers []netip.AddrPort |
| 91 | currServerIndex int |
| 92 | retryTimes int |
| 93 | alive bool |
| 94 | |
| 95 | cache cache.Cache |
| 96 | |
| 97 | // event handles |
| 98 | GroupMessageEvent EventHandle[*message.GroupMessage] |
| 99 | PrivateMessageEvent EventHandle[*message.PrivateMessage] |
| 100 | TempMessageEvent EventHandle[*message.TempMessage] |
| 101 | |
| 102 | SelfGroupMessageEvent EventHandle[*message.GroupMessage] |
| 103 | SelfPrivateMessageEvent EventHandle[*message.PrivateMessage] |
| 104 | SelfTempMessageEvent EventHandle[*message.TempMessage] |
| 105 | |
| 106 | GroupJoinEvent EventHandle[*event.GroupMemberIncrease] // bot进群 |
| 107 | GroupLeaveEvent EventHandle[*event.GroupMemberDecrease] // bot 退群 |
| 108 | |
| 109 | GroupInvitedEvent EventHandle[*event.GroupInvite] // 被邀请入群 |
| 110 | GroupMemberJoinRequestEvent EventHandle[*event.GroupMemberJoinRequest] // 加群申请 |
| 111 | GroupMemberJoinEvent EventHandle[*event.GroupMemberIncrease] // 成员入群 |
| 112 | GroupMemberLeaveEvent EventHandle[*event.GroupMemberDecrease] // 成员退群 |
| 113 | GroupMuteEvent EventHandle[*event.GroupMute] |
| 114 | GroupDigestEvent EventHandle[*event.GroupDigestEvent] // 精华消息 |
| 115 | GroupRecallEvent EventHandle[*event.GroupRecall] |
| 116 | GroupMemberPermissionChangedEvent EventHandle[*event.GroupMemberPermissionChanged] |
| 117 | GroupNameUpdatedEvent EventHandle[*event.GroupNameUpdated] |
| 118 | GroupReactionEvent EventHandle[*event.GroupReactionEvent] |
| 119 | MemberSpecialTitleUpdatedEvent EventHandle[*event.MemberSpecialTitleUpdated] |
| 120 | NewFriendEvent EventHandle[*event.NewFriend] |
nothing calls this directly
no outgoing calls
no test coverage detected