306 lines
9.3 KiB
Go
306 lines
9.3 KiB
Go
|
|
package onebot11
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"cellbot/internal/protocol"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// OneBot11 API动作常量
|
|||
|
|
const (
|
|||
|
|
ActionSendPrivateMsg = "send_private_msg"
|
|||
|
|
ActionSendGroupMsg = "send_group_msg"
|
|||
|
|
ActionSendMsg = "send_msg"
|
|||
|
|
ActionDeleteMsg = "delete_msg"
|
|||
|
|
ActionGetMsg = "get_msg"
|
|||
|
|
ActionGetForwardMsg = "get_forward_msg"
|
|||
|
|
ActionSendLike = "send_like"
|
|||
|
|
ActionSetGroupKick = "set_group_kick"
|
|||
|
|
ActionSetGroupBan = "set_group_ban"
|
|||
|
|
ActionSetGroupAnonymousBan = "set_group_anonymous_ban"
|
|||
|
|
ActionSetGroupWholeBan = "set_group_whole_ban"
|
|||
|
|
ActionSetGroupAdmin = "set_group_admin"
|
|||
|
|
ActionSetGroupAnonymous = "set_group_anonymous"
|
|||
|
|
ActionSetGroupCard = "set_group_card"
|
|||
|
|
ActionSetGroupName = "set_group_name"
|
|||
|
|
ActionSetGroupLeave = "set_group_leave"
|
|||
|
|
ActionSetGroupSpecialTitle = "set_group_special_title"
|
|||
|
|
ActionSetFriendAddRequest = "set_friend_add_request"
|
|||
|
|
ActionSetGroupAddRequest = "set_group_add_request"
|
|||
|
|
ActionGetLoginInfo = "get_login_info"
|
|||
|
|
ActionGetStrangerInfo = "get_stranger_info"
|
|||
|
|
ActionGetFriendList = "get_friend_list"
|
|||
|
|
ActionGetGroupInfo = "get_group_info"
|
|||
|
|
ActionGetGroupList = "get_group_list"
|
|||
|
|
ActionGetGroupMemberInfo = "get_group_member_info"
|
|||
|
|
ActionGetGroupMemberList = "get_group_member_list"
|
|||
|
|
ActionGetGroupHonorInfo = "get_group_honor_info"
|
|||
|
|
ActionGetCookies = "get_cookies"
|
|||
|
|
ActionGetCsrfToken = "get_csrf_token"
|
|||
|
|
ActionGetCredentials = "get_credentials"
|
|||
|
|
ActionGetRecord = "get_record"
|
|||
|
|
ActionGetImage = "get_image"
|
|||
|
|
ActionCanSendImage = "can_send_image"
|
|||
|
|
ActionCanSendRecord = "can_send_record"
|
|||
|
|
ActionGetStatus = "get_status"
|
|||
|
|
ActionGetVersionInfo = "get_version_info"
|
|||
|
|
ActionSetRestart = "set_restart"
|
|||
|
|
ActionCleanCache = "clean_cache"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// ConvertAction 将通用Action转换为OneBot11 Action
|
|||
|
|
func ConvertAction(action protocol.Action) string {
|
|||
|
|
switch action.GetType() {
|
|||
|
|
case protocol.ActionTypeSendPrivateMessage:
|
|||
|
|
return ActionSendPrivateMsg
|
|||
|
|
case protocol.ActionTypeSendGroupMessage:
|
|||
|
|
return ActionSendGroupMsg
|
|||
|
|
case protocol.ActionTypeDeleteMessage:
|
|||
|
|
return ActionDeleteMsg
|
|||
|
|
case protocol.ActionTypeGetUserInfo:
|
|||
|
|
return ActionGetStrangerInfo
|
|||
|
|
case protocol.ActionTypeGetFriendList:
|
|||
|
|
return ActionGetFriendList
|
|||
|
|
case protocol.ActionTypeGetGroupInfo:
|
|||
|
|
return ActionGetGroupInfo
|
|||
|
|
case protocol.ActionTypeGetGroupMemberList:
|
|||
|
|
return ActionGetGroupMemberList
|
|||
|
|
case protocol.ActionTypeSetGroupKick:
|
|||
|
|
return ActionSetGroupKick
|
|||
|
|
case protocol.ActionTypeSetGroupBan:
|
|||
|
|
return ActionSetGroupBan
|
|||
|
|
case protocol.ActionTypeSetGroupAdmin:
|
|||
|
|
return ActionSetGroupAdmin
|
|||
|
|
case protocol.ActionTypeSetGroupWholeBan:
|
|||
|
|
return ActionSetGroupWholeBan
|
|||
|
|
case protocol.ActionTypeGetStatus:
|
|||
|
|
return ActionGetStatus
|
|||
|
|
case protocol.ActionTypeGetVersion:
|
|||
|
|
return ActionGetVersionInfo
|
|||
|
|
default:
|
|||
|
|
return string(action.GetType())
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SendPrivateMessageAction 发送私聊消息动作
|
|||
|
|
type SendPrivateMessageAction struct {
|
|||
|
|
UserID int64 `json:"user_id"`
|
|||
|
|
Message interface{} `json:"message"`
|
|||
|
|
AutoEscape bool `json:"auto_escape,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SendGroupMessageAction 发送群消息动作
|
|||
|
|
type SendGroupMessageAction struct {
|
|||
|
|
GroupID int64 `json:"group_id"`
|
|||
|
|
Message interface{} `json:"message"`
|
|||
|
|
AutoEscape bool `json:"auto_escape,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// DeleteMessageAction 撤回消息动作
|
|||
|
|
type DeleteMessageAction struct {
|
|||
|
|
MessageID int32 `json:"message_id"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetMessageAction 获取消息动作
|
|||
|
|
type GetMessageAction struct {
|
|||
|
|
MessageID int32 `json:"message_id"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SendLikeAction 发送好友赞动作
|
|||
|
|
type SendLikeAction struct {
|
|||
|
|
UserID int64 `json:"user_id"`
|
|||
|
|
Times int `json:"times,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SetGroupKickAction 群组踢人动作
|
|||
|
|
type SetGroupKickAction struct {
|
|||
|
|
GroupID int64 `json:"group_id"`
|
|||
|
|
UserID int64 `json:"user_id"`
|
|||
|
|
RejectAddRequest bool `json:"reject_add_request,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SetGroupBanAction 群组禁言动作
|
|||
|
|
type SetGroupBanAction struct {
|
|||
|
|
GroupID int64 `json:"group_id"`
|
|||
|
|
UserID int64 `json:"user_id"`
|
|||
|
|
Duration int64 `json:"duration,omitempty"` // 禁言时长,单位秒,0表示取消禁言
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SetGroupWholeBanAction 群组全员禁言动作
|
|||
|
|
type SetGroupWholeBanAction struct {
|
|||
|
|
GroupID int64 `json:"group_id"`
|
|||
|
|
Enable bool `json:"enable,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SetGroupAdminAction 设置群管理员动作
|
|||
|
|
type SetGroupAdminAction struct {
|
|||
|
|
GroupID int64 `json:"group_id"`
|
|||
|
|
UserID int64 `json:"user_id"`
|
|||
|
|
Enable bool `json:"enable,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SetGroupCardAction 设置群名片动作
|
|||
|
|
type SetGroupCardAction struct {
|
|||
|
|
GroupID int64 `json:"group_id"`
|
|||
|
|
UserID int64 `json:"user_id"`
|
|||
|
|
Card string `json:"card,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SetGroupNameAction 设置群名动作
|
|||
|
|
type SetGroupNameAction struct {
|
|||
|
|
GroupID int64 `json:"group_id"`
|
|||
|
|
GroupName string `json:"group_name"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SetGroupLeaveAction 退出群组动作
|
|||
|
|
type SetGroupLeaveAction struct {
|
|||
|
|
GroupID int64 `json:"group_id"`
|
|||
|
|
IsDismiss bool `json:"is_dismiss,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SetFriendAddRequestAction 处理加好友请求动作
|
|||
|
|
type SetFriendAddRequestAction struct {
|
|||
|
|
Flag string `json:"flag"`
|
|||
|
|
Approve bool `json:"approve,omitempty"`
|
|||
|
|
Remark string `json:"remark,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SetGroupAddRequestAction 处理加群请求动作
|
|||
|
|
type SetGroupAddRequestAction struct {
|
|||
|
|
Flag string `json:"flag"`
|
|||
|
|
SubType string `json:"sub_type,omitempty"` // add 或 invite
|
|||
|
|
Approve bool `json:"approve,omitempty"`
|
|||
|
|
Reason string `json:"reason,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetStrangerInfoAction 获取陌生人信息动作
|
|||
|
|
type GetStrangerInfoAction struct {
|
|||
|
|
UserID int64 `json:"user_id"`
|
|||
|
|
NoCache bool `json:"no_cache,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetGroupInfoAction 获取群信息动作
|
|||
|
|
type GetGroupInfoAction struct {
|
|||
|
|
GroupID int64 `json:"group_id"`
|
|||
|
|
NoCache bool `json:"no_cache,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetGroupMemberInfoAction 获取群成员信息动作
|
|||
|
|
type GetGroupMemberInfoAction struct {
|
|||
|
|
GroupID int64 `json:"group_id"`
|
|||
|
|
UserID int64 `json:"user_id"`
|
|||
|
|
NoCache bool `json:"no_cache,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetGroupMemberListAction 获取群成员列表动作
|
|||
|
|
type GetGroupMemberListAction struct {
|
|||
|
|
GroupID int64 `json:"group_id"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetGroupHonorInfoAction 获取群荣誉信息动作
|
|||
|
|
type GetGroupHonorInfoAction struct {
|
|||
|
|
GroupID int64 `json:"group_id"`
|
|||
|
|
Type string `json:"type"` // talkative, performer, legend, strong_newbie, emotion, all
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetCookiesAction 获取Cookies动作
|
|||
|
|
type GetCookiesAction struct {
|
|||
|
|
Domain string `json:"domain,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetRecordAction 获取语音动作
|
|||
|
|
type GetRecordAction struct {
|
|||
|
|
File string `json:"file"`
|
|||
|
|
OutFormat string `json:"out_format"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetImageAction 获取图片动作
|
|||
|
|
type GetImageAction struct {
|
|||
|
|
File string `json:"file"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SetRestartAction 重启OneBot实现动作
|
|||
|
|
type SetRestartAction struct {
|
|||
|
|
Delay int `json:"delay,omitempty"` // 延迟毫秒数
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ActionResponse API响应
|
|||
|
|
type ActionResponse struct {
|
|||
|
|
Status string `json:"status"`
|
|||
|
|
RetCode int `json:"retcode"`
|
|||
|
|
Data map[string]interface{} `json:"data,omitempty"`
|
|||
|
|
Echo string `json:"echo,omitempty"`
|
|||
|
|
Message string `json:"message,omitempty"`
|
|||
|
|
Wording string `json:"wording,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 响应状态码常量
|
|||
|
|
const (
|
|||
|
|
RetCodeOK = 0
|
|||
|
|
RetCodeAsyncStarted = 1 // 异步操作已开始
|
|||
|
|
RetCodeBadRequest = 1400 // 请求格式错误
|
|||
|
|
RetCodeUnauthorized = 1401 // 未授权
|
|||
|
|
RetCodeForbidden = 1403 // 禁止访问
|
|||
|
|
RetCodeNotFound = 1404 // 接口不存在
|
|||
|
|
RetCodeMethodNotAllowed = 1405 // 请求方法不支持
|
|||
|
|
RetCodeInternalError = 1500 // 内部错误
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// BuildActionRequest 构建动作请求
|
|||
|
|
func BuildActionRequest(action string, params map[string]interface{}, echo string) *OB11Action {
|
|||
|
|
return &OB11Action{
|
|||
|
|
Action: action,
|
|||
|
|
Params: params,
|
|||
|
|
Echo: echo,
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// BuildSendPrivateMsg 构建发送私聊消息请求
|
|||
|
|
func BuildSendPrivateMsg(userID int64, message interface{}, autoEscape bool) map[string]interface{} {
|
|||
|
|
return map[string]interface{}{
|
|||
|
|
"user_id": userID,
|
|||
|
|
"message": message,
|
|||
|
|
"auto_escape": autoEscape,
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// BuildSendGroupMsg 构建发送群消息请求
|
|||
|
|
func BuildSendGroupMsg(groupID int64, message interface{}, autoEscape bool) map[string]interface{} {
|
|||
|
|
return map[string]interface{}{
|
|||
|
|
"group_id": groupID,
|
|||
|
|
"message": message,
|
|||
|
|
"auto_escape": autoEscape,
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// BuildDeleteMsg 构建撤回消息请求
|
|||
|
|
func BuildDeleteMsg(messageID int32) map[string]interface{} {
|
|||
|
|
return map[string]interface{}{
|
|||
|
|
"message_id": messageID,
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// BuildSetGroupBan 构建群组禁言请求
|
|||
|
|
func BuildSetGroupBan(groupID, userID int64, duration int64) map[string]interface{} {
|
|||
|
|
return map[string]interface{}{
|
|||
|
|
"group_id": groupID,
|
|||
|
|
"user_id": userID,
|
|||
|
|
"duration": duration,
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// BuildSetGroupKick 构建群组踢人请求
|
|||
|
|
func BuildSetGroupKick(groupID, userID int64, rejectAddRequest bool) map[string]interface{} {
|
|||
|
|
return map[string]interface{}{
|
|||
|
|
"group_id": groupID,
|
|||
|
|
"user_id": userID,
|
|||
|
|
"reject_add_request": rejectAddRequest,
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// BuildSetGroupCard 构建设置群名片请求
|
|||
|
|
func BuildSetGroupCard(groupID, userID int64, card string) map[string]interface{} {
|
|||
|
|
return map[string]interface{}{
|
|||
|
|
"group_id": groupID,
|
|||
|
|
"user_id": userID,
|
|||
|
|
"card": card,
|
|||
|
|
}
|
|||
|
|
}
|