mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 19:17:38 +08:00
feat delete essence msg
This commit is contained in:
parent
45e92df91d
commit
2c545874fd
@ -14,6 +14,7 @@ import (
|
|||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
"math"
|
"math"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -23,6 +24,7 @@ func init() {
|
|||||||
decoders["MessageSvc.PbGetGroupMsg"] = decodeGetGroupMsgResponse
|
decoders["MessageSvc.PbGetGroupMsg"] = decodeGetGroupMsgResponse
|
||||||
decoders["OidbSvc.0x8a7_0"] = decodeAtAllRemainResponse
|
decoders["OidbSvc.0x8a7_0"] = decodeAtAllRemainResponse
|
||||||
decoders["OidbSvc.0xeac_1"] = decodeEssenceMsgResponse
|
decoders["OidbSvc.0xeac_1"] = decodeEssenceMsgResponse
|
||||||
|
decoders["OidbSvc.0xeac_2"] = decodeEssenceMsgResponse
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendGroupMessage 发送群消息
|
// SendGroupMessage 发送群消息
|
||||||
@ -522,9 +524,9 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage {
|
|||||||
return g
|
return g
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetEssenceMessage 设置群精华消息
|
// SetEssenceMessage 设为群精华消息
|
||||||
func (c *QQClient) SetEssenceMessage(groupCode int64, msgId, msgInternalId int32) error {
|
func (c *QQClient) SetEssenceMessage(groupCode int64, msgId, msgInternalId int32) error {
|
||||||
r, err := c.sendAndWait(c.buildSetEssenceMsgPacket(groupCode, uint32(msgId), uint32(msgInternalId)))
|
r, err := c.sendAndWait(c.buildEssenceMsgOperatePacket(groupCode, uint32(msgId), uint32(msgInternalId), 1))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "set essence msg network:")
|
return errors.Wrap(err, "set essence msg network:")
|
||||||
}
|
}
|
||||||
@ -535,18 +537,32 @@ func (c *QQClient) SetEssenceMessage(groupCode int64, msgId, msgInternalId int32
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *QQClient) buildSetEssenceMsgPacket(groupCode int64, msgSeq, msgRand uint32) (uint16, []byte) {
|
// DeleteEssenceMessage 移出群精华消息
|
||||||
|
func (c *QQClient) DeleteEssenceMessage(groupCode int64, msgId, msgInternalId int32) error {
|
||||||
|
r, err := c.sendAndWait(c.buildEssenceMsgOperatePacket(groupCode, uint32(msgId), uint32(msgInternalId), 2))
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "set essence msg network:")
|
||||||
|
}
|
||||||
|
rsp := r.(*oidb.EACRspBody)
|
||||||
|
if rsp.GetErrorCode() != 0 {
|
||||||
|
return errors.New(rsp.GetWording())
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *QQClient) buildEssenceMsgOperatePacket(groupCode int64, msgSeq, msgRand, opType uint32) (uint16, []byte) {
|
||||||
seq := c.nextSeq()
|
seq := c.nextSeq()
|
||||||
payload := c.packOIDBPackageProto(3756, 1, &oidb.EACReqBody{ // serviceType 2 取消
|
commandName := "OidbSvc.0xeac_" + strconv.FormatInt(int64(opType), 10)
|
||||||
|
payload := c.packOIDBPackageProto(3756, int32(opType), &oidb.EACReqBody{ // serviceType 2 取消
|
||||||
GroupCode: proto.Uint64(uint64(groupCode)),
|
GroupCode: proto.Uint64(uint64(groupCode)),
|
||||||
Seq: proto.Uint32(msgSeq),
|
Seq: proto.Uint32(msgSeq),
|
||||||
Random: proto.Uint32(msgRand),
|
Random: proto.Uint32(msgRand),
|
||||||
})
|
})
|
||||||
packet := packets.BuildUniPacket(c.Uin, seq, "OidbSvc.0xeac_1", 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload)
|
packet := packets.BuildUniPacket(c.Uin, seq, commandName, 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload)
|
||||||
return seq, packet
|
return seq, packet
|
||||||
}
|
}
|
||||||
|
|
||||||
// OidbSvc.0xeac_1
|
// OidbSvc.0xeac_1/2
|
||||||
func decodeEssenceMsgResponse(_ *QQClient, _ uint16, payload []byte) (interface{}, error) {
|
func decodeEssenceMsgResponse(_ *QQClient, _ uint16, payload []byte) (interface{}, error) {
|
||||||
pkg := oidb.OIDBSSOPkg{}
|
pkg := oidb.OIDBSSOPkg{}
|
||||||
rsp := &oidb.EACRspBody{}
|
rsp := &oidb.EACRspBody{}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user