libonebot

package module
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Sep 18, 2022 License: MIT Imports: 23 Imported by: 6

README

Go LibOneBot

OneBot Version Go Reference

Go LibOneBot 可以帮助 OneBot 实现者快速在新的聊天机器人平台实现 OneBot 12 接口标准

具体而言,Go LibOneBot 通过 OneBotConfigActionMuxEvent 等类型的抽象,让 OneBot 实现者只需编写少量代码即可完成一个 OneBot 实现,而无需关心过多 OneBot 标准所定义的通信方式的细节。

基于 LibOneBot 实现 OneBot 时,OneBot 实现者只需专注于编写与聊天机器人平台对接的逻辑,包括通过长轮询或 webhook 方式从机器人平台获得事件,并将其转换为 OneBot 事件,以及处理 OneBot 动作请求,并将其转换为对机器人平台 API 的调用。

用法

使用方法请参考 Examplesrichardchien/go-onebot-repl(通过交互命令行输入“私聊消息”的 OneBot 实现)和 Godoc 文档

局限

Go LibOneBot 不会提供很好的多机器人账号连接复用支持,如需更好的支持,请使用 walle-core

致谢

Documentation

Index

Constants

View Source
const (
	ActionUploadFile           = "upload_file"            // 上传文件
	ActionUploadFileFragmented = "upload_file_fragmented" // 分片上传文件
	ActionGetFile              = "get_file"               // 获取文件
	ActionGetFileFragmented    = "get_file_fragmented"    // 分片获取文件
)
View Source
const (
	GroupMemberIncreaseNoticeEventSubTypeJoin   = "join"   // 成员主动加入
	GroupMemberIncreaseNoticeEventSubTypeInvite = "invite" // 成员被邀请加入
)
View Source
const (
	GroupMemberDecreaseNoticeEventSubTypeLeave = "leave" // 成员主动退出
	GroupMemberDecreaseNoticeEventSubTypeKick  = "kick"  // 成员被踢出
)
View Source
const (
	GroupMessageDeleteNoticeEventSubTypeRecall = "recall" // 发送者主动删除
	GroupMessageDeleteNoticeEventSubTypeDelete = "delete" // 管理员删除
)
View Source
const (
	ActionGetGroupInfo       = "get_group_info"        // 获取群信息
	ActionGetGroupList       = "get_group_list"        // 获取群列表
	ActionGetGroupMemberInfo = "get_group_member_info" // 获取群成员信息
	ActionGetGroupMemberList = "get_group_member_list" // 获取群成员列表
	ActionSetGroupName       = "set_group_name"        // 设置群名称
	ActionLeaveGroup         = "leave_group"           // 退出群
)
View Source
const (
	GuildMemberIncreaseNoticeEventSubTypeJoin   = "join"   // 成员主动加入
	GuildMemberIncreaseNoticeEventSubTypeInvite = "invite" // 成员被邀请加入
)
View Source
const (
	GuildMemberDecreaseNoticeEventSubTypeLeave = "leave" // 成员主动退出
	GuildMemberDecreaseNoticeEventSubTypeKick  = "kick"  // 成员被踢出
)
View Source
const (
	ChannelMemberIncreaseNoticeEventSubTypeJoin   = "join"   // 成员主动加入
	ChannelMemberIncreaseNoticeEventSubTypeInvite = "invite" // 成员被邀请加入
)
View Source
const (
	ChannelMemberDecreaseNoticeEventSubTypeLeave = "leave" // 成员主动退出
	ChannelMemberDecreaseNoticeEventSubTypeKick  = "kick"  // 成员被踢出
)
View Source
const (
	ChannelMessageDeleteNoticeEventSubTypeRecall = "recall" // 发送者主动删除
	ChannelMessageDeleteNoticeEventSubTypeDelete = "delete" // 管理员删除
)
View Source
const (
	ActionGetGuildInfo         = "get_guild_info"          // 获取群组信息
	ActionGetGuildList         = "get_guild_list"          // 获取群组列表
	ActionSetGuildName         = "set_guild_name"          // 设置群组名称
	ActionGetGuildMemberInfo   = "get_guild_member_info"   // 获取群组成员信息
	ActionGetGuildMemberList   = "get_guild_member_list"   // 获取群组成员列表
	ActionLeaveGuild           = "leave_guild"             // 退出群组
	ActionGetChannelInfo       = "get_channel_info"        // 获取频道信息
	ActionGetChannelList       = "get_channel_list"        // 获取频道列表
	ActionSetChannelName       = "set_channel_name"        // 设置频道名称
	ActionGetChannelMemberInfo = "get_channel_member_info" // 获取频道成员信息
	ActionGetChannelMemberList = "get_channel_member_list" // 获取频道成员列表
	ActionLeaveChannel         = "leave_channel"           // 退出频道
)
View Source
const (
	SegTypeText       = "text"        // 纯文本消息段
	SegTypeMention    = "mention"     // 提及 (即 @) 消息段
	SegTypeMentionAll = "mention_all" // 提及所有人消息段
	SegTypeImage      = "image"       // 图片消息段
	SegTypeVoice      = "voice"       // 语音消息段
	SegTypeAudio      = "audio"       // 音频消息段
	SegTypeVideo      = "video"       // 视频消息段
	SegTypeFile       = "file"        // 文件消息段
	SegTypeLocation   = "location"    // 位置消息段
	SegTypeReply      = "reply"       // 回复消息段
)

SegTypeXxx 表示 OneBot 标准定义的消息段类型.

View Source
const (
	ActionSendMessage   = "send_message"   // 发送消息
	ActionDeleteMessage = "delete_message" // 删除消息
)
View Source
const (
	// LibOneBot 自动处理的特殊元动作
	ActionGetLatestEvents     = "get_latest_events"     // 获取最新事件列表 (仅 HTTP 通信方式支持)
	ActionGetSupportedActions = "get_supported_actions" // 获取支持的动作列表

	ActionGetStatus  = "get_status"  // 获取 OneBot 运行状态
	ActionGetVersion = "get_version" // 获取 OneBot 版本信息
)
View Source
const (
	ActionGetSelfInfo   = "get_self_info"   // 获取机器人自身信息
	ActionGetUserInfo   = "get_user_info"   // 获取用户信息
	ActionGetFriendList = "get_friend_list" // 获取好友列表
)
View Source
const (
	Version       = "0.6.0" // LibOneBot 版本号
	OneBotVersion = "12"    // OneBot 标准版本
)
View Source
const (
	CommMethodNone        = 0 // 无通信方式 (OneBot 实现内部构造的请求)
	CommMethodHTTP        = 1 // HTTP 通信方式
	CommMethodHTTPWebhook = 2 // HTTP Webhook 通信方式
	CommMethodWS          = 3 // WebSocket 通信方式
	CommMethodWSReverse   = 4 // 反向 WebSocket 通信方式
)
View Source
const (
	RetCodeOK = 0 // 成功

	// 动作请求错误 (类似 HTTP 的 4xx 客户端错误)
	RetCodeRequestErrorBase       = 10000
	RetCodeBadRequest             = 10001 // 无效的动作请求 (格式错误, 必要字段缺失或字段类型错误)
	RetCodeUnsupportedAction      = 10002 // 不支持的动作请求 (OneBot 实现没有实现该动作)
	RetCodeBadParam               = 10003 // 无效的动作请求参数 (参数缺失或参数类型错误)
	RetCodeUnsupportedParam       = 10004 // 不支持的动作请求参数 (OneBot 实现没有实现该参数的语义)
	RetCodeUnsupportedSegment     = 10005 // 不支持的消息段类型 (OneBot 实现没有实现该消息段类型)
	RetCodeBadSegmentData         = 10006 // 无效的消息段参数 (参数缺失或参数类型错误)
	RetCodeUnsupportedSegmentData = 10007 // 不支持的消息段参数 (OneBot 实现没有实现该参数的语义)
	RetCodeWhoAmI                 = 10101 // 未指定机器人账号 (OneBot 实现在单个 OneBot Connect 连接上支持多个机器人账号,但动作请求未指定要使用的账号)
	RetCodeUnknownSelf            = 10102 // 不存在的机器人账号 (动作请求指定的机器人账号不存在)

	// 动作处理器错误 (类似 HTTP 的 5xx 服务端错误)
	RetCodeHandlerErrorBase     = 20000
	RetCodeBadHandler           = 20001 // 动作处理器实现错误 (如没有正确设置响应状态等)
	RetCodeInternalHandlerError = 20002 // 动作处理器运行时抛出异常

	// 动作执行错误 (OneBot 实现可根据需要在低三位细分)
	RetCodeExecutionErrorBase = 30000
	RetCodeDatabaseError      = 31000 // 数据库错误
	RetCodeFilesystemError    = 32000 // 文件系统错误
	RetCodeNetworkError       = 33000 // 网络错误
	RetCodePlatformError      = 34000 // 机器人平台错误 (如由于机器人平台限制导致消息发送失败等)
	RetCodeLogicError         = 35000 // 动作逻辑错误 (如尝试向不存在的用户发送消息等)
	RetCodeIAmTired           = 36000 // 我不想干了 (一位 OneBot 实现决定罢工)

	// 保留错误段
	RetCodeReservedErrorBase1 = 40000
	RetCodeReservedErrorBase2 = 50000
)

RetCodeXxx 表示动作响应返回码.

View Source
const (
	EventTypeMessage = "message" // 消息事件
	EventTypeNotice  = "notice"  // 通知事件
	EventTypeRequest = "request" // 请求事件
	EventTypeMeta    = "meta"    // 元事件
)

EventTypeXxx 表示 OneBot 标准定义的事件类型.

Variables

This section is empty.

Functions

This section is empty.

Types

type ActionMux

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

ActionMux 将动作请求按动作名称分发到不同的 Handler 对象处理.

func NewActionMux

func NewActionMux() *ActionMux

NewActionMux 创建一个新的 ActionMux 对象.

func (*ActionMux) Handle

func (mux *ActionMux) Handle(action string, handler Handler)

Handle 将一个 Handler 对象注册为指定动作的请求处理器.

若要注册为核心动作的请求处理器, 建议使用 ActionXxx 常量作为动作名.

func (*ActionMux) HandleAction

func (mux *ActionMux) HandleAction(w ResponseWriter, r *Request)

HandleAction 为 ActionMux 实现 Handler 接口.

func (*ActionMux) HandleFunc

func (mux *ActionMux) HandleFunc(action string, handler func(ResponseWriter, *Request))

HandleFunc 将一个函数注册为指定动作的请求处理器.

若要注册为核心动作的请求处理器, 建议使用 ActionXxx 常量作为动作名.

type AnyEvent

type AnyEvent interface {
	Name() string
	// contains filtered or unexported methods
}

AnyEvent 是所有事件对象共同实现的接口.

type ChannelCreateNoticeEvent added in v0.6.0

type ChannelCreateNoticeEvent struct {
	NoticeEvent
	GuildID    string `json:"guild_id"`    // 群组 ID
	ChannelID  string `json:"channel_id"`  // 频道 ID
	OperatorID string `json:"operator_id"` // 操作者 ID
}

ChannelCreateNoticeEvent 表示一个频道新建事件.

func MakeChannelCreateNoticeEvent added in v0.6.0

func MakeChannelCreateNoticeEvent(time time.Time, guildID string, channelID string, operatorID string) ChannelCreateNoticeEvent

MakeChannelCreateNoticeEvent 构造一个频道新建事件.

type ChannelDeleteNoticeEvent added in v0.6.0

type ChannelDeleteNoticeEvent struct {
	NoticeEvent
	GuildID    string `json:"guild_id"`    // 群组 ID
	ChannelID  string `json:"channel_id"`  // 频道 ID
	OperatorID string `json:"operator_id"` // 操作者 ID
}

ChannelDeleteNoticeEvent 表示一个频道删除事件.

func MakeChannelDeleteNoticeEvent added in v0.6.0

func MakeChannelDeleteNoticeEvent(time time.Time, guildID string, channelID string, operatorID string) ChannelDeleteNoticeEvent

MakeChannelDeleteNoticeEvent 构造一个频道删除事件.

type ChannelMemberDecreaseNoticeEvent added in v0.6.0

type ChannelMemberDecreaseNoticeEvent struct {
	NoticeEvent
	GuildID    string `json:"guild_id"`    // 群组 ID
	ChannelID  string `json:"channel_id"`  // 频道 ID
	UserID     string `json:"user_id"`     // 用户 ID
	OperatorID string `json:"operator_id"` // 操作者 ID
}

ChannelMemberDecreaseNoticeEvent 表示一个频道成员减少通知事件.

func MakeChannelMemberDecreaseNoticeEvent added in v0.6.0

func MakeChannelMemberDecreaseNoticeEvent(time time.Time, guildID string, channelID string, userID string, operatorID string) ChannelMemberDecreaseNoticeEvent

MakeChannelMemberDecreaseNoticeEvent 构造一个频道成员减少通知事件.

type ChannelMemberIncreaseNoticeEvent added in v0.6.0

type ChannelMemberIncreaseNoticeEvent struct {
	NoticeEvent
	GuildID    string `json:"guild_id"`    // 群组 ID
	ChannelID  string `json:"channel_id"`  // 频道 ID
	UserID     string `json:"user_id"`     // 用户 ID
	OperatorID string `json:"operator_id"` // 操作者 ID
}

ChannelMemberIncreaseNoticeEvent 表示一个频道成员增加通知事件.

func MakeChannelMemberIncreaseNoticeEvent added in v0.6.0

func MakeChannelMemberIncreaseNoticeEvent(time time.Time, guildID string, channelID string, userID string, operatorID string) ChannelMemberIncreaseNoticeEvent

MakeChannelMemberIncreaseNoticeEvent 构造一个频道成员增加通知事件.

type ChannelMessageDeleteNoticeEvent added in v0.6.0

type ChannelMessageDeleteNoticeEvent struct {
	NoticeEvent
	GuildID    string `json:"guild_id"`    // 群组 ID
	ChannelID  string `json:"channel_id"`  // 频道 ID
	MessageID  string `json:"message_id"`  // 消息 ID
	UserID     string `json:"user_id"`     // 消息发送者 ID
	OperatorID string `json:"operator_id"` // 操作者 ID
}

ChannelMessageDeleteNoticeEvent 表示一个频道消息删除通知事件.

func MakeChannelMessageDeleteNoticeEvent added in v0.6.0

func MakeChannelMessageDeleteNoticeEvent(time time.Time, guildID string, channelID string, messageID string, userID string, operatorID string) ChannelMessageDeleteNoticeEvent

MakeChannelMessageDeleteNoticeEvent 构造一个频道消息删除通知事件.

type ChannelMessageEvent added in v0.6.0

type ChannelMessageEvent struct {
	MessageEvent
	GuildID   string `json:"guild_id"`   // 群组 ID
	ChannelID string `json:"channel_id"` // 频道 ID
	UserID    string `json:"user_id"`    // 用户 ID
}

ChannelMessageEvent 表示一个频道消息事件.

func MakeChannelMessageEvent added in v0.6.0

func MakeChannelMessageEvent(time time.Time, messageID string, message Message, alt_message string, guildId string, channelID string, userID string) ChannelMessageEvent

MakeChannelMessageEvent 构造一个频道消息事件.

type Config

type Config struct {
	Heartbeat ConfigHeartbeat `mapstructure:"heartbeat"` // 心跳
	Comm      ConfigComm      `mapstructure:"comm"`      // 通信方式
}

Config 表示一个 OneBot 配置.

type ConfigComm

type ConfigComm struct {
	HTTP        []ConfigCommHTTP        `mapstructure:"http"`         // HTTP 通信方式
	HTTPWebhook []ConfigCommHTTPWebhook `mapstructure:"http_webhook"` // HTTP Webhook 通信方式
	WS          []ConfigCommWS          `mapstructure:"ws"`           // WebSocket 通信方式
	WSReverse   []ConfigCommWSReverse   `mapstructure:"ws_reverse"`   // 反向 WebSocket 通信方式
}

ConfigComm 配置通信方式.

type ConfigCommHTTP

type ConfigCommHTTP struct {
	Host            string `mapstructure:"host"`              // HTTP 服务器监听 IP
	Port            uint16 `mapstructure:"port"`              // HTTP 服务器监听端口
	AccessToken     string `mapstructure:"access_token"`      // 访问令牌
	EventEnabled    bool   `mapstructure:"event_enabled"`     // 是否启用 get_latest_events 轮询动作
	EventBufferSize uint32 `mapstructure:"event_buffer_size"` // 事件缓冲区大小, 超过该大小将会丢弃最旧的事件, 0 表示不限大小
}

ConfigCommHTTP 配置一个 HTTP 通信方式.

type ConfigCommHTTPWebhook

type ConfigCommHTTPWebhook struct {
	URL         string `mapstructure:"url"`          // Webhook 上报地址
	AccessToken string `mapstructure:"access_token"` // 访问令牌
	Timeout     uint32 `mapstructure:"timeout"`      // 上报请求超时时间, 单位: 毫秒, 0 表示不超时
}

ConfigCommHTTPWebhook 配置一个 HTTP Webhook 通信方式.

type ConfigCommWS

type ConfigCommWS struct {
	Host        string `mapstructure:"host"`         // WebSocket 服务器监听 IP
	Port        uint16 `mapstructure:"port"`         // WebSocket 服务器监听端口
	AccessToken string `mapstructure:"access_token"` // 访问令牌
}

ConfigCommWS 配置一个 WebSocket 通信方式.

type ConfigCommWSReverse

type ConfigCommWSReverse struct {
	URL               string `mapstructure:"url"`                // 反向 WebSocket 连接地址
	AccessToken       string `mapstructure:"access_token"`       // 访问令牌
	ReconnectInterval uint32 `mapstructure:"reconnect_interval"` // 反向 WebSocket 重连间隔, 单位: 毫秒, 必须大于 0
}

ConfigCommWSReverse 配置一个反向 WebSocket 通信方式.

type ConfigHeartbeat

type ConfigHeartbeat struct {
	Enabled  bool   `mapstructure:"enabled"`  // 是否启用
	Interval uint32 `mapstructure:"interval"` // 心跳间隔, 单位: 毫秒, 必须大于 0
}

ConfigHeartbeat 配置心跳.

type EasierMap

type EasierMap struct {
	utils.EasyMap
}

EasierMap 在 EasyMap 的基础上添加了 GetMessage 方法.

func EasierMapFromEasyMap

func EasierMapFromEasyMap(m utils.EasyMap) EasierMap

EasierMapFromEasyMap 从 EasyMap 创建一个 EasierMap.

func EasierMapFromMap

func EasierMapFromMap(m map[string]interface{}) EasierMap

EasierMapFromMap 从 map[string]interface{} 创建一个 EasierMap.

参数:

m: 要封装的 map[string]interface{}, 不能为 nil

func (EasierMap) GetMap

func (m EasierMap) GetMap(key string) (EasierMap, error)

GetMap 获取 map[string]interface{} 类型的字段值, 并封装为 EasierMap.

func (EasierMap) GetMapArray

func (m EasierMap) GetMapArray(key string) ([]EasierMap, error)

GetMapArray 获取 []map[string]interface{} 类型的字段值, 并封装为 []EasierMap.

func (EasierMap) GetMessage

func (m EasierMap) GetMessage(key string) (Message, error)

GetMessage 获取 Message 类型的字段值.

type Event

type Event struct {
	// lock       sync.RWMutex
	ID         string  `json:"id"`             // 事件 ID, 构造时自动生成
	Time       float64 `json:"time"`           // 事件发生时间 (Unix 时间戳), 单位: 秒
	Type       string  `json:"type"`           // 事件类型
	DetailType string  `json:"detail_type"`    // 事件详细类型
	SubType    string  `json:"sub_type"`       // 事件子类型 (详细类型的下一级类型), 可为空
	Self       *Self   `json:"self,omitempty"` // 机器人自身标识, 仅用于非元事件, 无需在构造时传入
}

Event 包含所有类型事件的共同字段.

func (*Event) Name

func (e *Event) Name() string

Name 返回事件名称.

type FriendDecreaseNoticeEvent

type FriendDecreaseNoticeEvent struct {
	NoticeEvent
	UserID string `json:"user_id"` // 用户 ID
}

FriendDecreaseNoticeEvent 表示一个好友减少通知事件.

func MakeFriendDecreaseNoticeEvent

func MakeFriendDecreaseNoticeEvent(time time.Time, userID string) FriendDecreaseNoticeEvent

MakeFriendDecreaseNoticeEvent 构造一个好友减少通知事件.

type FriendIncreaseNoticeEvent

type FriendIncreaseNoticeEvent struct {
	NoticeEvent
	UserID string `json:"user_id"` // 用户 ID
}

FriendIncreaseNoticeEvent 表示一个好友增加通知事件.

func MakeFriendIncreaseNoticeEvent

func MakeFriendIncreaseNoticeEvent(time time.Time, userID string) FriendIncreaseNoticeEvent

MakeFriendIncreaseNoticeEvent 构造一个好友增加通知事件.

type GroupMemberDecreaseNoticeEvent

type GroupMemberDecreaseNoticeEvent struct {
	NoticeEvent
	GroupID    string `json:"group_id"`    // 群 ID
	UserID     string `json:"user_id"`     // 用户 ID
	OperatorID string `json:"operator_id"` // 操作者 ID
}

GroupMemberDecreaseNoticeEvent 表示一个群成员减少通知事件.

func MakeGroupMemberDecreaseNoticeEvent

func MakeGroupMemberDecreaseNoticeEvent(time time.Time, groupID string, userID string, operatorID string) GroupMemberDecreaseNoticeEvent

MakeGroupMemberDecreaseNoticeEvent 构造一个群成员减少通知事件.

type GroupMemberIncreaseNoticeEvent

type GroupMemberIncreaseNoticeEvent struct {
	NoticeEvent
	GroupID    string `json:"group_id"`    // 群 ID
	UserID     string `json:"user_id"`     // 用户 ID
	OperatorID string `json:"operator_id"` // 操作者 ID
}

GroupMemberIncreaseNoticeEvent 表示一个群成员增加通知事件.

func MakeGroupMemberIncreaseNoticeEvent

func MakeGroupMemberIncreaseNoticeEvent(time time.Time, groupID string, userID string, operatorID string) GroupMemberIncreaseNoticeEvent

MakeGroupMemberIncreaseNoticeEvent 构造一个群成员增加通知事件.

type GroupMessageDeleteNoticeEvent

type GroupMessageDeleteNoticeEvent struct {
	NoticeEvent
	GroupID    string `json:"group_id"`    // 群 ID
	MessageID  string `json:"message_id"`  // 消息 ID
	UserID     string `json:"user_id"`     // 消息发送者 ID
	OperatorID string `json:"operator_id"` // 操作者 ID
}

GroupMessageDeleteNoticeEvent 表示一个群消息删除通知事件.

func MakeGroupMessageDeleteNoticeEvent

func MakeGroupMessageDeleteNoticeEvent(time time.Time, groupID string, messageID string, userID string, operatorID string) GroupMessageDeleteNoticeEvent

MakeGroupMessageDeleteNoticeEvent 构造一个群消息删除通知事件.

type GroupMessageEvent

type GroupMessageEvent struct {
	MessageEvent
	GroupID string `json:"group_id"` // 群 ID
	UserID  string `json:"user_id"`  // 用户 ID
}

GroupMessageEvent 表示一个群消息事件.

func MakeGroupMessageEvent

func MakeGroupMessageEvent(time time.Time, messageID string, message Message, alt_message string, groupID string, userID string) GroupMessageEvent

MakeGroupMessageEvent 构造一个群消息事件.

type GuildMemberDecreaseNoticeEvent added in v0.6.0

type GuildMemberDecreaseNoticeEvent struct {
	NoticeEvent
	GuildID    string `json:"guild_id"`    // 群组 ID
	UserID     string `json:"user_id"`     // 用户 ID
	OperatorID string `json:"operator_id"` // 操作者 ID
}

GuildMemberDecreaseNoticeEvent 表示一个群组成员减少通知事件.

func MakeGuildMemberDecreaseNoticeEvent added in v0.6.0

func MakeGuildMemberDecreaseNoticeEvent(time time.Time, guildID string, userID string, operatorID string) GuildMemberDecreaseNoticeEvent

MakeGuildMemberDecreaseNoticeEvent 构造一个群组成员减少通知事件.

type GuildMemberIncreaseNoticeEvent added in v0.6.0

type GuildMemberIncreaseNoticeEvent struct {
	NoticeEvent
	GuildID    string `json:"guild_id"`    // 群组 ID
	UserID     string `json:"user_id"`     // 用户 ID
	OperatorID string `json:"operator_id"` // 操作者 ID
}

GuildMemberIncreaseNoticeEvent 表示一个群组成员增加通知事件.

func MakeGuildMemberIncreaseNoticeEvent added in v0.6.0

func MakeGuildMemberIncreaseNoticeEvent(time time.Time, guildID string, userID string, operatorID string) GuildMemberIncreaseNoticeEvent

MakeGuildMemberIncreaseNoticeEvent 构造一个群组成员增加通知事件.

type Handler

type Handler interface {
	HandleAction(ResponseWriter, *Request)
}

Handler 是动作处理器需要实现的接口.

type HandlerFunc

type HandlerFunc func(ResponseWriter, *Request)

HandlerFunc 表示一个实现 Handler 接口的函数.

func (HandlerFunc) HandleAction

func (handler HandlerFunc) HandleAction(w ResponseWriter, r *Request)

HandleAction 为 HandlerFunc 实现 Handler 接口.

type HeartbeatMetaEvent

type HeartbeatMetaEvent struct {
	MetaEvent
	Interval int64 `json:"interval"` // 到下次心跳的间隔,单位: 毫秒
}

HeartbeatMetaEvent 表示一个心跳元事件.

func MakeHeartbeatMetaEvent

func MakeHeartbeatMetaEvent(time time.Time, interval int64) HeartbeatMetaEvent

MakeHeartbeatMetaEvent 构造一个心跳元事件.

type Message

type Message []Segment

Message 表示一条消息.

func (*Message) ExtractText

func (m *Message) ExtractText() (text string)

ExtractText 提取消息中的纯文本消息段, 并合并为字符串.

func (*Message) Reduce

func (m *Message) Reduce()

Reduce 合并消息中连续的可合并消息段 (如连续的纯文本消息段).

type MessageEvent

type MessageEvent struct {
	Event
	MessageID  string  `json:"message_id"`  // 消息 ID
	Message    Message `json:"message"`     // 消息内容
	AltMessage string  `json:"alt_message"` // 消息内容的替代表示, 可为空
}

MessageEvent 表示一个消息事件.

func MakeMessageEvent

func MakeMessageEvent(time time.Time, detailType string, messageID string, message Message, alt_message string) MessageEvent

MakeMessageEvent 构造一个消息事件.

type MetaEvent

type MetaEvent struct {
	Event
}

MetaEvent 表示一个元事件.

func MakeMetaEvent

func MakeMetaEvent(time time.Time, detailType string) MetaEvent

MakeMetaEvent 构造一个元事件.

type NoticeEvent

type NoticeEvent struct {
	Event
}

NoticeEvent 表示一个通知事件.

func MakeNoticeEvent

func MakeNoticeEvent(time time.Time, detailType string) NoticeEvent

MakeNoticeEvent 构造一个通知事件.

type OneBot

type OneBot struct {
	Impl   string
	Self   *Self // 机器人自身标识, 多机器人账号复用 OneBot 对象时为 nil
	Config *Config
	Logger *logrus.Logger
	// contains filtered or unexported fields
}

OneBot 表示一个 OneBot 实例.

func NewOneBot

func NewOneBot(impl string, self *Self, config *Config) *OneBot

NewOneBot 创建一个新的 OneBot 实例.

参数:

impl: OneBot 实现名称, 不能为空
self: OneBot 实例对应的机器人自身标识, 不能为 nil
config: OneBot 配置, 不能为 nil

func NewOneBotMultiSelf added in v0.7.0

func NewOneBotMultiSelf(impl string, config *Config) *OneBot

NewOneBotMultiSelf 创建一个新的多机器人账号复用的 OneBot 实例.

参数:

impl: OneBot 实现名称, 不能为空
config: OneBot 配置, 不能为 nil

func (*OneBot) CallAction

func (ob *OneBot) CallAction(action string, params map[string]interface{}) Response

CallAction 调用指定动作.

参数:

action: 要调用的动作名称
params: 动作参数, 若传入 nil 则实际动作参数为空 map

func (*OneBot) GetUserAgent

func (ob *OneBot) GetUserAgent() string

GetUserAgent 获取 OneBot 实例的 User-Agent.

func (*OneBot) Handle

func (ob *OneBot) Handle(handler Handler)

Handle 将一个 Handler 对象注册为动作处理器.

一个 OneBot 实例只能注册一个动作处理器, 多次调用将覆盖. 可以传入 ActionMux 对象来根据动作名称分发请求到不同的 Handler 对象.

func (*OneBot) HandleFunc

func (ob *OneBot) HandleFunc(handler func(ResponseWriter, *Request))

HandleFunc 将一个函数注册为动作处理器.

一个 OneBot 实例只能注册一个动作处理器, 多次调用将覆盖.

func (*OneBot) Push

func (ob *OneBot) Push(event AnyEvent) bool

Push 向与 OneBot 实例连接的接受端推送一个事件.

func (*OneBot) PushWithSelf added in v0.7.0

func (ob *OneBot) PushWithSelf(event AnyEvent, self *Self) bool

PushWithSelf 向与 OneBot 实例连接的接受端推送一个事件, 并指定收到事件的机器人自身标识.

func (*OneBot) Run

func (ob *OneBot) Run()

Run 运行 OneBot 实例.

该方法会阻塞当前线程, 直到 Shutdown 被调用.

func (*OneBot) Shutdown

func (ob *OneBot) Shutdown()

Shutdown 停止 OneBot 实例.

type ParamGetter

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

ParamGetter 用于在处理动作请求时方便地获取参数, 当参数不存在或参数错误时, 向 ResponseWriter 写入错误信息.

func NewParamGetter

func NewParamGetter(w ResponseWriter, r *Request) *ParamGetter

NewParamGetter 创建一个 ParamGetter 对象.

func (*ParamGetter) GetBool

func (p *ParamGetter) GetBool(key string) (bool, bool)

GetBool 获取一个布尔类型参数.

func (*ParamGetter) GetBytesOrBase64

func (p *ParamGetter) GetBytesOrBase64(key string) ([]byte, bool)

GetBytesOrBase64 获取一个字节数组类型参数.

func (*ParamGetter) GetFloat64

func (p *ParamGetter) GetFloat64(key string) (float64, bool)

GetFloat64 获取一个浮点数类型参数.

func (*ParamGetter) GetInt64

func (p *ParamGetter) GetInt64(key string) (int64, bool)

GetInt64 获取一个整数类型参数.

func (*ParamGetter) GetMessage

func (p *ParamGetter) GetMessage(key string) (Message, bool)

GetMessage 获取一个消息类型参数.

func (*ParamGetter) GetString

func (p *ParamGetter) GetString(key string) (string, bool)

GetString 获取一个字符串类型参数.

type PrivateMessageDeleteNoticeEvent

type PrivateMessageDeleteNoticeEvent struct {
	NoticeEvent
	MessageID string `json:"message_id"` // 消息 ID
	UserID    string `json:"user_id"`    // 消息发送者 ID
}

PrivateMessageDeleteNoticeEvent 表示一个私聊消息删除通知事件.

func MakePrivateMessageDeleteNoticeEvent

func MakePrivateMessageDeleteNoticeEvent(time time.Time, messageID string, userID string) PrivateMessageDeleteNoticeEvent

MakePrivateMessageDeleteNoticeEvent 构造一个私聊消息删除通知事件.

type PrivateMessageEvent

type PrivateMessageEvent struct {
	MessageEvent
	UserID string `json:"user_id"` // 用户 ID
}

PrivateMessageEvent 表示一个私聊消息事件.

func MakePrivateMessageEvent

func MakePrivateMessageEvent(time time.Time, messageID string, message Message, alt_message string, userID string) PrivateMessageEvent

MakePrivateMessageEvent 构造一个私聊消息事件.

type Request

type Request struct {
	Comm   RequestComm // 接收动作请求的通信方式
	Action string      // 动作名称
	Params EasierMap   // 动作参数
	Echo   string      // 动作请求的 echo 字段, 用户未指定时为空字符串
	Self   *Self       // 机器人自身标识, 用户未指定时为 nil
}

Request 表示一个动作请求.

type RequestComm added in v0.4.0

type RequestComm struct {
	Method int         // 通信方式
	Config interface{} // 通信方式配置
}

RequestCommMethod 表示接收动作请求的通信方式.

type RequestEvent

type RequestEvent struct {
	Event
}

RequestEvent 表示一个请求事件.

func MakeRequestEvent

func MakeRequestEvent(time time.Time, detailType string) RequestEvent

MakeRequestEvent 构造一个请求事件.

type Response

type Response struct {
	Status  string      `json:"status"`         // 执行状态 (成功与否)
	RetCode int         `json:"retcode"`        // 返回码
	Data    interface{} `json:"data"`           // 响应数据
	Message string      `json:"message"`        // 错误信息
	Echo    string      `json:"echo,omitempty"` // 动作请求的 echo 字段 (原样返回)
}

Response 表示一个动作响应.

type ResponseWriter

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

ResponseWriter 封装了对 Response 的修改操作.

func (ResponseWriter) WriteData

func (w ResponseWriter) WriteData(data interface{})

WriteData 向 Response 写入成功状态, 并写入返回数据.

func (ResponseWriter) WriteFailed

func (w ResponseWriter) WriteFailed(retCode int, err error)

WriteFailed 向 Response 写入失败状态, 并写入返回码和错误信息.

func (ResponseWriter) WriteOK

func (w ResponseWriter) WriteOK()

WriteOK 向 Response 写入成功状态.

type Segment

type Segment struct {
	Type string    // 消息段类型
	Data EasierMap // 消息段数据
}

Segment 表示一个消息段.

func AudioSegment added in v0.3.1

func AudioSegment(fileID string) Segment

AudioSegment 构造一个音频消息段.

func CustomSegment

func CustomSegment(type_ string, data map[string]interface{}) Segment

CustomSegment 构造一个指定类型的消息段.

func FileSegment

func FileSegment(fileID string) Segment

FileSegment 构造一个文件消息段.

func ImageSegment

func ImageSegment(fileID string) Segment

ImageSegment 构造一个图片消息段.

func LocationSegment

func LocationSegment(latitude float64, longitude float64, title string, content string) Segment

LocationSegment 构造一个位置消息段.

func MentionAllSegment

func MentionAllSegment() Segment

MentionAllSegment 构造一个提及所有人消息段.

func MentionSegment

func MentionSegment(userID string) Segment

MentionSegment 构造一个提及消息段.

func ReplySegment

func ReplySegment(messageID string, userID string) Segment

ReplySegment 构造一个回复消息段.

func TextSegment

func TextSegment(text string) Segment

TextSegment 构造一个纯文本消息段.

func VideoSegment

func VideoSegment(fileID string) Segment

VideoSegment 构造一个视频消息段.

func VoiceSegment

func VoiceSegment(fileID string) Segment

VoiceSegment 构造一个语音消息段.

func (Segment) MarshalJSON

func (s Segment) MarshalJSON() ([]byte, error)

func (Segment) MarshalMsgpack

func (s Segment) MarshalMsgpack() ([]byte, error)

type Self added in v0.7.0

type Self struct {
	Platform string `json:"platform"`                       // 机器人平台名称
	UserID   string `json:"user_id" mapstructure:"user_id"` // 机器人自身 ID
}

Self 用于唯一标识一个机器人账号.

type StatusUpdateMetaEvent added in v0.7.0

type StatusUpdateMetaEvent struct {
	MetaEvent
	Status interface{} `json:"status"` // OneBot 状态, 与 get_status 动作响应数据一致
}

StatusUpdateMetaEvent 表示一个状态更新元事件.

func MakeStatusUpdateMetaEvent added in v0.7.0

func MakeStatusUpdateMetaEvent(time time.Time, status interface{}) StatusUpdateMetaEvent

MakeStatusUpdateMetaEvent 构造一个状态更新元事件.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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