manager

package
v0.3.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 20, 2022 License: AGPL-3.0 Imports: 27 Imported by: 4

Documentation

Index

Constants

View Source
const (
	MySQL      = "mysql"
	PostgreSQL = "postgresql"
	SQLite     = "sqlite"
)

Variables

This section is empty.

Functions

func DecodeStaticImage added in v0.3.0

func DecodeStaticImage(name string) (image.Image, error)

DecodeStaticImage 读取并解码静态图片文件

func FlushConfig

func FlushConfig(configPath, configFileName string) error

FlushConfig 从文件中刷新所有插件配置

func GetDB

func GetDB() *gorm.DB

GetDB 获取数据库

func GetStaticFile added in v0.3.0

func GetStaticFile(name string) (fs.File, error)

GetStaticFile 获取指定静态文件

func ReadStaticFile added in v0.3.0

func ReadStaticFile(name string) ([]byte, error)

ReadStaticFile 读取指定静态文件

func SetupDatabase

func SetupDatabase(config DBConfig) error

SetupDatabase 初始化数据库

func WhenConfigFileChange added in v0.2.0

func WhenConfigFileChange(hook ...FileHook)

WhenConfigFileChange 增加配置文件变更时的处理函数

Types

type DBConfig

type DBConfig struct {
	Host   string // 地址
	Port   int    // 端口
	User   string // 用户名
	Passwd string // 密码
	Name   string // 数据库名
	Type   string // 数据库类型
}

DBConfig 数据库设置

type FileHook added in v0.2.0

type FileHook func(event fsnotify.Event) error

type HookMatcher added in v0.3.0

type HookMatcher struct {
	// contains filtered or unexported fields
}

HookMatcher Hook匹配器

func AddPostHook

func AddPostHook(hook PluginHook) *HookMatcher

AddPostHook 添加后置hook

func AddPreHook

func AddPreHook(hook PluginHook) *HookMatcher

AddPreHook 添加前置hook

func (*HookMatcher) SetPriority added in v0.3.0

func (hm *HookMatcher) SetPriority(p int) *HookMatcher

SetPriority 设置Hook的优先级

type PluginCondition

type PluginCondition struct {
	PluginInfo            // 插件信息(由插件提供,只读)
	Key        string     // 插件Key
	NormalCmd  [][]string // 普通用户专用命令
	SuperCmd   [][]string // 超级用户专用命令
	// contains filtered or unexported fields
}

PluginCondition 插件状况结构, Hook类型插件应该只与此结构交互

func GetAllPluginConditions

func GetAllPluginConditions() []*PluginCondition

GetAllPluginConditions 获取所有插件的详细信息

func GetPluginConditionByKey

func GetPluginConditionByKey(key string) *PluginCondition

GetPluginConditionByKey 按Key获取插件的详细信息

func (*PluginCondition) Disabled

func (c *PluginCondition) Disabled()

Disabled 停用插件

func (*PluginCondition) Enabled

func (c *PluginCondition) Enabled()

Enabled 启用插件

func (*PluginCondition) InitialCron

func (c *PluginCondition) InitialCron()

InitialCron 初始化定时器

func (*PluginCondition) StartCron

func (c *PluginCondition) StartCron()

StartCron 开始所有定时任务

func (PluginCondition) Status

func (c PluginCondition) Status() bool

Status 插件全局启用状态

func (*PluginCondition) StopCron

func (c *PluginCondition) StopCron()

StopCron 停止所有定时任务

type PluginHook

type PluginHook func(condition *PluginCondition, ctx *zero.Ctx) error

type PluginInfo

type PluginInfo struct {
	Name        string // Need 插件名称
	Usage       string // Need 插件用法描述
	SuperUsage  string // Option 插件超级用户用法描述
	Classify    string // Option 插件分类,为空时代表默认分类
	IsPassive   bool   // Option 是否为被动插件:在帮助中被标识为被动功能;
	IsSuperOnly bool   // Option 是否为超级用户专属插件:消息性事件会自动加上SuperOnly检查;在帮助中只有超级用户私聊可见;
	AdminLevel  int    // Option 群管理员使用最低级别: 0 表示非群管理员专用插件 >0 表示数字越低,权限要求越高;在帮助中进行标识;配置文件中 插件名.adminlevel 配置项优先级高于此项
}

PluginInfo 插件信息

type PluginManager

type PluginManager struct {
	// contains filtered or unexported fields
}

PluginManager 插件管理器结构

func NewPluginManager

func NewPluginManager() *PluginManager

NewPluginManager 新建插件管理器

func (*PluginManager) AddPostHook

func (manager *PluginManager) AddPostHook(hook PluginHook) *HookMatcher

AddPostHook 添加后置hook

func (*PluginManager) AddPreHook

func (manager *PluginManager) AddPreHook(hook PluginHook) *HookMatcher

AddPreHook 添加前置hook

func (*PluginManager) FlushAllAdminLevelFromConfig added in v0.1.1

func (manager *PluginManager) FlushAllAdminLevelFromConfig()

FlushAllAdminLevelFromConfig 从插件配置文件中刷新所有插件管理员权限等级,配置文件 插件名.adminlevel 配置项优先级高于代码预设info.AdminLevel

func (*PluginManager) FlushConfig

func (manager *PluginManager) FlushConfig(configPath string, configFileName string) error

FlushConfig 从文件中刷新所有插件配置,若文件不存在将会把配置写入该文件

func (*PluginManager) GetAllPluginConditions

func (manager *PluginManager) GetAllPluginConditions() []*PluginCondition

GetAllPluginConditions 获取所有插件的详细信息

func (*PluginManager) GetDB

func (manager *PluginManager) GetDB() *gorm.DB

GetDB 获取数据库

func (*PluginManager) GetLevelDB added in v0.1.0

func (manager *PluginManager) GetLevelDB() *leveldb.DB

GetLevelDB 获取LevelDB: 一个K-V数据库

func (*PluginManager) GetPluginConditionByKey

func (manager *PluginManager) GetPluginConditionByKey(key string) *PluginCondition

GetPluginConditionByKey 按Key获取插件的详细信息

func (*PluginManager) RegisterPlugin

func (manager *PluginManager) RegisterPlugin(info PluginInfo) *PluginProxy

RegisterPlugin 注册一个插件,并返回插件代理,用于添加事件动作、读写配置、获取插件锁、添加定时任务

func (*PluginManager) SetupDatabase

func (manager *PluginManager) SetupDatabase(config DBConfig) error

func (*PluginManager) WhenConfigFileChange added in v0.2.0

func (manager *PluginManager) WhenConfigFileChange(hook ...FileHook)

WhenConfigFileChange 添加配置文件变更时的hook

type PluginProxy

type PluginProxy struct {
	// contains filtered or unexported fields
}

PluginProxy 插件代理,呈现给插件,用于添加事件动作、读写配置、获取插件锁、添加定时任务 插件在注册后,应只与此代理交互,与Manager再无交际

func RegisterPlugin

func RegisterPlugin(info PluginInfo) *PluginProxy

RegisterPlugin 注册一个插件至默认插件管理器,并返回插件代理

func (*PluginProxy) AddAPIConfig added in v0.1.0

func (p *PluginProxy) AddAPIConfig(key string, defaultValue string)

AddAPIConfig 添加API配置(仅限String类型)

func (*PluginProxy) AddConfig

func (p *PluginProxy) AddConfig(key string, defaultValue interface{})

AddConfig 添加配置

func (*PluginProxy) AddSchedule added in v0.2.3

func (p *PluginProxy) AddSchedule(s cron.Schedule, fn func()) (id cron.EntryID, err error)

AddSchedule 添加自定义Schedule的定时任务

func (*PluginProxy) AddScheduleDailyFunc

func (p *PluginProxy) AddScheduleDailyFunc(hour, minute int, fn func()) (id cron.EntryID, err error)

AddScheduleDailyFunc 便携添加定时任务,每天hour:minute时执行

func (*PluginProxy) AddScheduleEveryFunc

func (p *PluginProxy) AddScheduleEveryFunc(duration string, fn func()) (id cron.EntryID, err error)

AddScheduleEveryFunc 便携添加定时任务,固定时间间隔执行,duration符合time.ParseDuration

func (*PluginProxy) AddScheduleFunc

func (p *PluginProxy) AddScheduleFunc(spec string, fn func()) (id cron.EntryID, err error)

AddScheduleFunc 添加定时任务,并自动启动

func (*PluginProxy) AddScheduleOnceFunc

func (p *PluginProxy) AddScheduleOnceFunc(period time.Duration, fn func()) (id cron.EntryID, err error)

AddScheduleOnceFunc 便携添加定时任务,在等待period(period<1年)时长后执行仅一次

func (*PluginProxy) CheckCallLimit added in v0.3.2

func (p *PluginProxy) CheckCallLimit(key string, id int64) bool

CheckCallLimit 检查调用限制,为true表示可以进行一下步操作并会扣除一次调用次数

func (*PluginProxy) DeleteSchedule

func (p *PluginProxy) DeleteSchedule(id cron.EntryID)

DeleteSchedule 删除定时任务

func (*PluginProxy) DoNotNeedOnlyToMe added in v0.1.4

func (p *PluginProxy) DoNotNeedOnlyToMe() bool

DoNotNeedOnlyToMe 是否不需要OnlyToMe

func (*PluginProxy) GetAPIConfig added in v0.1.0

func (p *PluginProxy) GetAPIConfig(key string) string

GetAPIConfig 获取API配置

func (*PluginProxy) GetConfig

func (p *PluginProxy) GetConfig(key string) interface{}

GetConfig 获取配置

func (*PluginProxy) GetConfigBool

func (p *PluginProxy) GetConfigBool(key string) bool

GetConfigBool 获取Bool配置

func (*PluginProxy) GetConfigFloat64

func (p *PluginProxy) GetConfigFloat64(key string) float64

GetConfigFloat64 获取Float64配置

func (*PluginProxy) GetConfigInt64

func (p *PluginProxy) GetConfigInt64(key string) int64

GetConfigInt64 获取Int64配置

func (*PluginProxy) GetConfigString

func (p *PluginProxy) GetConfigString(key string) string

GetConfigString 获取String配置

func (*PluginProxy) GetConfigStrings added in v0.1.0

func (p *PluginProxy) GetConfigStrings(key string) []string

GetConfigStrings 获取[]string配置

func (*PluginProxy) GetDB

func (p *PluginProxy) GetDB() *gorm.DB

GetDB 获取数据库

func (*PluginProxy) GetLevelDB added in v0.1.0

func (p *PluginProxy) GetLevelDB() *leveldb.DB

GetLevelDB 获取LevelDB:一个K-V数据库

func (*PluginProxy) GetPluginConfig

func (p *PluginProxy) GetPluginConfig(plugin string, key string) interface{}

GetPluginConfig 获取其它插件的指定配置

func (*PluginProxy) GetScheduleEntry added in v0.2.3

func (p *PluginProxy) GetScheduleEntry(id cron.EntryID) cron.Entry

GetScheduleEntry 获取指定ID的cron.Entry,可通过entry.Valid()获取有效性、entry.Schedule.Next()获取下一次执行时间

func (*PluginProxy) LockUser

func (p *PluginProxy) LockUser(userID int64) bool

LockUser 对用户上锁,返回能否继续操作,true表示该用户正在被锁定,false表示该用户未被锁定、可以进行下一步操作,同时会对其上锁

func (*PluginProxy) On

func (p *PluginProxy) On(tp string, rules ...zero.Rule) *zero.Matcher

On 添加新的指定消息类型的匹配器 zero.Engine.On的附加处理拷贝

func (*PluginProxy) OnCommands

func (p *PluginProxy) OnCommands(cmd []string, rules ...zero.Rule) *zero.Matcher

OnCommands 添加新的命令匹配器

func (*PluginProxy) OnFullMatch added in v0.1.2

func (p *PluginProxy) OnFullMatch(cmd []string, rules ...zero.Rule) *zero.Matcher

OnFullMatch 添加新的全匹配器

func (*PluginProxy) OnMessage added in v0.1.0

func (p *PluginProxy) OnMessage(rules ...zero.Rule) *zero.Matcher

OnMessage 添加消息事件处理器

func (*PluginProxy) OnNotice

func (p *PluginProxy) OnNotice(rules ...zero.Rule) *zero.Matcher

OnNotice 添加Notice事件处理器

func (*PluginProxy) OnRegex

func (p *PluginProxy) OnRegex(reg string, rules ...zero.Rule) *zero.Matcher

OnRegex 添加新的正则匹配器

func (*PluginProxy) OnRequest

func (p *PluginProxy) OnRequest(rules ...zero.Rule) *zero.Matcher

OnRequest 添加Request事件处理器

func (*PluginProxy) SQLRandomOrder added in v0.1.0

func (p *PluginProxy) SQLRandomOrder(db *gorm.DB) *gorm.DB

SQLRandomOrder SQL查询结果按随机顺序排序

func (*PluginProxy) SetCallLimiter added in v0.3.2

func (p *PluginProxy) SetCallLimiter(key string, interval time.Duration, times int) *pluginCallLimiter

SetCallLimiter 设置调用限制器:功能级、可设置次数、重启后仍有效、耗时长,建议用于天级月级。 每interval时间段内可调用times次,并非令牌桶,起始计时点以truncate进行向前对齐

func (*PluginProxy) UnlockUser

func (p *PluginProxy) UnlockUser(userID int64)

UnlockUser 解锁用户

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL