onebot11

package
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Jun 11, 2026 License: MIT Imports: 23 Imported by: 0

Documentation

Overview

onebot11 包提供 AnyBot 的 OneBot v11 适配器、消息段构造器和类型化动作客户端。

插件只需要回复消息时应优先使用 sdk 的协议无关消息能力;需要群管、文件、 好友列表等 OneBot v11 专属动作时,可以在 SDK 事件处理函数中调用 ClientFrom(c) 或 EventFrom(c) 提取类型化对象。

Index

Constants

View Source
const Protocol core.Protocol = "onebot11"

Protocol 表示 OneBot v11 协议标识。

Variables

This section is empty.

Functions

func At

func At(qq any) message.Segment

At 创建 OneBot v11 提及消息段。

func CQString

func CQString(chain message.Chain) string

CQString 将消息链渲染为 OneBot CQ 码文本。

func Custom

func Custom(kind string, data map[string]any) message.Segment

Custom 创建自定义 OneBot v11 消息段。

func CustomMusic

func CustomMusic(url, audio, title, content, image string) message.Segment

CustomMusic 创建 OneBot v11 自定义音乐消息段。

func CustomNode

func CustomNode(userID any, nickname string, content message.Chain) message.Segment

CustomNode 创建合并转发自定义节点。

func Face

func Face(id any) message.Segment

Face 创建 OneBot v11 表情消息段。

func Image

func Image(file string) message.Segment

Image 创建 OneBot v11 图片消息段。

func JSON

func JSON(data string) message.Segment

JSON 创建 OneBot v11 JSON 消息段。

func Music

func Music(kind string, id any) message.Segment

Music 创建 OneBot v11 音乐消息段。

func Node

func Node(id any) message.Segment

Node 创建合并转发引用节点。

func ParseCQ

func ParseCQ(input string) message.Chain

ParseCQ 将 OneBot CQ 码文本解析为消息链。

func Record

func Record(file string) message.Segment

Record 创建 OneBot v11 语音消息段。

func Reply

func Reply(id any) message.Segment

Reply 创建 OneBot v11 回复消息段。

func Share

func Share(url, title, content, image string) message.Segment

Share 创建 OneBot v11 分享消息段。

func Text

func Text(text string) message.Segment

Text 创建 OneBot v11 文本消息段。

func Video

func Video(file string) message.Segment

Video 创建 OneBot v11 视频消息段。

func XML

func XML(data string) message.Segment

XML 创建 OneBot v11 XML 消息段。

Types

type ActionError added in v1.0.1

type ActionError struct {
	Action  string
	Status  string
	RetCode int
	Message string
	Wording string
}

ActionError 描述一次被 OneBot v11 协议端拒绝或返回失败状态的动作调用。

func (*ActionError) Error added in v1.0.1

func (e *ActionError) Error() string

type Adapter

type Adapter struct {
	// contains filtered or unexported fields
}

Adapter 将 OneBot v11 传输接入 AnyBot 运行时。

func AdapterFromConfig

func AdapterFromConfig(cfg Config, extra ...Option) (*Adapter, error)

AdapterFromConfig 根据配置创建 OneBot v11 适配器,并追加额外选项。

func HTTP

func HTTP(apiURL, listenAddr string, opts ...Option) *Adapter

HTTP 创建 HTTP API 与事件回调适配器;listenAddr 为空时仅启用动作调用。

func LoadAdapter

func LoadAdapter(path string, extra ...Option) (*Adapter, error)

LoadAdapter 从 YAML 文件读取配置并创建 OneBot v11 适配器。

func New

func New(transport Transport) *Adapter

New 基于自定义传输创建适配器,适合扩展或测试场景。

func ReverseWS

func ReverseWS(addr string, opts ...Option) *Adapter

ReverseWS 创建反向 WebSocket 服务端适配器,由 NapCat 主动连接 AnyBot。

func WebSocket

func WebSocket(url string, opts ...Option) *Adapter

WebSocket 创建正向 WebSocket 适配器,由 AnyBot 主动连接协议端。

func (*Adapter) Client

func (a *Adapter) Client() core.ActionClient

Client 返回 OneBot v11 类型化动作客户端。

func (*Adapter) Protocol

func (a *Adapter) Protocol() core.Protocol

Protocol 返回适配器所属协议。

func (*Adapter) SetStateSink added in v1.0.1

func (a *Adapter) SetStateSink(sink core.AdapterStateSink)

SetStateSink 设置协议无关的状态上报函数。

func (*Adapter) Start

func (a *Adapter) Start(ctx context.Context, emit core.EmitFunc) error

Start 启动底层传输,并把 OneBot v11 事件标准化后投递给运行时。

func (*Adapter) State added in v1.0.1

func (a *Adapter) State() core.AdapterState

State 返回最近一次已知的 OneBot v11 动作通道状态。

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client 是 OneBot v11 的类型化动作客户端。

func ClientFrom

func ClientFrom(c any) (*Client, bool)

ClientFrom 从 AnyBot 上下文提取 OneBot v11 客户端。

c 可以是 *core.Context,也可以是 SDK 的 *sdk.EventContext 这类暴露 UnsafeCoreContext() *core.Context 的上下文。

func MustClient

func MustClient(c any) *Client

MustClient 从 AnyBot 上下文提取 OneBot v11 客户端;类型不匹配时 panic。

func (*Client) Call

func (c *Client) Call(ctx context.Context, action string, params any, out any) error

Call 调用 OneBot v11 动作,并在成功时把 data 解码到 out。

func (*Client) CallRaw

func (c *Client) CallRaw(ctx context.Context, action string, params any) (*Response, error)

CallRaw 调用 OneBot v11 动作,并返回 OneBot v11 原始响应封套。

func (*Client) CanSendImage

func (c *Client) CanSendImage(ctx context.Context) (bool, error)

CanSendImage 检查当前协议端是否可以发送图片。

func (*Client) CanSendRecord

func (c *Client) CanSendRecord(ctx context.Context) (bool, error)

CanSendRecord 检查当前协议端是否可以发送语音。

func (*Client) CleanCache

func (c *Client) CleanCache(ctx context.Context) error

CleanCache 请求协议端清理缓存。

func (*Client) CreateGroupFileFolder

func (c *Client) CreateGroupFileFolder(ctx context.Context, groupID any, name string, parentID any) error

CreateGroupFileFolder 创建群文件夹。

func (*Client) DeleteGroupFile

func (c *Client) DeleteGroupFile(ctx context.Context, groupID any, fileID, busid any) error

DeleteGroupFile 删除群文件。

func (*Client) DeleteGroupFolder

func (c *Client) DeleteGroupFolder(ctx context.Context, groupID, folderID any) error

DeleteGroupFolder 删除群文件夹。

func (*Client) DeleteMessage

func (c *Client) DeleteMessage(ctx context.Context, messageID any) error

DeleteMessage 撤回指定消息。

func (*Client) GetCSRFToken

func (c *Client) GetCSRFToken(ctx context.Context) (int64, error)

GetCSRFToken 获取 CSRF token。

func (*Client) GetCookies

func (c *Client) GetCookies(ctx context.Context, domain string) (string, error)

GetCookies 获取指定域名的 Cookies。

func (*Client) GetCredentials

func (c *Client) GetCredentials(ctx context.Context, domain string) (Credentials, error)

GetCredentials 获取指定域名的 Cookies 与 CSRF token。

func (*Client) GetForwardMessage

func (c *Client) GetForwardMessage(ctx context.Context, id any) (message.Chain, error)

GetForwardMessage 获取合并转发消息内容。

func (*Client) GetFriendList

func (c *Client) GetFriendList(ctx context.Context) ([]FriendInfo, error)

GetFriendList 获取好友列表。

func (*Client) GetGroupFileSystemInfo

func (c *Client) GetGroupFileSystemInfo(ctx context.Context, groupID any) (GroupFileSystemInfo, error)

GetGroupFileSystemInfo 获取群文件系统容量与数量信息。

func (*Client) GetGroupFileURL

func (c *Client) GetGroupFileURL(ctx context.Context, groupID any, fileID, busid any) (string, error)

GetGroupFileURL 获取群文件下载链接。

func (*Client) GetGroupFilesByFolder

func (c *Client) GetGroupFilesByFolder(ctx context.Context, groupID, folderID any) (GroupFiles, error)

GetGroupFilesByFolder 获取指定群文件夹内容。

func (*Client) GetGroupHonorInfo

func (c *Client) GetGroupHonorInfo(ctx context.Context, groupID any, kind string) (GroupHonorInfo, error)

GetGroupHonorInfo 获取群荣誉信息,kind 对应 OneBot v11 的 type 参数。

func (*Client) GetGroupInfo

func (c *Client) GetGroupInfo(ctx context.Context, groupID any, noCache bool) (GroupInfo, error)

GetGroupInfo 获取群信息。

func (*Client) GetGroupList

func (c *Client) GetGroupList(ctx context.Context) ([]GroupInfo, error)

GetGroupList 获取群列表。

func (*Client) GetGroupMemberInfo

func (c *Client) GetGroupMemberInfo(ctx context.Context, groupID, userID any, noCache bool) (GroupMemberInfo, error)

GetGroupMemberInfo 获取指定群成员信息。

func (*Client) GetGroupMemberList

func (c *Client) GetGroupMemberList(ctx context.Context, groupID any, noCache bool) ([]GroupMemberInfo, error)

GetGroupMemberList 获取指定群的成员列表。

func (*Client) GetGroupRootFiles

func (c *Client) GetGroupRootFiles(ctx context.Context, groupID any) (GroupFiles, error)

GetGroupRootFiles 获取群文件根目录内容。

func (*Client) GetImage

func (c *Client) GetImage(ctx context.Context, file string) (FileInfo, error)

GetImage 获取图片文件信息。

func (*Client) GetLoginInfo

func (c *Client) GetLoginInfo(ctx context.Context) (LoginInfo, error)

GetLoginInfo 获取当前登录账号信息。

func (*Client) GetMessage

func (c *Client) GetMessage(ctx context.Context, messageID any) (MessageInfo, error)

GetMessage 获取指定消息详情。

func (*Client) GetRecord

func (c *Client) GetRecord(ctx context.Context, file, outFormat string) (FileInfo, error)

GetRecord 获取语音文件信息,并可请求协议端转换格式。

func (*Client) GetStatus

func (c *Client) GetStatus(ctx context.Context) (StatusInfo, error)

GetStatus 获取协议端运行状态。

func (*Client) GetStrangerInfo

func (c *Client) GetStrangerInfo(ctx context.Context, userID any, noCache bool) (StrangerInfo, error)

GetStrangerInfo 获取陌生人信息。

func (*Client) GetVersionInfo

func (c *Client) GetVersionInfo(ctx context.Context) (VersionInfo, error)

GetVersionInfo 获取协议端版本信息。

func (*Client) Send

func (c *Client) Send(ctx context.Context, target core.ReplyTarget, chain message.Chain) (core.MessageReceipt, error)

Send 根据 ReplyTarget 选择私聊或群聊动作发送消息。

func (*Client) SendGroupMessage

func (c *Client) SendGroupMessage(ctx context.Context, groupID any, chain message.Chain) (string, error)

SendGroupMessage 发送群消息,并返回消息 ID。

func (*Client) SendLike

func (c *Client) SendLike(ctx context.Context, userID any, times int) error

SendLike 向好友发送赞;times 不大于 0 时按 1 次处理。

func (*Client) SendMessage

func (c *Client) SendMessage(ctx context.Context, messageType string, userID, groupID any, chain message.Chain) (string, error)

SendMessage 调用 send_msg 发送消息,适合需要显式指定 message_type 的场景。

func (*Client) SendPrivateMessage

func (c *Client) SendPrivateMessage(ctx context.Context, userID any, chain message.Chain) (string, error)

SendPrivateMessage 发送私聊消息,并返回消息 ID。

func (*Client) SetFriendAddRequest

func (c *Client) SetFriendAddRequest(ctx context.Context, flag string, approve bool, remark string) error

SetFriendAddRequest 处理好友添加请求。

func (*Client) SetGroupAddRequest

func (c *Client) SetGroupAddRequest(ctx context.Context, flag, subType string, approve bool, reason string) error

SetGroupAddRequest 处理加群请求或邀请。

func (*Client) SetGroupAdmin

func (c *Client) SetGroupAdmin(ctx context.Context, groupID, userID any, enable bool) error

SetGroupAdmin 设置或取消群管理员。

func (*Client) SetGroupAnonymous

func (c *Client) SetGroupAnonymous(ctx context.Context, groupID any, enable bool) error

SetGroupAnonymous 开启或关闭群匿名聊天。

func (*Client) SetGroupAnonymousBan

func (c *Client) SetGroupAnonymousBan(ctx context.Context, groupID any, anonymous any, anonymousFlag string, duration time.Duration) error

SetGroupAnonymousBan 设置匿名用户禁言。

func (*Client) SetGroupBan

func (c *Client) SetGroupBan(ctx context.Context, groupID, userID any, duration time.Duration) error

SetGroupBan 设置群成员禁言时长。

func (*Client) SetGroupCard

func (c *Client) SetGroupCard(ctx context.Context, groupID, userID any, card string) error

SetGroupCard 设置群成员名片。

func (*Client) SetGroupKick

func (c *Client) SetGroupKick(ctx context.Context, groupID, userID any, rejectAddRequest bool) error

SetGroupKick 踢出群成员,并可拒绝其后续加群请求。

func (*Client) SetGroupLeave

func (c *Client) SetGroupLeave(ctx context.Context, groupID any, dismiss bool) error

SetGroupLeave 退出群;dismiss 为 true 时尝试解散群。

func (*Client) SetGroupName

func (c *Client) SetGroupName(ctx context.Context, groupID any, name string) error

SetGroupName 设置群名称。

func (*Client) SetGroupSpecialTitle

func (c *Client) SetGroupSpecialTitle(ctx context.Context, groupID, userID any, title string, duration time.Duration) error

SetGroupSpecialTitle 设置群成员专属头衔。

func (*Client) SetGroupWholeBan

func (c *Client) SetGroupWholeBan(ctx context.Context, groupID any, enable bool) error

SetGroupWholeBan 开启或关闭全群禁言。

func (*Client) SetRestart

func (c *Client) SetRestart(ctx context.Context, delay time.Duration) error

SetRestart 请求协议端延迟重启。

func (*Client) UploadGroupFile

func (c *Client) UploadGroupFile(ctx context.Context, groupID any, file, name, folder string) error

UploadGroupFile 上传群文件。

func (*Client) UploadPrivateFile

func (c *Client) UploadPrivateFile(ctx context.Context, userID any, file, name string) error

UploadPrivateFile 上传私聊文件。

type Config

type Config struct {
	Protocol  string          `yaml:"protocol"`
	Transport TransportConfig `yaml:"transport"`
}

Config 描述可从 YAML 读取的 OneBot v11 适配器配置。

func LoadConfig

func LoadConfig(path string) (Config, error)

LoadConfig 从 YAML 文件读取 OneBot v11 配置;path 为空时读取 core.yaml。

func (Config) Options

func (cfg Config) Options(extra ...Option) ([]Option, error)

Options 将配置转换为传输选项,并把 extra 追加到结果末尾。

func (Config) Validate

func (cfg Config) Validate() error

Validate 检查协议、传输类型、URL scheme 和必要字段是否有效。

type ConnectionEvent

type ConnectionEvent struct {
	State     ConnectionState
	Transport string
	URL       string
	Addr      string
	Path      string
	Remote    string
}

ConnectionEvent 描述一次 WebSocket 连接状态变化及其传输端信息。

type ConnectionHook

type ConnectionHook func(context.Context, ConnectionEvent)

ConnectionHook 接收 WebSocket 连接状态变化通知。

type ConnectionState

type ConnectionState string

ConnectionState 表示 WebSocket 传输的连接状态。

const (
	// ConnectionConnected 表示 WebSocket 已建立连接。
	ConnectionConnected ConnectionState = "connected"
	// ConnectionDisconnected 表示 WebSocket 已断开连接。
	ConnectionDisconnected ConnectionState = "disconnected"
)

type Credentials

type Credentials struct {
	Cookies   string `json:"cookies"`
	CSRFToken int64  `json:"csrf_token"`
}

Credentials 描述 Cookies 与 CSRF token。

func (*Credentials) UnmarshalJSON

func (i *Credentials) UnmarshalJSON(data []byte) error

type Event

type Event struct {
	Time       int64  `json:"time,omitempty"`
	SelfID     int64  `json:"self_id,omitempty"`
	PostType   string `json:"post_type,omitempty"`
	SubType    string `json:"sub_type,omitempty"`
	RawMessage string `json:"raw_message,omitempty"`

	MessageType string        `json:"message_type,omitempty"`
	MessageID   int64         `json:"message_id,omitempty"`
	UserID      int64         `json:"user_id,omitempty"`
	GroupID     int64         `json:"group_id,omitempty"`
	Message     message.Chain `json:"message,omitempty"`
	Sender      Sender        `json:"sender,omitempty"`

	NoticeType    string `json:"notice_type,omitempty"`
	RequestType   string `json:"request_type,omitempty"`
	MetaEventType string `json:"meta_event_type,omitempty"`

	OperatorID int64  `json:"operator_id,omitempty"`
	TargetID   int64  `json:"target_id,omitempty"`
	Comment    string `json:"comment,omitempty"`
	Flag       string `json:"flag,omitempty"`

	Extra map[string]json.RawMessage `json:"-"`
	Raw   json.RawMessage            `json:"-"`
}

Event 是宽松的 OneBot v11 事件模型,已知字段会被标准化,未知字段保留在 Extra。

func EventFrom

func EventFrom(c any) (*Event, bool)

EventFrom 从 AnyBot 上下文提取 OneBot v11 原始事件。

c 可以是 *core.Context,也可以是 SDK 的 *sdk.EventContext 这类暴露 UnsafeCoreContext() *core.Context 的上下文。

func (*Event) Normalize

func (e *Event) Normalize() *core.Event

Normalize 将 OneBot v11 事件转换为 AnyBot 标准事件封套。

func (*Event) UnmarshalJSON

func (e *Event) UnmarshalJSON(data []byte) error

UnmarshalJSON 保留未知字段,并同时接受数组消息与 CQ 字符串消息。

type FileInfo

type FileInfo struct {
	File string `json:"file"`
	URL  string `json:"url,omitempty"`
}

FileInfo 描述协议端返回的本地文件信息。

type FriendInfo

type FriendInfo struct {
	UserID   int64  `json:"user_id"`
	Nickname string `json:"nickname"`
	Remark   string `json:"remark"`
}

FriendInfo 描述好友资料。

func (*FriendInfo) UnmarshalJSON

func (i *FriendInfo) UnmarshalJSON(data []byte) error

type GroupFile

type GroupFile struct {
	GroupID       int64  `json:"group_id"`
	FileID        string `json:"file_id"`
	FileName      string `json:"file_name"`
	BusID         int64  `json:"busid"`
	FileSize      int64  `json:"file_size"`
	UploadTime    int64  `json:"upload_time"`
	DeadTime      int64  `json:"dead_time"`
	ModifyTime    int64  `json:"modify_time"`
	DownloadTimes int64  `json:"download_times"`
	Uploader      int64  `json:"uploader"`
	UploaderName  string `json:"uploader_name"`
}

GroupFile 描述群文件条目。

func (*GroupFile) UnmarshalJSON

func (i *GroupFile) UnmarshalJSON(data []byte) error

type GroupFileSystemInfo

type GroupFileSystemInfo struct {
	FileCount  int64 `json:"file_count"`
	LimitCount int64 `json:"limit_count"`
	UsedSpace  int64 `json:"used_space"`
	TotalSpace int64 `json:"total_space"`
}

GroupFileSystemInfo 描述群文件系统容量和文件数量。

func (*GroupFileSystemInfo) UnmarshalJSON

func (i *GroupFileSystemInfo) UnmarshalJSON(data []byte) error

type GroupFiles

type GroupFiles struct {
	Files   []GroupFile   `json:"files"`
	Folders []GroupFolder `json:"folders"`
}

GroupFiles 描述群文件目录内容。

type GroupFolder

type GroupFolder struct {
	GroupID        int64  `json:"group_id"`
	FolderID       string `json:"folder_id"`
	FolderName     string `json:"folder_name"`
	CreateTime     int64  `json:"create_time"`
	Creator        int64  `json:"creator"`
	CreatorName    string `json:"creator_name"`
	TotalFileCount int64  `json:"total_file_count"`
}

GroupFolder 描述群文件夹条目。

func (*GroupFolder) UnmarshalJSON

func (i *GroupFolder) UnmarshalJSON(data []byte) error

type GroupHonorInfo

type GroupHonorInfo struct {
	GroupID          int64       `json:"group_id"`
	CurrentTalkative HonorItem   `json:"current_talkative"`
	TalkativeList    []HonorItem `json:"talkative_list"`
	PerformerList    []HonorItem `json:"performer_list"`
	LegendList       []HonorItem `json:"legend_list"`
	StrongNewbieList []HonorItem `json:"strong_newbie_list"`
	EmotionList      []HonorItem `json:"emotion_list"`
}

GroupHonorInfo 描述群荣誉信息。

func (*GroupHonorInfo) UnmarshalJSON

func (i *GroupHonorInfo) UnmarshalJSON(data []byte) error

type GroupInfo

type GroupInfo struct {
	GroupID        int64  `json:"group_id"`
	GroupName      string `json:"group_name"`
	MemberCount    int    `json:"member_count"`
	MaxMemberCount int    `json:"max_member_count"`
}

GroupInfo 描述群资料。

func (*GroupInfo) UnmarshalJSON

func (i *GroupInfo) UnmarshalJSON(data []byte) error

type GroupMemberInfo

type GroupMemberInfo struct {
	GroupID         int64  `json:"group_id"`
	UserID          int64  `json:"user_id"`
	Nickname        string `json:"nickname"`
	Card            string `json:"card"`
	Sex             string `json:"sex,omitempty"`
	Age             int    `json:"age,omitempty"`
	Area            string `json:"area,omitempty"`
	JoinTime        int64  `json:"join_time,omitempty"`
	LastSentTime    int64  `json:"last_sent_time,omitempty"`
	Role            string `json:"role"`
	Unfriendly      bool   `json:"unfriendly,omitempty"`
	Title           string `json:"title"`
	TitleExpireTime int64  `json:"title_expire_time,omitempty"`
	CardChangeable  bool   `json:"card_changeable,omitempty"`
}

GroupMemberInfo 描述群成员资料。

func (*GroupMemberInfo) UnmarshalJSON

func (i *GroupMemberInfo) UnmarshalJSON(data []byte) error

type HonorItem

type HonorItem struct {
	UserID      int64  `json:"user_id"`
	Nickname    string `json:"nickname"`
	Avatar      string `json:"avatar"`
	Description string `json:"description"`
}

HonorItem 描述群荣誉列表中的成员条目。

func (*HonorItem) UnmarshalJSON

func (i *HonorItem) UnmarshalJSON(data []byte) error

type LoginInfo

type LoginInfo struct {
	UserID   int64  `json:"user_id"`
	Nickname string `json:"nickname"`
}

LoginInfo 描述当前登录账号。

func (*LoginInfo) UnmarshalJSON

func (i *LoginInfo) UnmarshalJSON(data []byte) error

type Message

type Message = message.Chain

Message 是 OneBot v11 消息链类型别名。

type MessageInfo

type MessageInfo struct {
	Time        int64         `json:"time"`
	MessageType string        `json:"message_type"`
	MessageID   int64         `json:"message_id"`
	RealID      int64         `json:"real_id,omitempty"`
	Sender      Sender        `json:"sender"`
	Message     message.Chain `json:"message"`
	RawMessage  string        `json:"raw_message"`
}

MessageInfo 描述 get_msg 返回的消息详情。

func (*MessageInfo) UnmarshalJSON

func (m *MessageInfo) UnmarshalJSON(data []byte) error

UnmarshalJSON 同时接受数组消息和 CQ 字符串消息。

type Option

type Option func(*options)

Option 调整 OneBot v11 传输配置。

func WithAccessToken

func WithAccessToken(token string) Option

WithAccessToken 配置访问令牌,用于 Bearer token 鉴权和反向连接校验。

func WithActionTimeout

func WithActionTimeout(timeout time.Duration) Option

WithActionTimeout 配置动作调用默认超时;调用上下文已有 deadline 时不会覆盖。

func WithConnectionHook

func WithConnectionHook(hook ConnectionHook) Option

WithConnectionHook 注册 WebSocket 连接状态钩子。

func WithDialTimeout

func WithDialTimeout(timeout time.Duration) Option

WithDialTimeout 配置正向 WebSocket 拨号超时。

func WithHeader

func WithHeader(key, value string) Option

WithHeader 添加出站连接使用的 HTTP 头。

func WithLogger

func WithLogger(logger *slog.Logger) Option

WithLogger 配置适配器日志器;nil 会被忽略。

func WithMaxEventBytes added in v1.0.1

func WithMaxEventBytes(n int64) Option

WithMaxEventBytes 配置入站事件或响应帧的最大字节数。

func WithPath

func WithPath(path string) Option

WithPath 配置 HTTP 事件回调或反向 WebSocket 的请求路径。

func WithReconnectInterval

func WithReconnectInterval(interval time.Duration) Option

WithReconnectInterval 配置正向 WebSocket 初始重连间隔。

func WithReconnectMaxInterval

func WithReconnectMaxInterval(interval time.Duration) Option

WithReconnectMaxInterval 配置正向 WebSocket 最大重连间隔。

type Response

type Response struct {
	Status  string          `json:"status"`
	RetCode int             `json:"retcode"`
	Data    json.RawMessage `json:"data,omitempty"`
	Message string          `json:"message,omitempty"`
	Wording string          `json:"wording,omitempty"`
	Echo    string          `json:"echo,omitempty"`

	Raw json.RawMessage `json:"-"`
}

Response 表示 OneBot v11 动作响应,并保留原始 JSON。

func (*Response) Decode

func (r *Response) Decode(out any) error

Decode 将响应 data 字段解码到 out;空 data 会被视为成功空值。

func (*Response) OK

func (r *Response) OK() bool

OK 判断动作响应是否为成功状态。

func (*Response) UnmarshalJSON

func (r *Response) UnmarshalJSON(data []byte) error

UnmarshalJSON 兼容数字或字符串形式的 retcode。

type Sender

type Sender struct {
	UserID   int64  `json:"user_id,omitempty"`
	Nickname string `json:"nickname,omitempty"`
	Card     string `json:"card,omitempty"`
	Sex      string `json:"sex,omitempty"`
	Age      int    `json:"age,omitempty"`
	Area     string `json:"area,omitempty"`
	Level    string `json:"level,omitempty"`
	Role     string `json:"role,omitempty"`
	Title    string `json:"title,omitempty"`
}

Sender 描述 OneBot v11 消息发送者信息。

func (*Sender) UnmarshalJSON

func (s *Sender) UnmarshalJSON(data []byte) error

UnmarshalJSON 兼容数字或字符串形式的 user_id。

type StatusInfo

type StatusInfo struct {
	Online bool           `json:"online"`
	Good   bool           `json:"good"`
	Extra  map[string]any `json:"-"`
}

StatusInfo 描述协议端运行状态。

type StrangerInfo

type StrangerInfo struct {
	UserID    int64  `json:"user_id"`
	Nickname  string `json:"nickname"`
	Sex       string `json:"sex"`
	Age       int    `json:"age"`
	QID       string `json:"qid,omitempty"`
	Level     int    `json:"level,omitempty"`
	LoginDays int    `json:"login_days,omitempty"`
}

StrangerInfo 描述陌生人资料。

func (*StrangerInfo) UnmarshalJSON

func (i *StrangerInfo) UnmarshalJSON(data []byte) error

type Transport

type Transport interface {
	Start(context.Context, func(context.Context, *Event) error) error
	CallRaw(context.Context, string, any) (*Response, error)
}

Transport 定义 OneBot v11 事件接收与动作调用所需的底层传输能力。

type TransportConfig

type TransportConfig struct {
	Type                 string            `yaml:"type"`
	Listen               string            `yaml:"listen"`
	Path                 string            `yaml:"path"`
	URL                  string            `yaml:"url"`
	AccessToken          string            `yaml:"access_token"`
	Headers              map[string]string `yaml:"headers"`
	MaxEventBytes        int64             `yaml:"max_event_bytes"`
	DialTimeout          string            `yaml:"dial_timeout"`
	ActionTimeout        string            `yaml:"action_timeout"`
	ReconnectInterval    string            `yaml:"reconnect_interval"`
	ReconnectMaxInterval string            `yaml:"reconnect_max_interval"`
}

TransportConfig 描述 OneBot v11 传输层配置。

type VersionInfo

type VersionInfo struct {
	AppName         string `json:"app_name"`
	AppVersion      string `json:"app_version"`
	ProtocolVersion string `json:"protocol_version"`
}

VersionInfo 描述协议端版本信息。

Directories

Path Synopsis
napcat 包提供 NapCat 专属 OneBot v11 扩展动作的类型化辅助方法。
napcat 包提供 NapCat 专属 OneBot v11 扩展动作的类型化辅助方法。

Jump to

Keyboard shortcuts

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