dto

package
v0.0.0-...-d296f3d Latest Latest
Warning

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

Go to latest
Published: Mar 25, 2022 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// IntentGuilds 包含
	// - GUILD_CREATE -- 当机器人加入新 guild 时
	// - GUILD_UPDATE -- 当 guild 资料发生变更时
	// - GUILD_DELETE -- 当机器人退出 guild 时
	// - CHANNEL_CREATE -- 当 channel 被创建时
	// - CHANNEL_UPDATE -- 当 channel 被更新时
	// - CHANNEL_DELETE -- 当 channel 被删除时
	IntentGuilds = 1 << 0

	// IntentGuildMembers 包含
	// - GUILD_MEMBER_ADD -- 当成员加入时
	// - GUILD_MEMBER_UPDATE -- 当成员资料变更时
	// - GUILD_MEMBER_REMOVE -- 当成员被移除时
	IntentGuildMembers = 1 << 1

	// IntentGuildMessages 包含
	// - MESSAGE_CREATE -- 发送消息事件,代表频道内的全部消息,而不只是 at 机器人的消息。内容与 AT_MESSAGE_CREATE 相同
	IntentGuildMessages = 1 << 9

	// IntentGuildMessageReactions 包含
	// - MESSAGE_REACTION_ADD -- 为消息添加表情表态
	// - MESSAGE_REACTION_REMOVE -- 为消息删除表情表态
	IntentGuildMessageReactions = 1 << 10

	// IntentDirectMessage 包含
	// - DIRECT_MESSAGE_CREATE -- 当收到用户发给机器人的私信消息时
	IntentDirectMessage = 1 << 12

	// IntentMessageAudit 包含
	// - MESSAGE_AUDIT_PASS -- 消息审核通过
	// - MESSAGE_AUDIT_REJECT -- 消息审核不通过
	IntentMessageAudit = 1 << 27

	// IntentAudioAction 包含
	// - AUDIO_START -- 音频开始播放时
	// - AUDIO_FINISH -- 音频播放结束时
	// - AUDIO_ON_MIC -- 上麦时
	// - AUDIO_OFF_MIC -- 下麦时
	IntentAudioAction = 1 << 29

	// IntentAtMessages 包含
	// - AT_MESSAGE_CREATE -- 当收到@机器人的消息时
	IntentAtMessages = 1 << 30
)
View Source
const (
	OPCodeDispatch       = 0  // 服务端进行消息推送
	OPCodeHeartbeat      = 1  // 客户端或服务端发送心跳
	OPCodeIdentify       = 2  // 客户端发送鉴权
	OPCodeResume         = 6  // 客户端恢复连接
	OPCodeReconnect      = 7  // 服务端通知客户端重新连接
	OPCodeInvalidSession = 9  // 当identify或resume的时候,如果参数有错,服务端会返回该消息
	OPCodeHello          = 10 // 当客户端与网关建立ws连接之后,网关下发的第一条消息
	OPCodeHeartbeatACK   = 11 // 当发送心跳成功之后,就会收到该消息
)

具体参考: https://bot.q.qq.com/wiki/develop/api/gateway/opcode.html

Variables

This section is empty.

Functions

func MentionUser

func MentionUser(userID string) string

MentionUser 返回 at 用户的内嵌格式 https://bot.q.qq.com/wiki/develop/api/openapi/message/message_format.html

Types

type Ark

type Ark struct {
	TemplateID int      `json:"template_id,omitempty"` // ark 模版 ID
	KV         []*ArkKV `json:"kv,omitempty"`          // ArkKV 数组
}

Ark 消息模版

type ArkKV

type ArkKV struct {
	Key   string    `json:"key,omitempty"`
	Value string    `json:"value,omitempty"`
	Obj   []*ArkObj `json:"obj,omitempty"`
}

ArkKV Ark 键值对

type ArkObj

type ArkObj struct {
	ObjKV []*ArkObjKV `json:"obj_kv,omitempty"`
}

ArkObj Ark 对象

type ArkObjKV

type ArkObjKV struct {
	Key   string `json:"key,omitempty"`
	Value string `json:"value,omitempty"`
}

ArkObjKV Ark 对象键值对

type Embed

type Embed struct {
	Title       string                `json:"title,omitempty"`
	Description string                `json:"description,omitempty"`
	Prompt      string                `json:"prompt"` // 消息弹窗内容,消息列表摘要
	Thumbnail   MessageEmbedThumbnail `json:"thumbnail,omitempty"`
	Fields      []*EmbedField         `json:"fields,omitempty"`
}

Embed 结构

type EmbedField

type EmbedField struct {
	Name  string `json:"name,omitempty"`
	Value string `json:"value,omitempty"`
}

EmbedField Embed字段描述

type EventType

type EventType string

EventType 事件类型

const (
	EventReady           EventType = "READY"
	EventAtMessageCreate EventType = "AT_MESSAGE_CREATE"
)

type Intent

type Intent int

Intent 事件 intents

type Member

type Member struct {
	GuildID  string    `json:"guild_id"`
	JoinedAt Timestamp `json:"joined_at"`
	Nick     string    `json:"nick"`
	User     *User     `json:"user"`
	Roles    []string  `json:"roles"`
}

Member 群成员

type Message

type Message struct {
	// 消息ID
	ID string `json:"id"`
	// 子频道ID
	ChannelID string `json:"channel_id"`
	// 频道ID
	GuildID string `json:"guild_id"`
	// 内容
	Content string `json:"content"`
	// 发送时间
	Timestamp Timestamp `json:"timestamp"`
	// 消息编辑时间
	EditedTimestamp Timestamp `json:"edited_timestamp"`
	// 是否@all
	MentionEveryone bool `json:"mention_everyone"`
	// 消息发送方
	Author *User `json:"author"`
	// 消息发送方Author的member属性,只是部分属性
	Member *Member `json:"member"`
	// 附件
	Attachments []*MessageAttachment `json:"attachments"`
	// 结构化消息-embeds
	Embeds []*Embed `json:"embeds"`
	// 消息中的提醒信息(@)列表
	Mentions []*User `json:"mentions"`
	// ark 消息
	Ark *Ark `json:"ark"`
	// 私信消息
	DirectMessage bool `json:"direct_message"`
	// 子频道 seq,用于消息间的排序,seq 在同一子频道中按从先到后的顺序递增,不同的子频道之前消息无法排序
	SeqInChannel string `json:"seq_in_channel"`
	// 引用的消息
	MessageReference *MessageReference `json:"message_reference,omitempty"`
}

Message 消息结构体定义

type MessageAttachment

type MessageAttachment struct {
	URL string `json:"url"`
}

MessageAttachment 附件定义

type MessageEmbedThumbnail

type MessageEmbedThumbnail struct {
	URL string `json:"url"`
}

MessageEmbedThumbnail embed 消息的缩略图对象

type MessageReference

type MessageReference struct {
	MessageID             string `json:"message_id"`               // 消息 id
	IgnoreGetMessageError bool   `json:"ignore_get_message_error"` // 是否忽律获取消息失败错误
}

MessageReference 引用消息

type OPCode

type OPCode int

OPCode websocket 操作码

type PostChannelMessage

type PostChannelMessage struct {
	Content          string            `json:"content,omitempty"`
	Embed            *Embed            `json:"embed,omitempty"`
	Ark              *Ark              `json:"ark,omitempty"`
	MessageReference *MessageReference `json:"message_reference,omitempty"`
	Image            string            `json:"image,omitempty"`
	MsgID            string            `json:"msg_id,omitempty"` // 要回复的消息id,为空是主动消息,公域机器人会异步审核,不为空是被动消息,公域机器人会校验语料
}

PostChannelMessage 发送消息结构体定义

type Timestamp

type Timestamp string

Timestamp 时间戳

type User

type User struct {
	ID               string `json:"id"`
	Username         string `json:"username"`
	Avatar           string `json:"avatar"`
	Bot              bool   `json:"bot"`
	UnionOpenID      string `json:"union_openid"`       // 特殊关联应用的 openid
	UnionUserAccount string `json:"union_user_account"` // 机器人关联的用户信息,与union_openid关联的应用是同一个
}

User 用户

type WSATMessageData

type WSATMessageData Message

WSATMessageData 用于解析 at 机器人的消息

type WSAccessPoint

type WSAccessPoint struct {
	URL string `json:"url"`
}

WSAccessPoint websocket 接入点信息

type WSHelloData

type WSHelloData struct {
	HeartbeatInterval int `json:"heartbeat_interval"`
}

WSHelloData 连接成功后返回

type WSIdentityData

type WSIdentityData struct {
	Token      string   `json:"token"`
	Intents    Intent   `json:"intents"`
	Shard      []uint32 `json:"shard"` // array of two integers (shard_id, num_shards)
	Properties struct {
		Os      string `json:"$os,omitempty"`
		Browser string `json:"$browser,omitempty"`
		Device  string `json:"$device,omitempty"`
	} `json:"properties,omitempty"`
}

WSIdentityData 鉴权数据

type WSPayload

type WSPayload struct {
	WSPayloadBase
	Data       interface{} `json:"d,omitempty"`
	RawMessage []byte      `json:"-"` // 原始的 message 数据
}

WSPayload websocket 消息传输结构

type WSPayloadBase

type WSPayloadBase struct {
	OPCode OPCode    `json:"op"`
	Seq    uint32    `json:"s,omitempty"`
	Type   EventType `json:"t,omitempty"`
}

WSPayloadBase websocket 基础信息, 不包含 data

type WSReadyData

type WSReadyData struct {
	Version   int    `json:"version"`
	SessionID string `json:"session_id"`
	User      struct {
		ID       string `json:"id"`
		Username string `json:"username"`
		Bot      bool   `json:"bot"`
	} `json:"user"`
	Shard []uint32 `json:"shard"`
}

WSReadyData 鉴权完成后返回

type WSResumeData

type WSResumeData struct {
	Token     string `json:"token"`
	SessionID string `json:"session_id"`
	Seq       uint32 `json:"seq"`
}

WSResumeData 重连数据

type WSSession

type WSSession struct {
	ID      string // 鉴权完成后由 QQ 服务器下发
	LastSeq uint32 // 消息序列号, 保存用于发送心跳时使用
	URL     string
	Token   token.Token
	Intent  Intent
}

WSSession websocket 链接所需要的会话信息

Jump to

Keyboard shortcuts

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