mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 19:17:38 +08:00
feat get essence msg list
This commit is contained in:
parent
2c545874fd
commit
c738ae9bc3
@ -162,6 +162,19 @@ type (
|
|||||||
DownloadUrl string
|
DownloadUrl string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GroupDigest 群精华消息
|
||||||
|
GroupDigest struct {
|
||||||
|
GroupCode string `json:"group_code"`
|
||||||
|
MessageID uint32 `json:"msg_seq"`
|
||||||
|
InternalMessageID uint32 `json:"msg_random"`
|
||||||
|
SenderUin string `json:"sender_uin"`
|
||||||
|
SenderNick string `json:"sender_nick"`
|
||||||
|
SenderTime int64 `json:"sender_time"`
|
||||||
|
AddDigestUin string `json:"add_digest_uin"`
|
||||||
|
AddDigestNick string `json:"add_digest_nick"`
|
||||||
|
AddDigestTime int64 `json:"add_digest_time"`
|
||||||
|
}
|
||||||
|
|
||||||
// GroupDigestEvent 群精华消息 不知道tx为什么搞两种名字
|
// GroupDigestEvent 群精华消息 不知道tx为什么搞两种名字
|
||||||
GroupDigestEvent struct {
|
GroupDigestEvent struct {
|
||||||
GroupCode int64
|
GroupCode int64
|
||||||
|
@ -1,8 +1,14 @@
|
|||||||
package client
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math"
|
||||||
|
"math/rand"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/Mrs4s/MiraiGo/client/pb/longmsg"
|
"github.com/Mrs4s/MiraiGo/client/pb/longmsg"
|
||||||
"github.com/Mrs4s/MiraiGo/client/pb/msg"
|
"github.com/Mrs4s/MiraiGo/client/pb/msg"
|
||||||
"github.com/Mrs4s/MiraiGo/client/pb/multimsg"
|
"github.com/Mrs4s/MiraiGo/client/pb/multimsg"
|
||||||
@ -10,12 +16,9 @@ import (
|
|||||||
"github.com/Mrs4s/MiraiGo/message"
|
"github.com/Mrs4s/MiraiGo/message"
|
||||||
"github.com/Mrs4s/MiraiGo/protocol/packets"
|
"github.com/Mrs4s/MiraiGo/protocol/packets"
|
||||||
"github.com/Mrs4s/MiraiGo/utils"
|
"github.com/Mrs4s/MiraiGo/utils"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
"math"
|
|
||||||
"math/rand"
|
|
||||||
"strconv"
|
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -528,7 +531,7 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage {
|
|||||||
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.buildEssenceMsgOperatePacket(groupCode, uint32(msgId), uint32(msgInternalId), 1))
|
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")
|
||||||
}
|
}
|
||||||
rsp := r.(*oidb.EACRspBody)
|
rsp := r.(*oidb.EACRspBody)
|
||||||
if rsp.GetErrorCode() != 0 {
|
if rsp.GetErrorCode() != 0 {
|
||||||
@ -541,7 +544,7 @@ func (c *QQClient) SetEssenceMessage(groupCode int64, msgId, msgInternalId int32
|
|||||||
func (c *QQClient) DeleteEssenceMessage(groupCode int64, msgId, msgInternalId int32) error {
|
func (c *QQClient) DeleteEssenceMessage(groupCode int64, msgId, msgInternalId int32) error {
|
||||||
r, err := c.sendAndWait(c.buildEssenceMsgOperatePacket(groupCode, uint32(msgId), uint32(msgInternalId), 2))
|
r, err := c.sendAndWait(c.buildEssenceMsgOperatePacket(groupCode, uint32(msgId), uint32(msgInternalId), 2))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "set essence msg network:")
|
return errors.Wrap(err, "set essence msg networ")
|
||||||
}
|
}
|
||||||
rsp := r.(*oidb.EACRspBody)
|
rsp := r.(*oidb.EACRspBody)
|
||||||
if rsp.GetErrorCode() != 0 {
|
if rsp.GetErrorCode() != 0 {
|
||||||
@ -574,3 +577,22 @@ func decodeEssenceMsgResponse(_ *QQClient, _ uint16, payload []byte) (interface{
|
|||||||
}
|
}
|
||||||
return rsp, nil
|
return rsp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetGroupEssenceMsgList 获取群精华消息列表
|
||||||
|
func (c *QQClient) GetGroupEssenceMsgList(groupCode int64) ([]GroupDigest, error) {
|
||||||
|
essenceURL := "https://qun.qq.com/essence/index?gc=" + strconv.FormatInt(groupCode, 10) + "&_wv=3&_wwv=128&_wvx=2&_wvxBclr=f5f6fa"
|
||||||
|
rsp, err := utils.HttpGetBytes(essenceURL, c.getCookiesWithDomain("qun.qq.com"))
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "get essence msg network error")
|
||||||
|
}
|
||||||
|
rsp = rsp[bytes.Index(rsp, []byte("window.__INITIAL_STATE__={"))+25:]
|
||||||
|
rsp = rsp[:bytes.Index(rsp, []byte("</script>"))]
|
||||||
|
var data = &struct {
|
||||||
|
List []GroupDigest `json:"msgList"`
|
||||||
|
}{}
|
||||||
|
err = json.Unmarshal(rsp, data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "failed to unmarshal json")
|
||||||
|
}
|
||||||
|
return data.List, nil
|
||||||
|
}
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// HttpGetBytes 带 cookie 的 GET 请求
|
||||||
func HttpGetBytes(url, cookie string) ([]byte, error) {
|
func HttpGetBytes(url, cookie string) ([]byte, error) {
|
||||||
req, err := http.NewRequest("GET", url, nil)
|
req, err := http.NewRequest("GET", url, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user