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"`
|
Version int32 `jceId:"2"`
|
||||||
ReqServices [][]byte `jceId:"3"` // busi
|
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 {
|
func (pkt *RequestPacket) ToBytes() []byte {
|
||||||
@ -838,3 +846,9 @@ func (pkt *SvcReqRegisterNew) ToBytes() []byte {
|
|||||||
w.WriteJceStructRaw(pkt)
|
w.WriteJceStructRaw(pkt)
|
||||||
return w.Bytes()
|
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
|
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
|
// friendlist.GetTroopListReqV2
|
||||||
func (c *QQClient) buildGroupListRequestPacket(vecCookie []byte) (uint16, []byte) {
|
func (c *QQClient) buildGroupListRequestPacket(vecCookie []byte) (uint16, []byte) {
|
||||||
seq := c.nextSeq()
|
seq := c.nextSeq()
|
||||||
@ -665,10 +690,8 @@ func (c *QQClient) buildGroupListRequestPacket(vecCookie []byte) (uint16, []byte
|
|||||||
VersionNum: 1,
|
VersionNum: 1,
|
||||||
GetLongGroupName: 1,
|
GetLongGroupName: 1,
|
||||||
}
|
}
|
||||||
b := append([]byte{0x0A}, req.ToBytes()...)
|
|
||||||
b = append(b, 0x0B)
|
|
||||||
buf := &jce.RequestDataVersion3{
|
buf := &jce.RequestDataVersion3{
|
||||||
Map: map[string][]byte{"GetTroopListReqV2Simplify": b},
|
Map: map[string][]byte{"GetTroopListReqV2Simplify": packUniRequestData(req.ToBytes())},
|
||||||
}
|
}
|
||||||
pkt := &jce.RequestPacket{
|
pkt := &jce.RequestPacket{
|
||||||
IVersion: 3,
|
IVersion: 3,
|
||||||
|
@ -141,6 +141,7 @@ var decoders = map[string]func(*QQClient, *incomingPacketInfo, []byte) (interfac
|
|||||||
"MessageSvc.PushForceOffline": decodeForceOfflinePacket,
|
"MessageSvc.PushForceOffline": decodeForceOfflinePacket,
|
||||||
"PbMessageSvc.PbMsgWithDraw": decodeMsgWithDrawResponse,
|
"PbMessageSvc.PbMsgWithDraw": decodeMsgWithDrawResponse,
|
||||||
"friendlist.getFriendGroupList": decodeFriendGroupListResponse,
|
"friendlist.getFriendGroupList": decodeFriendGroupListResponse,
|
||||||
|
"friendlist.delFriend": decodeFriendDeleteResponse,
|
||||||
"friendlist.GetTroopListReqV2": decodeGroupListResponse,
|
"friendlist.GetTroopListReqV2": decodeGroupListResponse,
|
||||||
"friendlist.GetTroopMemberListReq": decodeGroupMemberListResponse,
|
"friendlist.GetTroopMemberListReq": decodeGroupMemberListResponse,
|
||||||
"group_member_card.get_group_member_card_info": decodeGroupMemberInfoResponse,
|
"group_member_card.get_group_member_card_info": decodeGroupMemberInfoResponse,
|
||||||
@ -715,6 +716,14 @@ func (c *QQClient) FindFriend(uin int64) *FriendInfo {
|
|||||||
return nil
|
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 {
|
func (c *QQClient) FindGroupByUin(uin int64) *GroupInfo {
|
||||||
for _, g := range c.GroupList {
|
for _, g := range c.GroupList {
|
||||||
f := g
|
f := g
|
||||||
|
@ -481,6 +481,19 @@ func decodeFriendGroupListResponse(_ *QQClient, _ *incomingPacketInfo, payload [
|
|||||||
return rsp, nil
|
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
|
// friendlist.GetTroopListReqV2
|
||||||
func decodeGroupListResponse(c *QQClient, _ *incomingPacketInfo, payload []byte) (interface{}, error) {
|
func decodeGroupListResponse(c *QQClient, _ *incomingPacketInfo, payload []byte) (interface{}, error) {
|
||||||
request := &jce.RequestPacket{}
|
request := &jce.RequestPacket{}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user