287 lines
7.3 KiB
Go
Raw Normal View History

2024-11-28 15:20:29 +08:00
package protocol
import (
"ProjectWIND/typed"
"encoding/json"
"errors"
)
/*
关于API的说明
2024-11-28 15:20:29 +08:00
1.所有API请求按照OneBot11标准使用JSON格式进行数据交换api命名为由原文档中蛇形命名法改为双驼峰命名法
2.无响应的API请求使用ws协议处理有响应的API请求使用http协议处理
3.wind会从配置文件中读取API请求的url请确保正确填写
*/
//1.无响应API,使用ws协议处理
2024-11-28 15:20:29 +08:00
func SendMsg(msg typed.MessageEventInfo, message string, autoEscape bool) error {
2024-11-28 15:20:29 +08:00
// 构建发送消息的JSON数据
2024-11-28 19:45:03 +08:00
var messageData typed.APIRequestInfo
messageType := msg.MessageType
2024-11-28 15:20:29 +08:00
messageData.Action = "send_msg"
switch messageType {
case "private":
{
messageData.Params.UserId = msg.UserId
break
}
2024-11-28 15:20:29 +08:00
case "group":
{
messageData.Params.GroupId = msg.GroupId
break
}
2024-11-28 15:20:29 +08:00
default:
{
return errors.New("invalid type")
}
}
messageData.Params.Message = message
messageData.Params.AutoEscape = autoEscape
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
// 发送消息
err = wsAPI(messageJson)
return err
}
func SendPrivateMsg(msg typed.MessageEventInfo, message string, autoEscape bool) error {
// 构建发送消息的JSON数据
var messageData typed.APIRequestInfo
messageData.Action = "send_private_msg"
messageData.Params.UserId = msg.UserId
messageData.Params.Message = message
messageData.Params.AutoEscape = autoEscape
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
2024-11-28 15:20:29 +08:00
}
// 发送消息
err = wsAPI(messageJson)
return err
}
func SendGroupMsg(msg typed.MessageEventInfo, message string, autoEscape bool) error {
// 构建发送消息的JSON数据
var messageData typed.APIRequestInfo
messageData.Action = "send_group_msg"
messageData.Params.GroupId = msg.GroupId
2024-11-28 15:20:29 +08:00
messageData.Params.Message = message
messageData.Params.AutoEscape = autoEscape
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
2024-11-28 15:20:29 +08:00
}
// 发送消息
err = wsAPI(messageJson)
return err
}
func DeleteMsg(msg typed.MessageEventInfo, msgId int64) error {
// 构建删除消息的JSON数据
var messageData typed.APIRequestInfo
messageData.Action = "delete_msg"
messageData.Params.MessageId = msg.MessageId
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
err = wsAPI(messageJson)
return err
}
func sendLike(userId int64, times int) error {
// 构建发送赞的JSON数据
var messageData typed.APIRequestInfo
messageData.Action = "send_like"
messageData.Params.UserId = userId
messageData.Params.Times = times
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
err = wsAPI(messageJson)
return nil
}
func setGroupKick(groupId int64, userId int64, rejectAddRequest bool) error {
var messageData typed.APIRequestInfo
messageData.Action = "set_group_kick"
messageData.Params.GroupId = groupId
messageData.Params.UserId = userId
messageData.Params.RejectAddRequest = rejectAddRequest
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
err = wsAPI(messageJson)
return nil
}
func setGroupBan(groupId int64, userId int64, duration int32) error {
var messageData typed.APIRequestInfo
messageData.Action = "set_group_ban"
messageData.Params.GroupId = groupId
messageData.Params.UserId = userId
messageData.Params.Duration = duration
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
err = wsAPI(messageJson)
return nil
}
func setGroupAnonymousBan(groupId int64, flag string, duration int32) error {
var messageData typed.APIRequestInfo
messageData.Action = "set_group_anonymous_ban"
messageData.Params.GroupId = groupId
messageData.Params.Flag = flag
messageData.Params.Duration = duration
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
err = wsAPI(messageJson)
return nil
}
func setGroupWholeBan(groupId int64, enable bool) error {
var messageData typed.APIRequestInfo
messageData.Action = "set_group_whole_ban"
messageData.Params.GroupId = groupId
messageData.Params.Enable = enable
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
err = wsAPI(messageJson)
return nil
}
func setGroupAdmin(groupId int64, userId int64, enable bool) error {
var messageData typed.APIRequestInfo
messageData.Action = "set_group_admin"
messageData.Params.GroupId = groupId
messageData.Params.UserId = userId
messageData.Params.Enable = enable
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
err = wsAPI(messageJson)
return nil
}
func setGroupAnonymous(groupId int64, enable bool) error {
var messageData typed.APIRequestInfo
messageData.Action = "set_group_anonymous"
messageData.Params.GroupId = groupId
messageData.Params.Enable = enable
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
err = wsAPI(messageJson)
return nil
}
func setGroupCard(groupId int64, userId int64, card string) error {
var messageData typed.APIRequestInfo
messageData.Action = "set_group_card"
messageData.Params.GroupId = groupId
messageData.Params.UserId = userId
messageData.Params.Card = card
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
err = wsAPI(messageJson)
return nil
}
func setGroupName(groupId int64, groupName string) error {
var messageData typed.APIRequestInfo
messageData.Action = "set_group_name"
messageData.Params.GroupId = groupId
messageData.Params.GroupName = groupName
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
err = wsAPI(messageJson)
return nil
}
func setGroupLeave(groupId int64, isDismiss bool) error {
var messageData typed.APIRequestInfo
messageData.Action = "set_group_leave"
messageData.Params.GroupId = groupId
messageData.Params.IsDismiss = isDismiss
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
err = wsAPI(messageJson)
return nil
}
func setGroupSpecialTitle(groupId int64, userId int64, specialTitle string, duration int32) error {
var messageData typed.APIRequestInfo
messageData.Action = "set_group_special_title"
messageData.Params.GroupId = groupId
messageData.Params.UserId = userId
messageData.Params.SpecialTitle = specialTitle
messageData.Params.Duration = duration
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
err = wsAPI(messageJson)
return nil
}
func setFriendAddRequest(flag string, approve bool, remark string) error {
var messageData typed.APIRequestInfo
messageData.Action = "set_friend_add_request"
messageData.Params.Flag = flag
messageData.Params.Approve = approve
messageData.Params.Remark = remark
messageJson, err := json.Marshal(messageData)
if err != nil {
return err
}
err = wsAPI(messageJson)
return nil
}
// 2.有响应API使用http协议处理
func GetMsg(messageId int32) (typed.MessageEventInfo, error) {
// 构建获取消息的JSON数据
var requestData typed.ParamsInfo
var msg typed.MessageEventInfo
action := "get_msg"
requestData.MessageId = messageId
body, err := json.Marshal(requestData)
if err != nil {
return typed.MessageEventInfo{}, err
}
// 发送请求
_, response, err := httpAPI("POST", action, body)
if err != nil {
return typed.MessageEventInfo{}, err
}
// 解析响应
err = json.Unmarshal(response, &msg)
2024-11-28 15:20:29 +08:00
if err != nil {
return typed.MessageEventInfo{}, err
2024-11-28 15:20:29 +08:00
}
return msg, nil
2024-11-28 15:20:29 +08:00
}