mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 19:17:38 +08:00
feat: delete friend.
This commit is contained in:
parent
fd31a4eb28
commit
b66d8a9a95
@ -529,6 +529,14 @@ type (
|
||||
Version int32 `jceId:"2"`
|
||||
ReqServices [][]byte `jceId:"3"` // busi
|
||||
}
|
||||
|
||||
DelFriendReq struct {
|
||||
IJceStruct
|
||||
Uin int64 `jceId:"0"`
|
||||
DelUin int64 `jceId:"1"`
|
||||
DelType byte `jceId:"2"`
|
||||
Version int32 `jceId:"3"`
|
||||
}
|
||||
)
|
||||
|
||||
func (pkt *RequestPacket) ToBytes() []byte {
|
||||
@ -838,3 +846,9 @@ func (pkt *SvcReqRegisterNew) ToBytes() []byte {
|
||||
w.WriteJceStructRaw(pkt)
|
||||
return w.Bytes()
|
||||
}
|
||||
|
||||
func (pkt *DelFriendReq) ToBytes() []byte {
|
||||
w := NewJceWriter()
|
||||
w.WriteJceStructRaw(pkt)
|
||||
return w.Bytes()
|
||||
}
|
||||
|
@ -651,6 +651,31 @@ func (c *QQClient) buildSummaryCardRequestPacket(target int64) (uint16, []byte)
|
||||
return seq, packet
|
||||
}
|
||||
|
||||
// friendlist.delFriend
|
||||
func (c *QQClient) buildFriendDeletePacket(target int64) (uint16, []byte) {
|
||||
seq := c.nextSeq()
|
||||
req := &jce.DelFriendReq{
|
||||
Uin: c.Uin,
|
||||
DelUin: target,
|
||||
DelType: 2,
|
||||
Version: 1,
|
||||
}
|
||||
buf := &jce.RequestDataVersion3{
|
||||
Map: map[string][]byte{"DF": packUniRequestData(req.ToBytes())},
|
||||
}
|
||||
pkt := &jce.RequestPacket{
|
||||
IVersion: 3,
|
||||
IRequestId: c.nextPacketSeq(),
|
||||
SServantName: "mqq.IMService.FriendListServiceServantObj",
|
||||
SFuncName: "DelFriendReq",
|
||||
SBuffer: buf.ToBytes(),
|
||||
Context: make(map[string]string),
|
||||
Status: make(map[string]string),
|
||||
}
|
||||
packet := packets.BuildUniPacket(c.Uin, seq, "friendlist.delFriend", 1, c.OutGoingPacketSessionId, []byte{}, c.sigInfo.d2Key, pkt.ToBytes())
|
||||
return seq, packet
|
||||
}
|
||||
|
||||
// friendlist.GetTroopListReqV2
|
||||
func (c *QQClient) buildGroupListRequestPacket(vecCookie []byte) (uint16, []byte) {
|
||||
seq := c.nextSeq()
|
||||
@ -665,10 +690,8 @@ func (c *QQClient) buildGroupListRequestPacket(vecCookie []byte) (uint16, []byte
|
||||
VersionNum: 1,
|
||||
GetLongGroupName: 1,
|
||||
}
|
||||
b := append([]byte{0x0A}, req.ToBytes()...)
|
||||
b = append(b, 0x0B)
|
||||
buf := &jce.RequestDataVersion3{
|
||||
Map: map[string][]byte{"GetTroopListReqV2Simplify": b},
|
||||
Map: map[string][]byte{"GetTroopListReqV2Simplify": packUniRequestData(req.ToBytes())},
|
||||
}
|
||||
pkt := &jce.RequestPacket{
|
||||
IVersion: 3,
|
||||
|
@ -141,6 +141,7 @@ var decoders = map[string]func(*QQClient, *incomingPacketInfo, []byte) (interfac
|
||||
"MessageSvc.PushForceOffline": decodeForceOfflinePacket,
|
||||
"PbMessageSvc.PbMsgWithDraw": decodeMsgWithDrawResponse,
|
||||
"friendlist.getFriendGroupList": decodeFriendGroupListResponse,
|
||||
"friendlist.delFriend": decodeFriendDeleteResponse,
|
||||
"friendlist.GetTroopListReqV2": decodeGroupListResponse,
|
||||
"friendlist.GetTroopMemberListReq": decodeGroupMemberListResponse,
|
||||
"group_member_card.get_group_member_card_info": decodeGroupMemberInfoResponse,
|
||||
@ -715,6 +716,14 @@ func (c *QQClient) FindFriend(uin int64) *FriendInfo {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *QQClient) DeleteFriend(uin int64) error {
|
||||
if c.FindFriend(uin) == nil {
|
||||
return errors.New("friend not found")
|
||||
}
|
||||
_, err := c.sendAndWait(c.buildFriendDeletePacket(uin))
|
||||
return errors.Wrap(err, "delete friend error")
|
||||
}
|
||||
|
||||
func (c *QQClient) FindGroupByUin(uin int64) *GroupInfo {
|
||||
for _, g := range c.GroupList {
|
||||
f := g
|
||||
|
@ -481,6 +481,19 @@ func decodeFriendGroupListResponse(_ *QQClient, _ *incomingPacketInfo, payload [
|
||||
return rsp, nil
|
||||
}
|
||||
|
||||
// friendlist.delFriend
|
||||
func decodeFriendDeleteResponse(_ *QQClient, _ *incomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
request := &jce.RequestPacket{}
|
||||
request.ReadFrom(jce.NewJceReader(payload))
|
||||
data := &jce.RequestDataVersion3{}
|
||||
data.ReadFrom(jce.NewJceReader(request.SBuffer))
|
||||
r := jce.NewJceReader(data.Map["DFRESP"][1:])
|
||||
if ret := r.ReadInt32(2); ret != 0 {
|
||||
return nil, errors.Errorf("delete friend error: %v", ret)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// friendlist.GetTroopListReqV2
|
||||
func decodeGroupListResponse(c *QQClient, _ *incomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
request := &jce.RequestPacket{}
|
||||
|
Loading…
x
Reference in New Issue
Block a user