108 lines
2.8 KiB
Go
108 lines
2.8 KiB
Go
|
|
package protocol
|
|||
|
|
|
|||
|
|
// Action 动作接口
|
|||
|
|
// 参考OneBot12协议,定义统一的动作操作接口
|
|||
|
|
type Action interface {
|
|||
|
|
// GetType 获取动作类型
|
|||
|
|
GetType() ActionType
|
|||
|
|
// GetParams 获取动作参数
|
|||
|
|
GetParams() map[string]interface{}
|
|||
|
|
// Execute 执行动作
|
|||
|
|
Execute(ctx interface{}) (map[string]interface{}, error)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ActionType 动作类型
|
|||
|
|
type ActionType string
|
|||
|
|
|
|||
|
|
const (
|
|||
|
|
// 消息相关动作
|
|||
|
|
ActionTypeSendPrivateMessage ActionType = "send_private_message"
|
|||
|
|
ActionTypeSendGroupMessage ActionType = "send_group_message"
|
|||
|
|
ActionTypeDeleteMessage ActionType = "delete_message"
|
|||
|
|
|
|||
|
|
// 用户相关动作
|
|||
|
|
ActionTypeGetUserInfo ActionType = "get_user_info"
|
|||
|
|
ActionTypeGetFriendList ActionType = "get_friend_list"
|
|||
|
|
ActionTypeGetGroupInfo ActionType = "get_group_info"
|
|||
|
|
ActionTypeGetGroupMemberList ActionType = "get_group_member_list"
|
|||
|
|
|
|||
|
|
// 群组相关动作
|
|||
|
|
ActionTypeSetGroupKick ActionType = "set_group_kick"
|
|||
|
|
ActionTypeSetGroupBan ActionType = "set_group_ban"
|
|||
|
|
ActionTypeSetGroupAdmin ActionType = "set_group_admin"
|
|||
|
|
ActionTypeSetGroupWholeBan ActionType = "set_group_whole_ban"
|
|||
|
|
|
|||
|
|
// 其他动作
|
|||
|
|
ActionTypeGetStatus ActionType = "get_status"
|
|||
|
|
ActionTypeGetVersion ActionType = "get_version"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// BaseAction 基础动作结构
|
|||
|
|
type BaseAction struct {
|
|||
|
|
Type ActionType `json:"type"`
|
|||
|
|
Params map[string]interface{} `json:"params"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetType 获取动作类型
|
|||
|
|
func (a *BaseAction) GetType() ActionType {
|
|||
|
|
return a.Type
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetParams 获取动作参数
|
|||
|
|
func (a *BaseAction) GetParams() map[string]interface{} {
|
|||
|
|
return a.Params
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Execute 执行动作(需子类实现)
|
|||
|
|
func (a *BaseAction) Execute(ctx interface{}) (map[string]interface{}, error) {
|
|||
|
|
return nil, ErrNotImplemented
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SendPrivateMessageAction 发送私聊消息动作
|
|||
|
|
type SendPrivateMessageAction struct {
|
|||
|
|
BaseAction
|
|||
|
|
UserID string `json:"user_id"`
|
|||
|
|
Message string `json:"message"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SendGroupMessageAction 发送群聊消息动作
|
|||
|
|
type SendGroupMessageAction struct {
|
|||
|
|
BaseAction
|
|||
|
|
GroupID string `json:"group_id"`
|
|||
|
|
Message string `json:"message"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// DeleteMessageAction 删除消息动作
|
|||
|
|
type DeleteMessageAction struct {
|
|||
|
|
BaseAction
|
|||
|
|
MessageID string `json:"message_id"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetUserInfoAction 获取用户信息动作
|
|||
|
|
type GetUserInfoAction struct {
|
|||
|
|
BaseAction
|
|||
|
|
UserID string `json:"user_id"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetGroupInfoAction 获取群信息动作
|
|||
|
|
type GetGroupInfoAction struct {
|
|||
|
|
BaseAction
|
|||
|
|
GroupID string `json:"group_id"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 错误定义
|
|||
|
|
var (
|
|||
|
|
ErrNotImplemented = &ProtocolError{Code: 10001, Message: "action not implemented"}
|
|||
|
|
ErrInvalidParams = &ProtocolError{Code: 10002, Message: "invalid parameters"}
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// ProtocolError 协议错误
|
|||
|
|
type ProtocolError struct {
|
|||
|
|
Code int `json:"code"`
|
|||
|
|
Message string `json:"message"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func (e *ProtocolError) Error() string {
|
|||
|
|
return e.Message
|
|||
|
|
}
|