github.com/Mrs4s/MiraiGo@v0.0.0-20240226124653-54bdd873e3fe/client/entities.go (about) 1 package client 2 3 import ( 4 "github.com/pkg/errors" 5 6 "github.com/Mrs4s/MiraiGo/binary/jce" 7 "github.com/Mrs4s/MiraiGo/client/internal/auth" 8 "github.com/Mrs4s/MiraiGo/message" 9 ) 10 11 var ( 12 ErrAlreadyOnline = errors.New("already online") 13 ErrMemberNotFound = errors.New("member not found") 14 ErrNotExists = errors.New("not exists") 15 ) 16 17 type ( 18 LoginError int 19 20 QRCodeLoginState int 21 22 MemberPermission int 23 24 UserOnlineStatus int 25 26 ClientProtocol = auth.ProtocolType 27 28 LoginResponse struct { 29 Success bool 30 Code byte 31 Error LoginError 32 33 // Captcha info 34 CaptchaImage []byte 35 CaptchaSign []byte 36 37 // Unsafe device 38 VerifyUrl string 39 40 // SMS needed 41 SMSPhone string 42 43 // other error 44 ErrorMessage string 45 } 46 47 QRCodeLoginResponse struct { 48 State QRCodeLoginState 49 50 ImageData []byte 51 Sig []byte 52 53 LoginInfo *QRCodeLoginInfo 54 } 55 56 QRCodeLoginInfo struct { 57 tmpPwd []byte 58 tmpNoPicSig []byte 59 tgtQR []byte 60 } 61 62 FriendInfo struct { 63 Uin int64 64 Nickname string 65 Remark string 66 FaceId int16 67 // msgSeqList *utils.Cache 68 } 69 70 SummaryCardInfo struct { 71 Uin int64 72 Sex byte 73 Age uint8 74 Nickname string 75 Level int32 76 City string 77 Sign string 78 Mobile string 79 LoginDays int64 80 Qid string 81 VipLevel string 82 } 83 84 OtherClientInfo struct { 85 AppId int64 86 DeviceName string 87 DeviceKind string 88 } 89 90 FriendListResponse struct { 91 TotalCount int32 92 List []*FriendInfo 93 } 94 95 OtherClientStatusChangedEvent struct { 96 Client *OtherClientInfo 97 Online bool 98 } 99 100 GroupMuteEvent struct { 101 GroupCode int64 102 OperatorUin int64 103 TargetUin int64 104 Time int32 105 } 106 107 GroupMessageRecalledEvent struct { 108 GroupCode int64 109 OperatorUin int64 110 AuthorUin int64 111 MessageId int32 112 Time int32 113 } 114 115 FriendMessageRecalledEvent struct { 116 FriendUin int64 117 MessageId int32 118 Time int64 119 } 120 121 TempMessageEvent struct { 122 Message *message.TempMessage 123 Session *TempSessionInfo 124 } 125 126 GroupLeaveEvent struct { 127 Group *GroupInfo 128 Operator *GroupMemberInfo 129 } 130 131 MemberJoinGroupEvent struct { 132 Group *GroupInfo 133 Member *GroupMemberInfo 134 } 135 136 GroupNameUpdatedEvent struct { 137 Group *GroupInfo 138 OldName string 139 NewName string 140 OperatorUin int64 141 } 142 143 MemberCardUpdatedEvent struct { 144 Group *GroupInfo 145 OldCard string 146 Member *GroupMemberInfo 147 } 148 149 INotifyEvent interface { 150 From() int64 151 Content() string 152 } 153 154 MemberLeaveGroupEvent struct { 155 Group *GroupInfo 156 Member *GroupMemberInfo 157 Operator *GroupMemberInfo 158 } 159 160 MemberPermissionChangedEvent struct { 161 Group *GroupInfo 162 Member *GroupMemberInfo 163 OldPermission MemberPermission 164 NewPermission MemberPermission 165 } 166 167 ClientDisconnectedEvent struct { 168 Message string 169 } 170 171 NewFriendRequest struct { 172 RequestId int64 173 Message string 174 RequesterUin int64 175 RequesterNick string 176 177 client *QQClient 178 } 179 180 ServerUpdatedEvent struct { 181 Servers []jce.SsoServerInfo 182 } 183 184 NewFriendEvent struct { 185 Friend *FriendInfo 186 } 187 188 OfflineFileEvent struct { 189 FileName string 190 FileSize int64 191 Sender int64 192 DownloadUrl string 193 } 194 195 GroupDisbandEvent struct { 196 Group *GroupInfo 197 Time int64 198 Operator *GroupMemberInfo 199 } 200 201 DeleteFriendEvent struct { 202 Uin int64 203 Nickname string 204 } 205 206 // GroupDigest 群精华消息 207 GroupDigest struct { 208 GroupCode int64 `json:"group_code,string"` 209 MessageID uint32 `json:"msg_seq"` 210 InternalMessageID uint32 `json:"msg_random"` 211 SenderUin int64 `json:"sender_uin,string"` 212 SenderNick string `json:"sender_nick"` 213 SenderTime int64 `json:"sender_time"` 214 AddDigestUin int64 `json:"add_digest_uin,string"` 215 AddDigestNick string `json:"add_digest_nick"` 216 AddDigestTime int64 `json:"add_digest_time"` 217 } 218 219 // GroupDigestEvent 群精华消息 不知道tx为什么搞两种名字 220 GroupDigestEvent struct { 221 GroupCode int64 222 MessageID int32 223 InternalMessageID int32 224 OperationType int32 // 1 -> 设置精华消息, 2 -> 移除精华消息 225 OperateTime uint32 226 SenderUin int64 227 OperatorUin int64 228 SenderNick string 229 OperatorNick string 230 } 231 232 GuildMessageReactionsUpdatedEvent struct { 233 OperatorId uint64 // OperatorId 操作者TinyId, 删除贴表情的事件下不会有值 234 EmojiId int32 // EmojiId 被贴的表情, 只有自身消息被贴表情才会有值 235 GuildId uint64 236 ChannelId uint64 237 MessageId uint64 238 // MessageSenderUin int64 // MessageSenderUin 被贴表情的消息发送者QQ号 239 CurrentReactions []*message.GuildMessageEmojiReaction 240 } 241 242 GuildChannelUpdatedEvent struct { 243 OperatorId uint64 244 GuildId uint64 245 ChannelId uint64 246 OldChannelInfo *ChannelInfo 247 NewChannelInfo *ChannelInfo 248 } 249 250 GuildMessageRecalledEvent struct { 251 OperatorId uint64 252 GuildId uint64 253 ChannelId uint64 254 MessageId uint64 255 RecallTime int64 256 } 257 258 GuildChannelOperationEvent struct { 259 OperatorId uint64 260 GuildId uint64 261 ChannelInfo *ChannelInfo 262 } 263 264 MemberJoinGuildEvent struct { 265 Guild *GuildInfo 266 Member *GuildMemberInfo 267 } 268 269 OcrResponse struct { 270 Texts []*TextDetection `json:"texts"` 271 Language string `json:"language"` 272 } 273 274 TextDetection struct { 275 Text string `json:"text"` 276 Confidence int32 `json:"confidence"` 277 Coordinates []*Coordinate `json:"coordinates"` 278 } 279 280 Coordinate struct { 281 X int32 `json:"x"` 282 Y int32 `json:"y"` 283 } 284 285 AtAllRemainInfo struct { 286 CanAtAll bool `json:"can_at_all"` 287 RemainAtAllCountForGroup uint32 `json:"remain_at_all_count_for_group"` 288 RemainAtAllCountForUin uint32 `json:"remain_at_all_count_for_uin"` 289 } 290 291 groupMemberListResponse struct { 292 NextUin int64 293 list []*GroupMemberInfo 294 } 295 296 groupMessageReceiptEvent struct { 297 Rand int32 298 Seq int32 299 Msg *message.GroupMessage 300 } 301 302 bigDataSessionInfo struct { 303 SigSession []byte 304 SessionKey []byte 305 } 306 307 // unit is an alias for struct{}, like `()` in rust 308 unit = struct{} 309 ) 310 311 //go:generate stringer -type=LoginError 312 const ( 313 NeedCaptcha LoginError = 1 314 OtherLoginError LoginError = 3 315 UnsafeDeviceError LoginError = 4 316 SMSNeededError LoginError = 5 317 TooManySMSRequestError LoginError = 6 318 SMSOrVerifyNeededError LoginError = 7 319 SliderNeededError LoginError = 8 320 UnknownLoginError LoginError = -1 321 322 QRCodeImageFetch QRCodeLoginState = 1 323 QRCodeWaitingForScan QRCodeLoginState = 2 324 QRCodeWaitingForConfirm QRCodeLoginState = 3 325 QRCodeTimeout QRCodeLoginState = 4 326 QRCodeConfirmed QRCodeLoginState = 5 327 QRCodeCanceled QRCodeLoginState = 6 328 329 StatusOnline UserOnlineStatus = 11 // 在线 330 StatusOffline UserOnlineStatus = 21 // 离线 331 StatusAway UserOnlineStatus = 31 // 离开 332 StatusInvisible UserOnlineStatus = 41 // 隐身 333 StatusBusy UserOnlineStatus = 50 // 忙 334 StatusBattery UserOnlineStatus = 1000 // 当前电量 335 StatusListening UserOnlineStatus = 1028 // 听歌中 336 StatusConstellation UserOnlineStatus = 1040 // 星座运势 337 StatusWeather UserOnlineStatus = 1030 // 今日天气 338 StatusMeetSpring UserOnlineStatus = 1069 // 遇见春天 339 StatusTimi UserOnlineStatus = 1027 // Timi中 340 StatusEatChicken UserOnlineStatus = 1064 // 吃鸡中 341 StatusLoving UserOnlineStatus = 1051 // 恋爱中 342 StatusWangWang UserOnlineStatus = 1053 // 汪汪汪 343 StatusCookedRice UserOnlineStatus = 1019 // 干饭中 344 StatusStudy UserOnlineStatus = 1018 // 学习中 345 StatusStayUp UserOnlineStatus = 1032 // 熬夜中 346 StatusPlayBall UserOnlineStatus = 1050 // 打球中 347 StatusSignal UserOnlineStatus = 1011 // 信号弱 348 StatusStudyOnline UserOnlineStatus = 1024 // 在线学习 349 StatusGaming UserOnlineStatus = 1017 // 游戏中 350 StatusVacationing UserOnlineStatus = 1022 // 度假中 351 StatusWatchingTV UserOnlineStatus = 1021 // 追剧中 352 StatusFitness UserOnlineStatus = 1020 // 健身中 353 354 Owner MemberPermission = 1 355 Administrator MemberPermission = 2 356 Member MemberPermission = 3 357 358 Unset = auth.Unset 359 AndroidPhone = auth.AndroidPhone 360 AndroidWatch = auth.AndroidWatch 361 MacOS = auth.MacOS 362 QiDian = auth.QiDian 363 IPad = auth.IPad 364 AndroidPad = auth.AndroidPad 365 ) 366 367 func (r *UserJoinGroupRequest) Accept() { 368 r.client.SolveGroupJoinRequest(r, true, false, "") 369 } 370 371 func (r *UserJoinGroupRequest) Reject(block bool, reason string) { 372 r.client.SolveGroupJoinRequest(r, false, block, reason) 373 } 374 375 func (r *GroupInvitedRequest) Accept() { 376 r.client.SolveGroupJoinRequest(r, true, false, "") 377 } 378 379 func (r *GroupInvitedRequest) Reject(block bool, reason string) { 380 r.client.SolveGroupJoinRequest(r, false, block, reason) 381 } 382 383 func (r *NewFriendRequest) Accept() { 384 r.client.SolveFriendRequest(r, true) 385 } 386 387 func (r *NewFriendRequest) Reject() { 388 r.client.SolveFriendRequest(r, false) 389 }