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
|
||
}
|