Files
cellbot/internal/protocol/action.go

108 lines
2.8 KiB
Go
Raw Normal View History

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
}