From 03ee846b7af31904ab622ee3f2c5049ce0b4e7d9 Mon Sep 17 00:00:00 2001 From: lixiangwuxian Date: Sun, 20 Oct 2024 02:40:02 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84handler=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- auth/auth.go | 6 +++--- auth/model.go | 6 ++++-- constants/auth.go | 11 +++++++---- model/handler.go | 12 ++++++++++++ 4 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 model/handler.go diff --git a/auth/auth.go b/auth/auth.go index daf4b03..c1c4273 100644 --- a/auth/auth.go +++ b/auth/auth.go @@ -1,7 +1,7 @@ package auth import ( - "git.lxtend.com/qqbot/handler" + "git.lxtend.com/qqbot/constants" "git.lxtend.com/qqbot/model" "git.lxtend.com/qqbot/sqlite3" ) @@ -17,7 +17,7 @@ func init() { sqlite3.TryCreateTable(authTableCreateSQL) } -func HasPermission(qqID int64, level int) bool { +func HasPermission(qqID int64, level constants.PermissionLevel) bool { auth, err := getAuth(qqID) if err != nil { return false @@ -25,7 +25,7 @@ func HasPermission(qqID int64, level int) bool { return auth.Role <= level } -func TryExecHandler(msg model.Message, level int, handler handler.Handler) (reply model.Reply) { +func TryExecHandler(msg model.Message, level constants.PermissionLevel, handler model.Handler) (reply model.Reply) { if HasPermission(msg.UserId, level) { return handler(msg) } diff --git a/auth/model.go b/auth/model.go index 192296b..45f13a3 100644 --- a/auth/model.go +++ b/auth/model.go @@ -1,6 +1,8 @@ package auth +import "git.lxtend.com/qqbot/constants" + type Auth struct { - Qqid string `json:"qqid" db:"qqid"` - Role int `json:"role" db:"role"` + Qqid string `json:"qqid" db:"qqid"` + Role constants.PermissionLevel `json:"role" db:"role"` } diff --git a/constants/auth.go b/constants/auth.go index 1cd3eb6..ec2fc23 100644 --- a/constants/auth.go +++ b/constants/auth.go @@ -1,8 +1,11 @@ package constants +type PermissionLevel int + const ( - LEVEL_ROOT = 0 - LEVEL_ADMIN = 10 - LEVEL_USER = 20 //default - LEVEL_BANNED = 100 + LEVEL_ROOT = 0 + LEVEL_ADMIN = 50 + LEVEL_TRUSTED = 100 + LEVEL_USER = 200 //default + LEVEL_BANNED = 400 ) diff --git a/model/handler.go b/model/handler.go new file mode 100644 index 0000000..59a973d --- /dev/null +++ b/model/handler.go @@ -0,0 +1,12 @@ +package model + +import "git.lxtend.com/qqbot/constants" + +type Handler func(msg Message) (reply Reply) +type TryCatchHandler func(msg Message) (reply Reply, catched bool) + +type HandlerInfo[H Handler | TryCatchHandler] struct { + Trigger string + Handler H + Level constants.PermissionLevel +}