Documentation ¶
Index ¶
- Constants
- func DecodeStaticImage(name string) (image.Image, error)
- func FlushConfig(configPath, configFileName string) error
- func GetDB() *gorm.DB
- func GetStaticFile(name string) (fs.File, error)
- func ReadStaticFile(name string) ([]byte, error)
- func SetupDatabase(config DBConfig) error
- func WhenConfigFileChange(hook ...FileHook)
- type DBConfig
- type FileHook
- type HookMatcher
- type PluginCondition
- type PluginHook
- type PluginInfo
- type PluginManager
- func (manager *PluginManager) AddPostHook(hook PluginHook) *HookMatcher
- func (manager *PluginManager) AddPreHook(hook PluginHook) *HookMatcher
- func (manager *PluginManager) FlushAllAdminLevelFromConfig()
- func (manager *PluginManager) FlushConfig(configPath string, configFileName string) error
- func (manager *PluginManager) GetAllPluginConditions() []*PluginCondition
- func (manager *PluginManager) GetDB() *gorm.DB
- func (manager *PluginManager) GetLevelDB() *leveldb.DB
- func (manager *PluginManager) GetPluginConditionByKey(key string) *PluginCondition
- func (manager *PluginManager) RegisterPlugin(info PluginInfo) *PluginProxy
- func (manager *PluginManager) SetupDatabase(config DBConfig) error
- func (manager *PluginManager) WhenConfigFileChange(hook ...FileHook)
- type PluginProxy
- func (p *PluginProxy) AddAPIConfig(key string, defaultValue string)
- func (p *PluginProxy) AddConfig(key string, defaultValue interface{})
- func (p *PluginProxy) AddSchedule(s cron.Schedule, fn func()) (id cron.EntryID, err error)
- func (p *PluginProxy) AddScheduleDailyFunc(hour, minute int, fn func()) (id cron.EntryID, err error)
- func (p *PluginProxy) AddScheduleEveryFunc(duration string, fn func()) (id cron.EntryID, err error)
- func (p *PluginProxy) AddScheduleFunc(spec string, fn func()) (id cron.EntryID, err error)
- func (p *PluginProxy) AddScheduleOnceFunc(period time.Duration, fn func()) (id cron.EntryID, err error)
- func (p *PluginProxy) CheckCallLimit(key string, id int64) bool
- func (p *PluginProxy) DeleteSchedule(id cron.EntryID)
- func (p *PluginProxy) DoNotNeedOnlyToMe() bool
- func (p *PluginProxy) GetAPIConfig(key string) string
- func (p *PluginProxy) GetConfig(key string) interface{}
- func (p *PluginProxy) GetConfigBool(key string) bool
- func (p *PluginProxy) GetConfigFloat64(key string) float64
- func (p *PluginProxy) GetConfigInt64(key string) int64
- func (p *PluginProxy) GetConfigString(key string) string
- func (p *PluginProxy) GetConfigStrings(key string) []string
- func (p *PluginProxy) GetDB() *gorm.DB
- func (p *PluginProxy) GetLevelDB() *leveldb.DB
- func (p *PluginProxy) GetPluginConfig(plugin string, key string) interface{}
- func (p *PluginProxy) GetScheduleEntry(id cron.EntryID) cron.Entry
- func (p *PluginProxy) LockUser(userID int64) bool
- func (p *PluginProxy) On(tp string, rules ...zero.Rule) *zero.Matcher
- func (p *PluginProxy) OnCommands(cmd []string, rules ...zero.Rule) *zero.Matcher
- func (p *PluginProxy) OnFullMatch(cmd []string, rules ...zero.Rule) *zero.Matcher
- func (p *PluginProxy) OnMessage(rules ...zero.Rule) *zero.Matcher
- func (p *PluginProxy) OnNotice(rules ...zero.Rule) *zero.Matcher
- func (p *PluginProxy) OnRegex(reg string, rules ...zero.Rule) *zero.Matcher
- func (p *PluginProxy) OnRequest(rules ...zero.Rule) *zero.Matcher
- func (p *PluginProxy) SQLRandomOrder(db *gorm.DB) *gorm.DB
- func (p *PluginProxy) SetCallLimiter(key string, interval time.Duration, times int) *pluginCallLimiter
- func (p *PluginProxy) UnlockUser(userID int64)
Constants ¶
const ( MySQL = "mysql" PostgreSQL = "postgresql" SQLite = "sqlite" )
Variables ¶
This section is empty.
Functions ¶
func DecodeStaticImage ¶ added in v0.3.0
DecodeStaticImage 读取并解码静态图片文件
func FlushConfig ¶
FlushConfig 从文件中刷新所有插件配置
func GetStaticFile ¶ added in v0.3.0
GetStaticFile 获取指定静态文件
func ReadStaticFile ¶ added in v0.3.0
ReadStaticFile 读取指定静态文件
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 HookMatcher ¶ added in v0.3.0
type HookMatcher struct {
// contains filtered or unexported fields
}
HookMatcher 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获取插件的详细信息
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 (*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) 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) 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) OnCommands ¶
OnCommands 添加新的命令匹配器
func (*PluginProxy) OnFullMatch ¶ added in v0.1.2
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) 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进行向前对齐