model

package
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 28, 2025 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Source
	WeChatV3       = "wechatv3"
	WeChatV4       = "wechatv4"
	WeChatDarwinV3 = "wechatdarwinv3"
)

Variables

This section is empty.

Functions

func ParseBytesExtra

func ParseBytesExtra(b []byte) map[int]string

ParseBytesExtra 解析额外数据 按需解析

func ParsePackedInfo added in v0.0.5

func ParsePackedInfo(b []byte) *wxproto.PackedInfo

Types

type App added in v0.0.5

type App struct {
	Type       int         `xml:"type"`
	Title      string      `xml:"title"`
	Des        string      `xml:"des"`
	URL        string      `xml:"url"`                  // type 5 分享
	AppAttach  AppAttach   `xml:"appattach"`            // type 6 文件
	MD5        string      `xml:"md5"`                  // type 6 文件
	RecordItem *RecordItem `xml:"recorditem,omitempty"` // type 19 合并转发
	ReferMsg   *ReferMsg   `xml:"refermsg,omitempty"`   // type 57 引用
}

type AppAttach added in v0.0.5

type AppAttach struct {
	TotalLen       string `xml:"totallen"`
	AttachID       string `xml:"attachid"`
	CDNAttachURL   string `xml:"cdnattachurl"`
	EmoticonMD5    string `xml:"emoticonmd5"`
	AESKey         string `xml:"aeskey"`
	FileExt        string `xml:"fileext"`
	IsLargeFileMsg string `xml:"islargefilemsg"`
}

AppAttach 表示应用附件

type ChatRoom

type ChatRoom struct {
	Name  string         `json:"name"`
	Owner string         `json:"owner"`
	Users []ChatRoomUser `json:"users"`

	// Extra From Contact
	Remark   string `json:"remark"`
	NickName string `json:"nickName"`

	User2DisplayName map[string]string `json:"-"`
}

func (*ChatRoom) DisplayName

func (c *ChatRoom) DisplayName() string

type ChatRoomDarwinV3

type ChatRoomDarwinV3 struct {
	M_nsUsrName           string `json:"m_nsUsrName"`
	Nickname              string `json:"nickname"`
	M_nsRemark            string `json:"m_nsRemark"`
	M_nsChatRoomMemList   string `json:"m_nsChatRoomMemList"`
	M_nsChatRoomAdminList string `json:"m_nsChatRoomAdminList"`
}

CREATE TABLE GroupContact( m_nsUsrName TEXT PRIMARY KEY ASC, m_uiConType INTEGER, nickname TEXT, m_nsFullPY TEXT, m_nsShortPY TEXT, m_nsRemark TEXT, m_nsRemarkPYFull TEXT, m_nsRemarkPYShort TEXT, m_uiCertificationFlag INTEGER, m_uiSex INTEGER, m_uiType INTEGER, m_nsImgStatus TEXT, m_uiImgKey INTEGER, m_nsHeadImgUrl TEXT, m_nsHeadHDImgUrl TEXT, m_nsHeadHDMd5 TEXT, m_nsChatRoomMemList TEXT, m_nsChatRoomAdminList TEXT, m_uiChatRoomStatus INTEGER, m_nsChatRoomDesc TEXT, m_nsDraft TEXT, m_nsBrandIconUrl TEXT, m_nsGoogleContactName TEXT, m_nsAliasName TEXT, m_nsEncodeUserName TEXT, m_uiChatRoomVersion INTEGER, m_uiChatRoomMaxCount INTEGER, m_uiChatRoomType INTEGER, m_patSuffix TEXT, richChatRoomDesc TEXT, _packed_WCContactData BLOB, openIMInfo BLOB )

func (*ChatRoomDarwinV3) Wrap

func (c *ChatRoomDarwinV3) Wrap(user2DisplayName map[string]string) *ChatRoom

type ChatRoomUser

type ChatRoomUser struct {
	UserName    string `json:"userName"`
	DisplayName string `json:"displayName"`
}

func ParseRoomData

func ParseRoomData(b []byte) (users []ChatRoomUser)

type ChatRoomV3

type ChatRoomV3 struct {
	ChatRoomName string `json:"ChatRoomName"`
	Reserved2    string `json:"Reserved2"` // Creator
	RoomData     []byte `json:"RoomData"`
}

CREATE TABLE ChatRoom( ChatRoomName TEXT PRIMARY KEY, UserNameList TEXT, DisplayNameList TEXT, ChatRoomFlag int Default 0, Owner INTEGER DEFAULT 0, IsShowName INTEGER DEFAULT 0, SelfDisplayName TEXT, Reserved1 INTEGER DEFAULT 0, Reserved2 TEXT, Reserved3 INTEGER DEFAULT 0, Reserved4 TEXT, Reserved5 INTEGER DEFAULT 0, Reserved6 TEXT, RoomData BLOB, Reserved7 INTEGER DEFAULT 0, Reserved8 TEXT )

func (*ChatRoomV3) Wrap

func (c *ChatRoomV3) Wrap() *ChatRoom

type ChatRoomV4

type ChatRoomV4 struct {
	ID        int    `json:"id"`
	UserName  string `json:"username"`
	Owner     string `json:"owner"`
	ExtBuffer []byte `json:"ext_buffer"`
}

CREATE TABLE chat_room( id INTEGER PRIMARY KEY, username TEXT, owner TEXT, ext_buffer BLOB )

func (*ChatRoomV4) Wrap

func (c *ChatRoomV4) Wrap() *ChatRoom

type Contact

type Contact struct {
	UserName string `json:"userName"`
	Alias    string `json:"alias"`
	Remark   string `json:"remark"`
	NickName string `json:"nickName"`
	IsFriend bool   `json:"isFriend"`
}

func (*Contact) DisplayName

func (c *Contact) DisplayName() string

type ContactDarwinV3

type ContactDarwinV3 struct {
	M_nsUsrName   string `json:"m_nsUsrName"`
	Nickname      string `json:"nickname"`
	M_nsRemark    string `json:"m_nsRemark"`
	M_uiSex       int    `json:"m_uiSex"`
	M_nsAliasName string `json:"m_nsAliasName"`
}

CREATE TABLE WCContact( m_nsUsrName TEXT PRIMARY KEY ASC, m_uiConType INTEGER, nickname TEXT, m_nsFullPY TEXT, m_nsShortPY TEXT, m_nsRemark TEXT, m_nsRemarkPYFull TEXT, m_nsRemarkPYShort TEXT, m_uiCertificationFlag INTEGER, m_uiSex INTEGER, m_uiType INTEGER, m_nsImgStatus TEXT, m_uiImgKey INTEGER, m_nsHeadImgUrl TEXT, m_nsHeadHDImgUrl TEXT, m_nsHeadHDMd5 TEXT, m_nsChatRoomMemList TEXT, m_nsChatRoomAdminList TEXT, m_uiChatRoomStatus INTEGER, m_nsChatRoomDesc TEXT, m_nsDraft TEXT, m_nsBrandIconUrl TEXT, m_nsGoogleContactName TEXT, m_nsAliasName TEXT, m_nsEncodeUserName TEXT, m_uiChatRoomVersion INTEGER, m_uiChatRoomMaxCount INTEGER, m_uiChatRoomType INTEGER, m_patSuffix TEXT, richChatRoomDesc TEXT, _packed_WCContactData BLOB, openIMInfo BLOB )

func (*ContactDarwinV3) Wrap

func (c *ContactDarwinV3) Wrap() *Contact

type ContactV3

type ContactV3 struct {
	UserName  string `json:"UserName"`
	Alias     string `json:"Alias"`
	Remark    string `json:"Remark"`
	NickName  string `json:"NickName"`
	Reserved1 int    `json:"Reserved1"` // 1 自己好友或自己加入的群聊; 0 群聊成员(非好友)

}

CREATE TABLE Contact( UserName TEXT PRIMARY KEY , Alias TEXT, EncryptUserName TEXT, DelFlag INTEGER DEFAULT 0, Type INTEGER DEFAULT 0, VerifyFlag INTEGER DEFAULT 0, Reserved1 INTEGER DEFAULT 0, Reserved2 INTEGER DEFAULT 0, Reserved3 TEXT, Reserved4 TEXT, Remark TEXT, NickName TEXT, LabelIDList TEXT, DomainList TEXT, ChatRoomType int, PYInitial TEXT, QuanPin TEXT, RemarkPYInitial TEXT, RemarkQuanPin TEXT, BigHeadImgUrl TEXT, SmallHeadImgUrl TEXT, HeadImgMd5 TEXT, ChatRoomNotify INTEGER DEFAULT 0, Reserved5 INTEGER DEFAULT 0, Reserved6 TEXT, Reserved7 TEXT, ExtraBuf BLOB, Reserved8 INTEGER DEFAULT 0, Reserved9 INTEGER DEFAULT 0, Reserved10 TEXT, Reserved11 TEXT )

func (*ContactV3) Wrap

func (c *ContactV3) Wrap() *Contact

type ContactV4

type ContactV4 struct {
	UserName  string `json:"username"`
	Alias     string `json:"alias"`
	Remark    string `json:"remark"`
	NickName  string `json:"nick_name"`
	LocalType int    `json:"local_type"` // 2 群聊; 3 群聊成员(非好友); 5,6 企业微信;

}

CREATE TABLE contact( id INTEGER PRIMARY KEY, username TEXT, local_type INTEGER, alias TEXT, encrypt_username TEXT, flag INTEGER, delete_flag INTEGER, verify_flag INTEGER, remark TEXT, remark_quan_pin TEXT, remark_pin_yin_initial TEXT, nick_name TEXT, pin_yin_initial TEXT, quan_pin TEXT, big_head_url TEXT, small_head_url TEXT, head_img_md5 TEXT, chat_room_notify INTEGER, is_in_chat_room INTEGER, description TEXT, extra_buffer BLOB, chat_room_type INTEGER )

func (*ContactV4) Wrap

func (c *ContactV4) Wrap() *Contact

type DataItem added in v0.0.5

type DataItem struct {
	DataType      string `xml:"datatype,attr,omitempty"`
	DataID        string `xml:"dataid,attr,omitempty"`
	HTMLID        string `xml:"htmlid,attr,omitempty"`
	DataFmt       string `xml:"datafmt,omitempty"`
	SourceName    string `xml:"sourcename,omitempty"`
	SourceTime    string `xml:"sourcetime,omitempty"`
	SourceHeadURL string `xml:"sourceheadurl,omitempty"`
	DataDesc      string `xml:"datadesc,omitempty"`

	// 图片特有字段
	ThumbSourcePath  string `xml:"thumbsourcepath,omitempty"`
	ThumbSize        string `xml:"thumbsize,omitempty"`
	CDNDataURL       string `xml:"cdndataurl,omitempty"`
	CDNDataKey       string `xml:"cdndatakey,omitempty"`
	CDNThumbURL      string `xml:"cdnthumburl,omitempty"`
	CDNThumbKey      string `xml:"cdnthumbkey,omitempty"`
	DataSourcePath   string `xml:"datasourcepath,omitempty"`
	FullMD5          string `xml:"fullmd5,omitempty"`
	ThumbFullMD5     string `xml:"thumbfullmd5,omitempty"`
	ThumbHead256MD5  string `xml:"thumbhead256md5,omitempty"`
	DataSize         string `xml:"datasize,omitempty"`
	CDNEncryVer      string `xml:"cdnencryver,omitempty"`
	SrcChatname      string `xml:"srcChatname,omitempty"`
	SrcMsgLocalID    string `xml:"srcMsgLocalid,omitempty"`
	SrcMsgCreateTime string `xml:"srcMsgCreateTime,omitempty"`
	MessageUUID      string `xml:"messageuuid,omitempty"`
	FromNewMsgID     string `xml:"fromnewmsgid,omitempty"`
}

DataItem 表示数据项

type DataList added in v0.0.5

type DataList struct {
	Count     string     `xml:"count,attr,omitempty"`
	DataItems []DataItem `xml:"dataitem,omitempty"`
}

DataList 表示数据列表

type Image added in v0.0.5

type Image struct {
	MD5 string `xml:"md5,attr"`
}

type Media added in v0.0.5

type Media struct {
	Type       string `json:"type"` // 媒体类型:image, video, voice, file
	Key        string `json:"key"`  // MD5
	Path       string `json:"path"`
	Name       string `json:"name"`
	Size       int64  `json:"size"`
	ModifyTime int64  `json:"modifyTime"`
}

type MediaDarwinV3 added in v0.0.5

type MediaDarwinV3 struct {
	MediaMd5     string `json:"mediaMd5"`
	MediaSize    int64  `json:"mediaSize"`
	InodeNumber  int64  `json:"inodeNumber"`
	ModifyTime   int64  `json:"modifyTime"`
	RelativePath string `json:"relativePath"`
	FileName     string `json:"fileName"`
}

CREATE TABLE HlinkMediaRecord( mediaMd5 TEXT, mediaSize INTEGER, inodeNumber INTEGER, modifyTime INTEGER , CONSTRAINT _Md5_Size UNIQUE (mediaMd5,mediaSize) ) CREATE TABLE HlinkMediaDetail( localId INTEGER PRIMARY KEY AUTOINCREMENT, inodeNumber INTEGER, relativePath TEXT, fileName TEXT )

func (*MediaDarwinV3) Wrap added in v0.0.5

func (m *MediaDarwinV3) Wrap() *Media

type MediaMessage added in v0.0.5

type MediaMessage struct {
	Type      int64
	SubType   int
	MediaMD5  string
	MediaPath string
	Title     string
	Desc      string
	Content   string
	URL       string

	RecordInfo *RecordInfo

	ReferDisplayName string
	ReferUserName    string
	ReferCreateTime  time.Time
	ReferMessage     *MediaMessage

	Host string

	Message XMLMessage
}

func NewMediaMessage added in v0.0.5

func NewMediaMessage(_type int64, data string) (*MediaMessage, error)

func (*MediaMessage) SetHost added in v0.0.5

func (m *MediaMessage) SetHost(host string)

func (*MediaMessage) String added in v0.0.5

func (m *MediaMessage) String() string

type MediaV3 added in v0.0.5

type MediaV3 struct {
	Type       string `json:"type"`
	Key        string `json:"key"`
	Dir1       string `json:"dir1"`
	Dir2       string `json:"dir2"`
	Name       string `json:"name"`
	ModifyTime int64  `json:"modifyTime"`
}

func (*MediaV3) Wrap added in v0.0.5

func (m *MediaV3) Wrap() *Media

type MediaV4 added in v0.0.5

type MediaV4 struct {
	Type       string `json:"type"`
	Key        string `json:"key"`
	Dir1       string `json:"dir1"`
	Dir2       string `json:"dir2"`
	Name       string `json:"name"`
	Size       int64  `json:"size"`
	ModifyTime int64  `json:"modifyTime"`
}

func (*MediaV4) Wrap added in v0.0.5

func (m *MediaV4) Wrap() *Media

type Message

type Message struct {
	Sequence        int64     `json:"sequence"`        // 消息序号,10位时间戳 + 3位序号
	CreateTime      time.Time `json:"createTime"`      // 消息创建时间,10位时间戳
	TalkerID        int       `json:"talkerID"`        // 聊天对象,Name2ID 表序号,索引值
	Talker          string    `json:"talker"`          // 聊天对象,微信 ID or 群 ID
	IsSender        int       `json:"isSender"`        // 是否为发送消息,0 接收消息,1 发送消息
	Type            int64     `json:"type"`            // 消息类型
	SubType         int       `json:"subType"`         // 消息子类型
	Content         string    `json:"content"`         // 消息内容,文字聊天内容 或 XML
	CompressContent []byte    `json:"compressContent"` // 非文字聊天内容,如图片、语音、视频等
	IsChatRoom      bool      `json:"isChatRoom"`      // 是否为群聊消息
	ChatRoomSender  string    `json:"chatRoomSender"`  // 群聊消息发送人

	// Fill Info
	// 从联系人等信息中填充
	DisplayName  string        `json:"-"` // 显示名称
	ChatRoomName string        `json:"-"` // 群聊名称
	MediaMessage *MediaMessage `json:"-"` // 多媒体消息

	Version string `json:"-"` // 消息版本,内部判断
}

func (*Message) PlainText

func (m *Message) PlainText(showChatRoom bool, host string) string

type MessageDarwinV3

type MessageDarwinV3 struct {
	MsgCreateTime int64  `json:"msgCreateTime"`
	MsgContent    string `json:"msgContent"`
	MessageType   int64  `json:"messageType"`
	MesDes        int    `json:"mesDes"` // 0: 发送, 1: 接收

}

CREATE TABLE Chat_md5(talker)( mesLocalID INTEGER PRIMARY KEY AUTOINCREMENT, mesSvrID INTEGER,msgCreateTime INTEGER, msgContent TEXT,msgStatus INTEGER, msgImgStatus INTEGER, messageType INTEGER, mesDes INTEGER, msgSource TEXT, IntRes1 INTEGER, IntRes2 INTEGER, StrRes1 TEXT, StrRes2 TEXT, msgVoiceText TEXT, msgSeq INTEGER, CompressContent BLOB, ConBlob BLOB )

func (*MessageDarwinV3) Wrap

func (m *MessageDarwinV3) Wrap(talker string) *Message

type MessageV3

type MessageV3 struct {
	Sequence        int64  `json:"Sequence"`        // 消息序号,10位时间戳 + 3位序号
	CreateTime      int64  `json:"CreateTime"`      // 消息创建时间,10位时间戳
	TalkerID        int    `json:"TalkerId"`        // 聊天对象,Name2ID 表序号,索引值
	StrTalker       string `json:"StrTalker"`       // 聊天对象,微信 ID or 群 ID
	IsSender        int    `json:"IsSender"`        // 是否为发送消息,0 接收消息,1 发送消息
	Type            int64  `json:"Type"`            // 消息类型
	SubType         int    `json:"SubType"`         // 消息子类型
	StrContent      string `json:"StrContent"`      // 消息内容,文字聊天内容 或 XML
	CompressContent []byte `json:"CompressContent"` // 非文字聊天内容,如图片、语音、视频等
	BytesExtra      []byte `json:"BytesExtra"`      // protobuf 额外数据,记录群聊发送人等信息

}

CREATE TABLE MSG ( localId INTEGER PRIMARY KEY AUTOINCREMENT, TalkerId INT DEFAULT 0, MsgSvrID INT, Type INT, SubType INT, IsSender INT, CreateTime INT, Sequence INT DEFAULT 0, StatusEx INT DEFAULT 0, FlagEx INT, Status INT, MsgServerSeq INT, MsgSequence INT, StrTalker TEXT, StrContent TEXT, DisplayContent TEXT, Reserved0 INT DEFAULT 0, Reserved1 INT DEFAULT 0, Reserved2 INT DEFAULT 0, Reserved3 INT DEFAULT 0, Reserved4 TEXT, Reserved5 TEXT, Reserved6 TEXT, CompressContent BLOB, BytesExtra BLOB, BytesTrans BLOB )

func (*MessageV3) Wrap

func (m *MessageV3) Wrap() *Message

type MessageV4

type MessageV4 struct {
	SortSeq        int64  `json:"sort_seq"`         // 消息序号,10位时间戳 + 3位序号
	LocalType      int64  `json:"local_type"`       // 消息类型
	RealSenderID   int    `json:"real_sender_id"`   // 发送人 ID,对应 Name2Id 表序号
	CreateTime     int64  `json:"create_time"`      // 消息创建时间,10位时间戳
	MessageContent []byte `json:"message_content"`  // 消息内容,文字聊天内容 或 zstd 压缩内容
	PackedInfoData []byte `json:"packed_info_data"` // 额外数据,类似 proto,格式与 v3 有差异
	Status         int    `json:"status"`           // 消息状态,2 是已发送,4 是已接收,可以用于判断 IsSender(猜测)

}

CREATE TABLE Msg_md5(talker)( local_id INTEGER PRIMARY KEY AUTOINCREMENT, server_id INTEGER, local_type INTEGER, sort_seq INTEGER, real_sender_id INTEGER, create_time INTEGER, status INTEGER, upload_status INTEGER, download_status INTEGER, server_seq INTEGER, origin_source INTEGER, source TEXT, message_content TEXT, compress_content TEXT, packed_info_data BLOB, WCDB_CT_message_content INTEGER DEFAULT NULL, WCDB_CT_source INTEGER DEFAULT NULL )

func (*MessageV4) Wrap

func (m *MessageV4) Wrap(id2Name map[int]string, isChatRoom bool) *Message

type RecordInfo added in v0.0.5

type RecordInfo struct {
	XMLName       xml.Name `xml:"recordinfo"`
	FromScene     string   `xml:"fromscene,omitempty"`
	FavUsername   string   `xml:"favusername,omitempty"`
	FavCreateTime string   `xml:"favcreatetime,omitempty"`
	IsChatRoom    string   `xml:"isChatRoom,omitempty"`
	Title         string   `xml:"title,omitempty"`
	Desc          string   `xml:"desc,omitempty"`
	Info          string   `xml:"info,omitempty"`
	DataList      DataList `xml:"datalist,omitempty"`
}

RecordInfo 表示聊天记录信息

type RecordItem added in v0.0.5

type RecordItem struct {
	CDATA string `xml:",cdata"`

	// 解析后的记录信息
	RecordInfo *RecordInfo
}

type ReferMsg added in v0.0.5

type ReferMsg struct {
	Type        int64  `xml:"type"`
	SvrID       string `xml:"svrid"`
	FromUsr     string `xml:"fromusr"`
	ChatUsr     string `xml:"chatusr"`
	DisplayName string `xml:"displayname"`
	MsgSource   string `xml:"msgsource"`
	Content     string `xml:"content"`
	StrID       string `xml:"strid"`
	CreateTime  int64  `xml:"createtime"`
}

ReferMsg 表示引用消息

type Session

type Session struct {
	UserName string    `json:"userName"`
	NOrder   int       `json:"nOrder"`
	NickName string    `json:"nickName"`
	Content  string    `json:"content"`
	NTime    time.Time `json:"nTime"`
}

func (*Session) PlainText

func (s *Session) PlainText(limit int) string

type SessionDarwinV3

type SessionDarwinV3 struct {
	M_nsUserName string `json:"m_nsUserName"`
	M_uLastTime  int    `json:"m_uLastTime"`
}

CREATE TABLE SessionAbstract( m_nsUserName TEXT PRIMARY KEY, m_uUnReadCount INTEGER, m_bShowUnReadAsRedDot INTEGER, m_bMarkUnread INTEGER, m_uLastTime INTEGER, strRes1 TEXT, strRes2 TEXT, strRes3 TEXT, intRes1 INTEGER, intRes2 INTEGER, intRes3 INTEGER, _packed_MMSessionInfo BLOB )

func (*SessionDarwinV3) Wrap

func (s *SessionDarwinV3) Wrap() *Session

type SessionV3

type SessionV3 struct {
	StrUsrName  string `json:"strUsrName"`
	NOrder      int    `json:"nOrder"`
	StrNickName string `json:"strNickName"`
	StrContent  string `json:"strContent"`
	NTime       int64  `json:"nTime"`
}

CREATE TABLE Session( strUsrName TEXT PRIMARY KEY, nOrder INT DEFAULT 0, nUnReadCount INTEGER DEFAULT 0, parentRef TEXT, Reserved0 INTEGER DEFAULT 0, Reserved1 TEXT, strNickName TEXT, nStatus INTEGER, nIsSend INTEGER, strContent TEXT, nMsgType INTEGER, nMsgLocalID INTEGER, nMsgStatus INTEGER, nTime INTEGER, editContent TEXT, othersAtMe INT, Reserved2 INTEGER DEFAULT 0, Reserved3 TEXT, Reserved4 INTEGER DEFAULT 0, Reserved5 TEXT, bytesXml BLOB )

func (*SessionV3) Wrap

func (s *SessionV3) Wrap() *Session

type SessionV4

type SessionV4 struct {
	Username              string `json:"username"`
	Summary               string `json:"summary"`
	LastTimestamp         int    `json:"last_timestamp"`
	LastMsgSender         string `json:"last_msg_sender"`
	LastSenderDisplayName string `json:"last_sender_display_name"`
}

注意,v4 session 是独立数据库文件 CREATE TABLE SessionTable( username TEXT PRIMARY KEY, type INTEGER, unread_count INTEGER, unread_first_msg_srv_id INTEGER, is_hidden INTEGER, summary TEXT, draft TEXT, status INTEGER, last_timestamp INTEGER, sort_timestamp INTEGER, last_clear_unread_timestamp INTEGER, last_msg_locald_id INTEGER, last_msg_type INTEGER, last_msg_sub_type INTEGER, last_msg_sender TEXT, last_sender_display_name TEXT, last_msg_ext_type INTEGER )

func (*SessionV4) Wrap

func (s *SessionV4) Wrap() *Session

type Video added in v0.0.5

type Video struct {
	RawMd5 string `xml:"rawmd5,attr"`
}

type XMLImageMessage added in v0.0.5

type XMLImageMessage struct {
	XMLName xml.Name `xml:"msg"`
	Img     Image    `xml:"img"`
}

type XMLMessage added in v0.0.5

type XMLMessage struct {
	XMLName xml.Name `xml:"msg"`
	Image   Image    `xml:"img,omitempty"`
	Video   Video    `xml:"videomsg,omitempty"`
	App     App      `xml:"appmsg,omitempty"`
}

type XMLVideoMessage added in v0.0.5

type XMLVideoMessage struct {
	XMLName  xml.Name `xml:"msg"`
	VideoMsg Video    `xml:"videomsg"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL