mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
remove: stash.go
these function seems not useful
This commit is contained in:
parent
8b99d3147e
commit
ff9ef5135c
@ -550,10 +550,8 @@ func (c *QQClient) GetForwardMessage(resID string) *message.ForwardMessage {
|
|||||||
if m == nil {
|
if m == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
var (
|
var item *msg.PbMultiMsgItem
|
||||||
item *msg.PbMultiMsgItem
|
ret := &message.ForwardMessage{Nodes: []*message.ForwardNode{}}
|
||||||
ret = &message.ForwardMessage{Nodes: []*message.ForwardNode{}}
|
|
||||||
)
|
|
||||||
for _, iter := range m.Items {
|
for _, iter := range m.Items {
|
||||||
if iter.GetFileName() == m.FileName {
|
if iter.GetFileName() == m.FileName {
|
||||||
item = iter
|
item = iter
|
||||||
@ -563,16 +561,15 @@ func (c *QQClient) GetForwardMessage(resID string) *message.ForwardMessage {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
for _, m := range item.GetBuffer().GetMsg() {
|
for _, m := range item.GetBuffer().GetMsg() {
|
||||||
|
name := m.Head.GetFromNick()
|
||||||
|
if m.Head.GetMsgType() == 82 && m.Head.GroupInfo != nil {
|
||||||
|
name = m.Head.GroupInfo.GetGroupCard()
|
||||||
|
}
|
||||||
ret.Nodes = append(ret.Nodes, &message.ForwardNode{
|
ret.Nodes = append(ret.Nodes, &message.ForwardNode{
|
||||||
SenderId: m.Head.GetFromUin(),
|
SenderId: m.Head.GetFromUin(),
|
||||||
SenderName: func() string {
|
SenderName: name,
|
||||||
if m.Head.GetMsgType() == 82 && m.Head.GroupInfo != nil {
|
Time: m.Head.GetMsgTime(),
|
||||||
return m.Head.GroupInfo.GetGroupCard()
|
Message: message.ParseMessageElems(m.Body.RichText.Elems),
|
||||||
}
|
|
||||||
return m.Head.GetFromNick()
|
|
||||||
}(),
|
|
||||||
Time: m.Head.GetMsgTime(),
|
|
||||||
Message: message.ParseMessageElems(m.Body.RichText.Elems),
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return ret
|
return ret
|
||||||
|
@ -157,10 +157,7 @@ var SystemDeviceInfo = &DeviceInfo{
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var EmptyBytes = make([]byte, 0)
|
||||||
EmptyBytes = []byte{}
|
|
||||||
NumberRange = "0123456789"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
r := make([]byte, 16)
|
r := make([]byte, 16)
|
||||||
@ -174,8 +171,9 @@ func init() {
|
|||||||
func GenRandomDevice() {
|
func GenRandomDevice() {
|
||||||
r := make([]byte, 16)
|
r := make([]byte, 16)
|
||||||
rand.Read(r)
|
rand.Read(r)
|
||||||
SystemDeviceInfo.Display = []byte("MIRAI." + utils.RandomStringRange(6, NumberRange) + ".001")
|
const numberRange = "0123456789"
|
||||||
SystemDeviceInfo.FingerPrint = []byte("mamoe/mirai/mirai:10/MIRAI.200122.001/" + utils.RandomStringRange(7, NumberRange) + ":user/release-keys")
|
SystemDeviceInfo.Display = []byte("MIRAI." + utils.RandomStringRange(6, numberRange) + ".001")
|
||||||
|
SystemDeviceInfo.FingerPrint = []byte("mamoe/mirai/mirai:10/MIRAI.200122.001/" + utils.RandomStringRange(7, numberRange) + ":user/release-keys")
|
||||||
SystemDeviceInfo.BootId = binary.GenUUID(r)
|
SystemDeviceInfo.BootId = binary.GenUUID(r)
|
||||||
SystemDeviceInfo.ProcVersion = []byte("Linux version 3.0.31-" + utils.RandomString(8) + " (android-build@xxx.xxx.xxx.xxx.com)")
|
SystemDeviceInfo.ProcVersion = []byte("Linux version 3.0.31-" + utils.RandomString(8) + " (android-build@xxx.xxx.xxx.xxx.com)")
|
||||||
rand.Read(r)
|
rand.Read(r)
|
||||||
@ -498,8 +496,7 @@ func qualityTest(addr string) (int64, error) {
|
|||||||
return 0, errors.Wrap(err, "failed to connect to server during quality test")
|
return 0, errors.Wrap(err, "failed to connect to server during quality test")
|
||||||
}
|
}
|
||||||
_ = conn.Close()
|
_ = conn.Close()
|
||||||
end := time.Now()
|
return time.Since(start).Milliseconds(), nil
|
||||||
return end.Sub(start).Milliseconds(), nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *QQClient) parsePrivateMessage(msg *msg.Message) *message.PrivateMessage {
|
func (c *QQClient) parsePrivateMessage(msg *msg.Message) *message.PrivateMessage {
|
||||||
@ -582,10 +579,12 @@ func (b *groupMessageBuilder) build() *msg.Message {
|
|||||||
return base
|
return base
|
||||||
}
|
}
|
||||||
|
|
||||||
func packUniRequestData(data []byte) (r []byte) {
|
func packUniRequestData(data []byte) []byte {
|
||||||
r = append([]byte{0x0A}, data...)
|
r := make([]byte, 0, len(data)+2)
|
||||||
|
r = append(r, 0x0a)
|
||||||
|
r = append(r, data...)
|
||||||
r = append(r, 0x0B)
|
r = append(r, 0x0B)
|
||||||
return
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
func genForwardTemplate(resID, preview, title, brief, source, summary string, ts int64, items []*msg.PbMultiMsgItem) *message.ForwardElement {
|
func genForwardTemplate(resID, preview, title, brief, source, summary string, ts int64, items []*msg.PbMultiMsgItem) *message.ForwardElement {
|
||||||
|
303
client/stash.go
303
client/stash.go
@ -1,303 +0,0 @@
|
|||||||
// UNCHECKED
|
|
||||||
|
|
||||||
package client
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"encoding/binary"
|
|
||||||
"io"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Stash will store the data for the client, this will speed up booting
|
|
||||||
// the QQ client but some data may not sync with the server. So it is
|
|
||||||
// recommended to use this in development mode only.
|
|
||||||
|
|
||||||
//go:generate stringer -type=syncMarker -trimprefix=syncMarker
|
|
||||||
type syncMarker int8
|
|
||||||
|
|
||||||
const (
|
|
||||||
syncMarkerNone syncMarker = iota
|
|
||||||
syncMarkerFriendList
|
|
||||||
syncMarkerFriendInfo
|
|
||||||
syncMarkerGroupList
|
|
||||||
syncMarkerGroupInfo
|
|
||||||
syncMarkerGroupMemberList
|
|
||||||
syncMarkerGroupMemberInfo
|
|
||||||
)
|
|
||||||
|
|
||||||
type StashSyncMarkerError struct {
|
|
||||||
marker syncMarker
|
|
||||||
expected syncMarker
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *StashSyncMarkerError) Error() string {
|
|
||||||
return "stash sync marker error: expected " + e.expected.String() + ", got " + e.marker.String()
|
|
||||||
}
|
|
||||||
|
|
||||||
// WriteStash will write the stash to the given writer.
|
|
||||||
func WriteStash(client *QQClient, writer io.Writer) {
|
|
||||||
var out intWriter
|
|
||||||
w := stashWriter{
|
|
||||||
stringIndex: make(map[string]uint64),
|
|
||||||
}
|
|
||||||
|
|
||||||
w.friendList(client.FriendList)
|
|
||||||
w.groupList(client.GroupList)
|
|
||||||
|
|
||||||
out.uvarint(uint64(w.strings.Len()))
|
|
||||||
out.uvarint(uint64(w.data.Len()))
|
|
||||||
_, _ = io.Copy(&out, &w.strings)
|
|
||||||
_, _ = io.Copy(&out, &w.data)
|
|
||||||
_, _ = io.Copy(writer, &out)
|
|
||||||
}
|
|
||||||
|
|
||||||
type stashWriter struct {
|
|
||||||
data intWriter
|
|
||||||
strings intWriter
|
|
||||||
stringIndex map[string]uint64
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *stashWriter) string(s string) {
|
|
||||||
off, ok := w.stringIndex[s]
|
|
||||||
if !ok {
|
|
||||||
off = uint64(w.strings.Len())
|
|
||||||
w.strings.uvarint(uint64(len(s)))
|
|
||||||
_, _ = w.strings.WriteString(s)
|
|
||||||
w.stringIndex[s] = off
|
|
||||||
}
|
|
||||||
w.uvarint(off)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *stashWriter) sync(marker syncMarker) { w.data.uvarint(uint64(marker)) }
|
|
||||||
func (w *stashWriter) uvarint(v uint64) { w.data.uvarint(v) }
|
|
||||||
func (w *stashWriter) svarint(v int64) { w.data.svarint(v) }
|
|
||||||
|
|
||||||
func (w *stashWriter) int64(v int64) {
|
|
||||||
var buf [8]byte
|
|
||||||
binary.LittleEndian.PutUint64(buf[:], uint64(v))
|
|
||||||
_, _ = w.data.Write(buf[:])
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *stashWriter) friendList(list []*FriendInfo) {
|
|
||||||
w.sync(syncMarkerFriendList)
|
|
||||||
w.uvarint(uint64(len(list)))
|
|
||||||
for _, friend := range list {
|
|
||||||
w.sync(syncMarkerFriendInfo)
|
|
||||||
w.int64(friend.Uin)
|
|
||||||
w.string(friend.Nickname)
|
|
||||||
w.string(friend.Remark)
|
|
||||||
w.svarint(int64(friend.FaceId))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *stashWriter) groupList(list []*GroupInfo) {
|
|
||||||
w.sync(syncMarkerGroupList)
|
|
||||||
w.uvarint(uint64(len(list)))
|
|
||||||
for _, group := range list {
|
|
||||||
w.sync(syncMarkerGroupInfo)
|
|
||||||
w.int64(group.Uin)
|
|
||||||
w.int64(group.Code)
|
|
||||||
w.string(group.Name)
|
|
||||||
w.string(group.Memo)
|
|
||||||
w.int64(group.OwnerUin)
|
|
||||||
w.uvarint(uint64(group.GroupCreateTime))
|
|
||||||
w.uvarint(uint64(group.MemberCount))
|
|
||||||
w.uvarint(uint64(group.MaxMemberCount))
|
|
||||||
w.svarint(group.LastMsgSeq)
|
|
||||||
|
|
||||||
w.groupMemberList(group.Members)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *stashWriter) groupMemberList(list []*GroupMemberInfo) {
|
|
||||||
w.sync(syncMarkerGroupMemberList)
|
|
||||||
w.uvarint(uint64(len(list)))
|
|
||||||
for _, member := range list {
|
|
||||||
w.sync(syncMarkerGroupMemberInfo)
|
|
||||||
w.int64(member.Uin)
|
|
||||||
w.uvarint(uint64(member.Gender))
|
|
||||||
w.string(member.Nickname)
|
|
||||||
w.string(member.CardName)
|
|
||||||
w.uvarint(uint64(member.Level))
|
|
||||||
w.int64(member.JoinTime)
|
|
||||||
w.int64(member.LastSpeakTime)
|
|
||||||
w.string(member.SpecialTitle)
|
|
||||||
w.svarint(member.SpecialTitleExpireTime)
|
|
||||||
w.svarint(member.ShutUpTimestamp)
|
|
||||||
w.uvarint(uint64(member.Permission))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type intWriter struct {
|
|
||||||
bytes.Buffer
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *intWriter) svarint(x int64) {
|
|
||||||
w.uvarint(uint64(x)<<1 ^ uint64(x>>63))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *intWriter) uvarint(x uint64) {
|
|
||||||
var buf [binary.MaxVarintLen64]byte
|
|
||||||
n := binary.PutUvarint(buf[:], x)
|
|
||||||
_, _ = w.Write(buf[:n])
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadStash will read the stash from the given reader and apply to the given QQClient.
|
|
||||||
func ReadStash(client *QQClient, data string) (err error) {
|
|
||||||
in := newIntReader(data)
|
|
||||||
sl := int64(in.uvarint())
|
|
||||||
dl := int64(in.uvarint())
|
|
||||||
whence, err := in.Seek(0, io.SeekCurrent)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
sData := data[whence : whence+sl]
|
|
||||||
dData := data[whence+sl : whence+sl+dl]
|
|
||||||
|
|
||||||
r := stashReader{
|
|
||||||
data: newIntReader(dData),
|
|
||||||
strings: newIntReader(sData),
|
|
||||||
stringIndex: make(map[uint64]string),
|
|
||||||
}
|
|
||||||
defer func() {
|
|
||||||
if r := recover(); r != nil {
|
|
||||||
if e, ok := r.(error); ok {
|
|
||||||
err = e
|
|
||||||
return
|
|
||||||
}
|
|
||||||
panic(r)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
client.FriendList = r.friendList()
|
|
||||||
client.GroupList = r.groupList(client)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type stashReader struct {
|
|
||||||
data intReader
|
|
||||||
strings intReader
|
|
||||||
stringIndex map[uint64]string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *stashReader) string() string {
|
|
||||||
off := r.data.uvarint()
|
|
||||||
if off == 0 {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
if s, ok := r.stringIndex[off]; ok {
|
|
||||||
return s
|
|
||||||
}
|
|
||||||
_, _ = r.strings.Seek(int64(off), io.SeekStart)
|
|
||||||
l := int64(r.strings.uvarint())
|
|
||||||
whence, _ := r.strings.Seek(0, io.SeekCurrent)
|
|
||||||
s := r.strings.data[whence : whence+l]
|
|
||||||
r.stringIndex[off] = s
|
|
||||||
return s
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *stashReader) sync(marker syncMarker) {
|
|
||||||
got := syncMarker(r.data.uvarint())
|
|
||||||
if got != marker {
|
|
||||||
panic(&StashSyncMarkerError{
|
|
||||||
marker: got,
|
|
||||||
expected: marker,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *stashReader) friendList() []*FriendInfo {
|
|
||||||
r.sync(syncMarkerFriendList)
|
|
||||||
l := r.uvarint()
|
|
||||||
list := make([]*FriendInfo, l)
|
|
||||||
for i := uint64(0); i < l; i++ {
|
|
||||||
r.sync(syncMarkerFriendInfo)
|
|
||||||
list[i] = &FriendInfo{
|
|
||||||
Uin: r.int64(),
|
|
||||||
Nickname: r.string(),
|
|
||||||
Remark: r.string(),
|
|
||||||
FaceId: int16(r.svarint()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *stashReader) groupList(client *QQClient) []*GroupInfo {
|
|
||||||
r.sync(syncMarkerGroupList)
|
|
||||||
l := r.uvarint()
|
|
||||||
list := make([]*GroupInfo, l)
|
|
||||||
for i := uint64(0); i < l; i++ {
|
|
||||||
r.sync(syncMarkerGroupInfo)
|
|
||||||
list[i] = &GroupInfo{
|
|
||||||
Uin: r.int64(),
|
|
||||||
Code: r.int64(),
|
|
||||||
Name: r.string(),
|
|
||||||
Memo: r.string(),
|
|
||||||
OwnerUin: r.int64(),
|
|
||||||
GroupCreateTime: uint32(r.uvarint()),
|
|
||||||
GroupLevel: uint32(r.uvarint()),
|
|
||||||
MemberCount: uint16(r.uvarint()),
|
|
||||||
MaxMemberCount: uint16(r.uvarint()),
|
|
||||||
client: client,
|
|
||||||
}
|
|
||||||
list[i].Members = r.groupMemberList(list[i])
|
|
||||||
list[i].LastMsgSeq = r.svarint()
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *stashReader) groupMemberList(group *GroupInfo) []*GroupMemberInfo {
|
|
||||||
r.sync(syncMarkerGroupMemberList)
|
|
||||||
l := r.uvarint()
|
|
||||||
list := make([]*GroupMemberInfo, l)
|
|
||||||
for i := uint64(0); i < l; i++ {
|
|
||||||
r.sync(syncMarkerGroupMemberInfo)
|
|
||||||
list[i] = &GroupMemberInfo{
|
|
||||||
Group: group,
|
|
||||||
Uin: r.int64(),
|
|
||||||
Gender: byte(r.uvarint()),
|
|
||||||
Nickname: r.string(),
|
|
||||||
CardName: r.string(),
|
|
||||||
Level: uint16(r.uvarint()),
|
|
||||||
JoinTime: r.int64(),
|
|
||||||
LastSpeakTime: r.int64(),
|
|
||||||
SpecialTitle: r.string(),
|
|
||||||
SpecialTitleExpireTime: r.svarint(),
|
|
||||||
ShutUpTimestamp: r.svarint(),
|
|
||||||
Permission: MemberPermission(r.uvarint()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *stashReader) uvarint() uint64 { return r.data.uvarint() }
|
|
||||||
func (r *stashReader) svarint() int64 { return r.data.svarint() }
|
|
||||||
|
|
||||||
func (r *stashReader) int64() int64 {
|
|
||||||
var buf [8]byte
|
|
||||||
_, _ = r.data.Read(buf[:])
|
|
||||||
return int64(binary.LittleEndian.Uint64(buf[:]))
|
|
||||||
}
|
|
||||||
|
|
||||||
type intReader struct {
|
|
||||||
data string
|
|
||||||
*strings.Reader
|
|
||||||
}
|
|
||||||
|
|
||||||
func newIntReader(s string) intReader {
|
|
||||||
return intReader{
|
|
||||||
data: s,
|
|
||||||
Reader: strings.NewReader(s),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *intReader) svarint() int64 {
|
|
||||||
i, _ := binary.ReadVarint(r)
|
|
||||||
return i
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *intReader) uvarint() uint64 {
|
|
||||||
i, _ := binary.ReadUvarint(r)
|
|
||||||
return i
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
// Code generated by "stringer -type=syncMarker -trimprefix=syncMarker"; DO NOT EDIT.
|
|
||||||
|
|
||||||
package client
|
|
||||||
|
|
||||||
import "strconv"
|
|
||||||
|
|
||||||
func _() {
|
|
||||||
// An "invalid array index" compiler error signifies that the constant values have changed.
|
|
||||||
// Re-run the stringer command to generate them again.
|
|
||||||
var x [1]struct{}
|
|
||||||
_ = x[syncMarkerNone-0]
|
|
||||||
_ = x[syncMarkerFriendList-1]
|
|
||||||
_ = x[syncMarkerFriendInfo-2]
|
|
||||||
_ = x[syncMarkerGroupList-3]
|
|
||||||
_ = x[syncMarkerGroupInfo-4]
|
|
||||||
_ = x[syncMarkerGroupMemberList-5]
|
|
||||||
_ = x[syncMarkerGroupMemberInfo-6]
|
|
||||||
}
|
|
||||||
|
|
||||||
const _syncMarker_name = "NoneFriendListFriendInfoGroupListGroupInfoGroupMemberListGroupMemberInfo"
|
|
||||||
|
|
||||||
var _syncMarker_index = [...]uint8{0, 4, 14, 24, 33, 42, 57, 72}
|
|
||||||
|
|
||||||
func (i syncMarker) String() string {
|
|
||||||
if i < 0 || i >= syncMarker(len(_syncMarker_index)-1) {
|
|
||||||
return "syncMarker(" + strconv.FormatInt(int64(i), 10) + ")"
|
|
||||||
}
|
|
||||||
return _syncMarker_name[_syncMarker_index[i]:_syncMarker_index[i+1]]
|
|
||||||
}
|
|
@ -298,20 +298,17 @@ func ToProtoElems(elems []IMessageElement, generalFlags bool) (r []*msg.Elem) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func ToSrcProtoElems(elems []IMessageElement) (r []*msg.Elem) {
|
var photoTextElem IMessageElement = NewText("[图片]")
|
||||||
for _, elem := range elems {
|
|
||||||
switch elem.Type() {
|
func ToSrcProtoElems(elems []IMessageElement) []*msg.Elem {
|
||||||
case Image:
|
elems2 := make([]IMessageElement, len(elems))
|
||||||
r = append(r, &msg.Elem{
|
copy(elems2, elems)
|
||||||
Text: &msg.Text{
|
for i, elem := range elems2 {
|
||||||
Str: proto.String("[图片]"),
|
if elem.Type() == Image {
|
||||||
},
|
elems2[i] = photoTextElem
|
||||||
})
|
|
||||||
default:
|
|
||||||
r = append(r, ToProtoElems([]IMessageElement{elem}, false)...)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return ToProtoElems(elems2, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func ParseMessageElems(elems []*msg.Elem) []IMessageElement {
|
func ParseMessageElems(elems []*msg.Elem) []IMessageElement {
|
||||||
@ -434,12 +431,12 @@ func ParseMessageElems(elems []*msg.Elem) []IMessageElement {
|
|||||||
if len(elem.CustomFace.Md5) == 0 {
|
if len(elem.CustomFace.Md5) == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
url := func() string {
|
var url string
|
||||||
if elem.CustomFace.GetOrigUrl() == "" {
|
if elem.CustomFace.GetOrigUrl() == "" {
|
||||||
return "https://gchat.qpic.cn/gchatpic_new/0/0-0-" + strings.ReplaceAll(binary.CalculateImageResourceId(elem.CustomFace.Md5)[1:37], "-", "") + "/0?term=2"
|
url = "https://gchat.qpic.cn/gchatpic_new/0/0-0-" + strings.ReplaceAll(binary.CalculateImageResourceId(elem.CustomFace.Md5)[1:37], "-", "") + "/0?term=2"
|
||||||
}
|
} else {
|
||||||
return "https://gchat.qpic.cn" + elem.CustomFace.GetOrigUrl()
|
url = "https://gchat.qpic.cn" + elem.CustomFace.GetOrigUrl()
|
||||||
}()
|
}
|
||||||
if strings.Contains(elem.CustomFace.GetOrigUrl(), "qmeet") {
|
if strings.Contains(elem.CustomFace.GetOrigUrl(), "qmeet") {
|
||||||
res = append(res, &GuildImageElement{
|
res = append(res, &GuildImageElement{
|
||||||
FileId: int64(elem.CustomFace.GetFileId()),
|
FileId: int64(elem.CustomFace.GetFileId()),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user