message

package
v0.0.0-...-7cf5575 Latest Latest
Warning

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

Go to latest
Published: Aug 22, 2024 License: AGPL-3.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AtTypeGroupMember = 0 // At群成员
)

Variables

This section is empty.

Functions

func ElementsHasType

func ElementsHasType(elems []IMessageElement, t ElementType) bool

func PackElements

func PackElements(msgElems []IMessageElement) []*message.Elem

func PackElementsToBody

func PackElementsToBody(msgElems []IMessageElement) (msgBody *message.MessageBody)

func ToReadableString

func ToReadableString(m []IMessageElement) string

Types

type AnonymousInfo

type AnonymousInfo struct {
	AnonymousId   string
	AnonymousNick string
}

type AtElement

type AtElement struct {
	TargetUin uint32
	TargetUid string
	Display   string
	SubType   AtType
}

func NewAt

func NewAt(target uint32, display ...string) *AtElement

func (*AtElement) BuildElement

func (e *AtElement) BuildElement() []*message.Elem

func (*AtElement) Type

func (e *AtElement) Type() ElementType

type AtType

type AtType int

type Config

type Config struct {
	Autosize int64  `json:"autosize"`
	Forward  int64  `json:"forward"`
	Round    int64  `json:"round"`
	Type     string `json:"type"`
	Width    int64  `json:"width"`
}

type Detail

type Detail struct {
	News    []News `json:"news"`
	Resid   string `json:"resid"`
	Source  string `json:"source"`
	Summary string `json:"summary"`
	UniSeq  string `json:"uniseq"`
}

type ElementBuilder

type ElementBuilder interface {
	BuildElement() []*message.Elem
}

type ElementType

type ElementType int
const (
	Text     ElementType = iota // 文本
	Image                       // 图片
	Face                        // 表情
	At                          // 艾特
	Reply                       // 回复
	Service                     // 服务
	Forward                     // 转发
	File                        // 文件
	Voice                       // 语音
	Video                       // 视频
	LightApp                    // 轻应用
	RedBag                      // 红包
)

type FaceElement

type FaceElement struct {
	FaceID uint16
	// contains filtered or unexported fields
}

func (*FaceElement) BuildElement

func (e *FaceElement) BuildElement() []*message.Elem

func (*FaceElement) Type

func (e *FaceElement) Type() ElementType

type FileElement

type FileElement struct {
	FileSize uint64
	FileName string
	FileMd5  []byte
	FileUrl  string
	FileId   string // group
	FileUUID string // private
	FileHash string

	// send
	FileStream io.ReadSeeker
	FileSha1   []byte
}

func NewFile

func NewFile(data []byte, fileName string) *FileElement

func NewLocalFile

func NewLocalFile(path string) (*FileElement, error)

func NewStreamFile

func NewStreamFile(r io.ReadSeeker, fileName string) *FileElement

func (*FileElement) BuildContent

func (e *FileElement) BuildContent() []byte

func (*FileElement) Type

func (e *FileElement) Type() ElementType

type ForwardMessage

type ForwardMessage struct {
	ResID string
	Nodes []*ForwardNode
}

func NewFoward

func NewFoward(resid string) *ForwardMessage

func NewNodeFoward

func NewNodeFoward(nodes []*ForwardNode) *ForwardMessage

func (*ForwardMessage) BuildElement

func (e *ForwardMessage) BuildElement() []*message.Elem

func (*ForwardMessage) Type

func (e *ForwardMessage) Type() ElementType

type ForwardNode

type ForwardNode struct {
	GroupId    int64
	SenderId   int64
	SenderName string
	Time       int32
	Message    []IMessageElement
}

type GroupMessage

type GroupMessage struct {
	Id             int32
	InternalId     int32
	GroupUin       uint32
	GroupName      string
	Sender         *Sender
	Time           uint64
	Elements       []IMessageElement
	OriginalObject *message.PushMsgBody
}

func ParseGroupMessage

func ParseGroupMessage(msg *message.PushMsg) *GroupMessage

func (*GroupMessage) ToString

func (msg *GroupMessage) ToString() string

type IMessage

type IMessage interface {
	GetElements() []IMessageElement
	Chat() int64
	ToString() string
	Texts() []string
}

type IMessageElement

type IMessageElement interface {
	Type() ElementType
}

func ParseMessageBody

func ParseMessageBody(body *message.MessageBody, isGroup bool) []IMessageElement

type ImageElement

type ImageElement struct {
	ImageId   string
	FileId    int64
	ImageType int32
	Size      uint32
	Width     uint32
	Height    uint32
	Url       string

	// EffectID show pic effect id.
	EffectID int32
	Flash    bool

	// send
	Summary     string
	Ext         string
	Md5         []byte
	Sha1        []byte
	MsgInfo     *oidb.MsgInfo
	Stream      io.ReadSeeker
	CompatFace  *message.CustomFace     // GroupImage
	CompatImage *message.NotOnlineImage // FriendImage
}

func NewFileImage

func NewFileImage(path string, Summary ...string) (*ImageElement, error)

func NewImage

func NewImage(data []byte, Summary ...string) *ImageElement

func NewStreamImage

func NewStreamImage(r io.ReadSeeker, Summary ...string) *ImageElement

func (*ImageElement) BuildElement

func (e *ImageElement) BuildElement() []*message.Elem

func (*ImageElement) Type

func (e *ImageElement) Type() ElementType

type LightAppElement

type LightAppElement struct {
	AppName string
	Content string
}

func NewLightApp

func NewLightApp(content string) *LightAppElement

func (*LightAppElement) BuildElement

func (e *LightAppElement) BuildElement() []*message.Elem

func (*LightAppElement) Type

func (e *LightAppElement) Type() ElementType

type Meta

type Meta struct {
	Detail Detail `json:"detail"`
}

type MsgContentBuilder

type MsgContentBuilder interface {
	BuildContent() []byte
}

type MultiItem

type MultiItem struct {
	Layout  int          `xml:"layout,attr"`
	Title   []MultiTitle `xml:"title"`
	Summary MultiSummary `xml:"summary"`
}

type MultiMessage

type MultiMessage struct {
	XMLName    xml.Name    `xml:"msg"`
	ServiceID  uint        `xml:"serviceID,attr"`
	TemplateID int         `xml:"templateID,attr"`
	Action     string      `xml:"action,attr"`
	Brief      string      `xml:"brief,attr"`
	FileName   string      `xml:"m_fileName,attr"`
	ResId      string      `xml:"m_resid,attr"`
	Total      int         `xml:"tSum,attr"`
	Flag       int         `xml:"flag,attr"`
	Item       MultiItem   `xml:"item"`
	Source     MultiSource `xml:"source"`
}

type MultiMsgLightApp

type MultiMsgLightApp struct {
	App    string `json:"app"`
	Config Config `json:"config"`
	Desc   string `json:"desc"`
	Extra  string `json:"extra"`
	Meta   Meta   `json:"meta"`
	Prompt string `json:"prompt"`
	Ver    string `json:"ver"`
	View   string `json:"view"`
}

type MultiMsgLightAppExtra

type MultiMsgLightAppExtra struct {
	FileName string `json:"filename"`
	Sum      int    `json:"tsum"`
}

type MultiSource

type MultiSource struct {
	Name string `xml:"name,attr"`
}

type MultiSummary

type MultiSummary struct {
	Color string `xml:"color,attr"`
	Text  string `xml:",chardata"`
}

type MultiTitle

type MultiTitle struct {
	Color string `xml:"color,attr"`
	Size  int    `xml:"size,attr"`
	Text  string `xml:",chardata"`
}

type News

type News struct {
	Text string `json:"text"`
}

type PrivateMessage

type PrivateMessage struct {
	Id         int32
	InternalId int32
	Self       int64
	Target     int64
	Time       int32
	Sender     *Sender
	Elements   []IMessageElement
}

func ParsePrivateMessage

func ParsePrivateMessage(msg *message.PushMsg) *PrivateMessage

func (*PrivateMessage) ToString

func (msg *PrivateMessage) ToString() string

type ReplyElement

type ReplyElement struct {
	ReplySeq  uint32
	SenderUin uint32
	SenderUid string
	GroupUin  uint32 // 私聊回复群聊时
	Time      uint32
	Elements  []IMessageElement
}

func NewGroupReply

func NewGroupReply(m *GroupMessage) *ReplyElement

func NewPrivateReply

func NewPrivateReply(m *PrivateMessage) *ReplyElement

func (*ReplyElement) BuildElement

func (e *ReplyElement) BuildElement() []*message.Elem

func (*ReplyElement) Type

func (e *ReplyElement) Type() ElementType

type Sender

type Sender struct {
	Uin           uint32
	Uid           string
	Nickname      string
	CardName      string
	AnonymousInfo *AnonymousInfo
	IsFriend      bool
}

func (*Sender) IsAnonymous

func (s *Sender) IsAnonymous() bool

type SendingMessage

type SendingMessage struct {
	Elements []IMessageElement
}

func NewSendingMessage

func NewSendingMessage() *SendingMessage

func (*SendingMessage) Append

Append 要传入msg的引用

func (*SendingMessage) FirstOrNil

func (msg *SendingMessage) FirstOrNil(f func(element IMessageElement) bool) IMessageElement

func (*SendingMessage) GetElems

func (msg *SendingMessage) GetElems() []IMessageElement

type ShortVideoElement

type ShortVideoElement struct {
	Name      string
	Uuid      []byte
	Size      int32
	ThumbSize int32
	Md5       []byte
	ThumbMd5  []byte
	Url       string
}

func (*ShortVideoElement) BuildElement

func (e *ShortVideoElement) BuildElement() []*message.Elem

func (*ShortVideoElement) Type

func (e *ShortVideoElement) Type() ElementType

type Source

type Source struct {
	SourceType  SourceType
	PrimaryID   int64 // 群号/QQ号/guild_id
	SecondaryID int64 // channel_id
}

Source 消息来源

type SourceType

type SourceType byte
const (
	SourcePrivate      SourceType = 1 << iota
	SourceGroup        SourceType = 1 << iota
	SourceGuildChannel SourceType = 1 << iota
	SourceGuildDirect  SourceType = 1 << iota
)

MessageSourceType 常量

func (SourceType) String

func (t SourceType) String() string

type TempMessage

type TempMessage struct {
	Id        int32
	GroupUin  uint32
	GroupName string
	Self      uint32
	Sender    *Sender
	Elements  []IMessageElement
}

func ParseTempMessage

func ParseTempMessage(msg *message.PushMsg) *TempMessage

type TextElement

type TextElement struct {
	Content string
}

func NewText

func NewText(s string) *TextElement

func (*TextElement) BuildElement

func (e *TextElement) BuildElement() []*message.Elem

func (*TextElement) Type

func (e *TextElement) Type() ElementType

type VoiceElement

type VoiceElement struct {
	Name string
	Size uint32
	Url  string
	Md5  []byte
	Sha1 []byte
	Node *oidb.IndexNode

	// --- sending ---
	MsgInfo  *oidb.MsgInfo
	Compat   []byte
	Duration uint32
	Stream   io.ReadSeeker
	Summary  string
}

func NewFileRecord

func NewFileRecord(path string, Summary ...string) (*VoiceElement, error)

func NewRecord

func NewRecord(data []byte, Summary ...string) *VoiceElement

func NewStreamRecord

func NewStreamRecord(r io.ReadSeeker, Summary ...string) *VoiceElement

func (*VoiceElement) BuildElement

func (e *VoiceElement) BuildElement() []*message.Elem

func (*VoiceElement) Type

func (e *VoiceElement) Type() ElementType

Jump to

Keyboard shortcuts

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