mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-19 22:00:11 +08:00
webui功能添加 (#75)
* feat: webui添加功能 为webui添加处理request的请求 包括好友添加请求,群邀请请求,群申请加入请求 * feat: webui添加功能 为webui添加手动处理request的请求的功能 包括好友添加请求,群邀请请求,群申请加入请求 * fix: 修改request对象为指针存储
This commit is contained in:
parent
206889bdc5
commit
a537306307
@ -1,3 +1,7 @@
|
|||||||
|
// Package webctrl
|
||||||
|
/*
|
||||||
|
* 一个用户webui的包,里面包含了webui所需的所有内容
|
||||||
|
*/
|
||||||
package webctrl
|
package webctrl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -7,6 +11,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"sync"
|
||||||
|
|
||||||
manager "github.com/FloatTech/bot-manager"
|
manager "github.com/FloatTech/bot-manager"
|
||||||
// 依赖gin监听server
|
// 依赖gin监听server
|
||||||
@ -28,6 +33,8 @@ var (
|
|||||||
logConn *websocket.Conn
|
logConn *websocket.Conn
|
||||||
|
|
||||||
l logWriter
|
l logWriter
|
||||||
|
// 存储请求事件,flag作为键,一个request对象作为值
|
||||||
|
requestData sync.Map
|
||||||
)
|
)
|
||||||
|
|
||||||
// logWriter
|
// logWriter
|
||||||
@ -36,6 +43,20 @@ var (
|
|||||||
type logWriter struct {
|
type logWriter struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// request
|
||||||
|
// @Description: 一个请求事件的结构体
|
||||||
|
//
|
||||||
|
type request struct {
|
||||||
|
RequestType string `json:"request_type"`
|
||||||
|
SubType string `json:"sub_type"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
Comment string `json:"comment"`
|
||||||
|
GroupID int64 `json:"group_id"`
|
||||||
|
UserID int64 `json:"user_id"`
|
||||||
|
Flag string `json:"flag"`
|
||||||
|
SelfID int64 `json:"self_id"`
|
||||||
|
}
|
||||||
|
|
||||||
// InitGui 初始化gui
|
// InitGui 初始化gui
|
||||||
func InitGui() {
|
func InitGui() {
|
||||||
// 将日志重定向到前端hook
|
// 将日志重定向到前端hook
|
||||||
@ -94,6 +115,10 @@ func controller() {
|
|||||||
})
|
})
|
||||||
context.JSON(200, datas)
|
context.JSON(200, datas)
|
||||||
})
|
})
|
||||||
|
// 获取所有请求
|
||||||
|
engine.POST("/get_requests", getRequests)
|
||||||
|
// 执行一个请求事件
|
||||||
|
engine.POST("handle_request", handelRequest)
|
||||||
// 链接日志
|
// 链接日志
|
||||||
engine.GET("/get_log", getLogs)
|
engine.GET("/get_log", getLogs)
|
||||||
// 获取前端标签
|
// 获取前端标签
|
||||||
@ -111,6 +136,41 @@ func controller() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// handelRequest
|
||||||
|
/**
|
||||||
|
* @Description: 处理一个请求
|
||||||
|
* @param context
|
||||||
|
*/
|
||||||
|
func handelRequest(context *gin.Context) {
|
||||||
|
var data map[string]interface{}
|
||||||
|
err := context.BindJSON(&data)
|
||||||
|
if err != nil {
|
||||||
|
context.JSON(404, nil)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
r, ok := requestData.LoadAndDelete(data["flag"].(string))
|
||||||
|
if !ok {
|
||||||
|
context.JSON(404, "flag not found")
|
||||||
|
}
|
||||||
|
r2 := r.(*request)
|
||||||
|
r2.handle(data["approve"].(bool), data["reason"].(string))
|
||||||
|
context.JSON(200, "操作成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
// getRequests
|
||||||
|
/**
|
||||||
|
* @Description: 获取所有的请求
|
||||||
|
* @param context
|
||||||
|
*/
|
||||||
|
func getRequests(context *gin.Context) {
|
||||||
|
var data []interface{}
|
||||||
|
requestData.Range(func(key, value interface{}) bool {
|
||||||
|
data = append(data, value)
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
context.JSON(200, data)
|
||||||
|
}
|
||||||
|
|
||||||
// updateAllPluginStatus
|
// updateAllPluginStatus
|
||||||
/**
|
/**
|
||||||
* @Description: 改变所有插件的状态
|
* @Description: 改变所有插件的状态
|
||||||
@ -367,6 +427,31 @@ func messageHandle() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
// 直接注册一个request请求监听器,优先级设置为最高,设置不阻断事件传播
|
||||||
|
zero.OnRequest(func(ctx *zero.Ctx) bool {
|
||||||
|
if ctx.Event.RequestType == "friend" {
|
||||||
|
ctx.State["type_name"] = "好友添加"
|
||||||
|
} else {
|
||||||
|
if ctx.Event.SubType == "add" {
|
||||||
|
ctx.State["type_name"] = "加群请求"
|
||||||
|
} else {
|
||||||
|
ctx.State["type_name"] = "群邀请"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}).SetBlock(false).FirstPriority().Handle(func(ctx *zero.Ctx) {
|
||||||
|
r := &request{
|
||||||
|
RequestType: ctx.Event.RequestType,
|
||||||
|
SubType: ctx.Event.SubType,
|
||||||
|
Type: ctx.State["type_name"].(string),
|
||||||
|
GroupID: ctx.Event.GroupID,
|
||||||
|
UserID: ctx.Event.UserID,
|
||||||
|
Flag: ctx.Event.Flag,
|
||||||
|
Comment: ctx.Event.Comment,
|
||||||
|
SelfID: ctx.Event.SelfID,
|
||||||
|
}
|
||||||
|
requestData.Store(ctx.Event.Flag, r)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// upgrade
|
// upgrade
|
||||||
@ -451,6 +536,23 @@ func cors() gin.HandlerFunc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// handle
|
||||||
|
/**
|
||||||
|
* @Description: 提交一个请求
|
||||||
|
* @receiver r
|
||||||
|
* @param approve 是否通过
|
||||||
|
* @param reason 拒绝的理由
|
||||||
|
*/
|
||||||
|
func (r *request) handle(approve bool, reason string) {
|
||||||
|
bot := zero.GetBot(r.SelfID)
|
||||||
|
if r.RequestType == "friend" {
|
||||||
|
bot.SetFriendAddRequest(r.Flag, approve, "")
|
||||||
|
} else {
|
||||||
|
bot.SetGroupAddRequest(r.Flag, r.SubType, approve, reason)
|
||||||
|
}
|
||||||
|
log.Debugln("[gui] ", "已处理", r.UserID, "的"+r.Type)
|
||||||
|
}
|
||||||
|
|
||||||
func (l logWriter) Write(p []byte) (n int, err error) {
|
func (l logWriter) Write(p []byte) (n int, err error) {
|
||||||
if logConn != nil {
|
if logConn != nil {
|
||||||
err := logConn.WriteMessage(websocket.TextMessage, p)
|
err := logConn.WriteMessage(websocket.TextMessage, p)
|
||||||
|
|||||||
2
go.mod
2
go.mod
@ -5,7 +5,7 @@ go 1.16
|
|||||||
require (
|
require (
|
||||||
github.com/FloatTech/AnimeAPI v1.1.10
|
github.com/FloatTech/AnimeAPI v1.1.10
|
||||||
github.com/FloatTech/ZeroBot-Plugin-Gif v0.2.4
|
github.com/FloatTech/ZeroBot-Plugin-Gif v0.2.4
|
||||||
github.com/FloatTech/bot-manager v1.0.0
|
github.com/FloatTech/bot-manager v1.0.1-0.20211112011524-85b9895271ed
|
||||||
github.com/fogleman/gg v1.3.0
|
github.com/fogleman/gg v1.3.0
|
||||||
github.com/fumiama/cron v1.3.0
|
github.com/fumiama/cron v1.3.0
|
||||||
github.com/fumiama/go-base16384 v1.2.1
|
github.com/fumiama/go-base16384 v1.2.1
|
||||||
|
|||||||
2
go.sum
2
go.sum
@ -7,6 +7,8 @@ github.com/FloatTech/ZeroBot-Plugin-Gif v0.2.4/go.mod h1:W7ag6hml1pZTNzRXKU74OMr
|
|||||||
github.com/FloatTech/ZeroBot-Plugin-Timer v1.4.3/go.mod h1:MVOQQ4e6AVGFm993blXXU4Sd6bAsLY2+Zb+/HMrEeEc=
|
github.com/FloatTech/ZeroBot-Plugin-Timer v1.4.3/go.mod h1:MVOQQ4e6AVGFm993blXXU4Sd6bAsLY2+Zb+/HMrEeEc=
|
||||||
github.com/FloatTech/bot-manager v1.0.0 h1:d63J5htLhVBc2ITG09WBJI+qAB0ubPjYhfXl6hljBNk=
|
github.com/FloatTech/bot-manager v1.0.0 h1:d63J5htLhVBc2ITG09WBJI+qAB0ubPjYhfXl6hljBNk=
|
||||||
github.com/FloatTech/bot-manager v1.0.0/go.mod h1:8YYRJ16oroGHQGD2En0oVnmcKJkxR9O/jd5BPSfWfOQ=
|
github.com/FloatTech/bot-manager v1.0.0/go.mod h1:8YYRJ16oroGHQGD2En0oVnmcKJkxR9O/jd5BPSfWfOQ=
|
||||||
|
github.com/FloatTech/bot-manager v1.0.1-0.20211112011524-85b9895271ed h1:GEOgDVbvaxXqZxgWE/y5JOlbMXrmq7n0M+m9g3md2To=
|
||||||
|
github.com/FloatTech/bot-manager v1.0.1-0.20211112011524-85b9895271ed/go.mod h1:8YYRJ16oroGHQGD2En0oVnmcKJkxR9O/jd5BPSfWfOQ=
|
||||||
github.com/FloatTech/imgfactory v0.1.1 h1:ooL2+fV8yrMhv1ShGGKsN0Rm/flWoKnvqXaUD+dC3DQ=
|
github.com/FloatTech/imgfactory v0.1.1 h1:ooL2+fV8yrMhv1ShGGKsN0Rm/flWoKnvqXaUD+dC3DQ=
|
||||||
github.com/FloatTech/imgfactory v0.1.1/go.mod h1:ThDALab8aOuU6KVYESVWFqmjcqtm03e0SvGlTw6s+aw=
|
github.com/FloatTech/imgfactory v0.1.1/go.mod h1:ThDALab8aOuU6KVYESVWFqmjcqtm03e0SvGlTw6s+aw=
|
||||||
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
|
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user