1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-05 03:23:50 +08:00

feat delete essence msg

This commit is contained in:
wdvxdr 2021-02-02 19:35:14 +08:00
parent 45e92df91d
commit 2c545874fd
No known key found for this signature in database
GPG Key ID: 55FF1414A69CEBA6

View File

@ -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{}