plugins

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Apr 2, 2025 License: AGPL-3.0 Imports: 13 Imported by: 0

Documentation

Overview

Package plugins @Author Clover @Data 2025/3/6 下午9:46:00 @Desc

Index

Constants

View Source
const (
	VeryHighLevel PluginLevel = 0
	HighLevel                 = iota
	UpperLevel
	DownLevel
	MediumLevel
	LowLevel
	VeryLowLevel
)
View Source
const LevelSize = 7

Variables

View Source
var (
	ErrRecvMsgNull = errors.New("receive message is null")
	ErrUnCheck     = errors.New("un check rules")
)
View Source
var Level2Str = map[uint8]string{
	uint8(VeryHighLevel): "VeryHighLevel",
	HighLevel:            "HighLevel",
	UpperLevel:           "UpperLevel",
	DownLevel:            "DownLevel",
	MediumLevel:          "MediumLevel",
	LowLevel:             "LowLevel",
	VeryLowLevel:         "VeryLowLevel",
}

Functions

This section is empty.

Types

type AHConn added in v0.8.0

type AHConn struct {
	Name     string
	LifeTime time.Duration // 存活时间
	// contains filtered or unexported fields
}

AHConn actionHandler长期存在版 多步骤池

func NewAHConn added in v0.8.0

func NewAHConn(ctx context.Context, name string, lifeTime time.Duration) *AHConn

func (*AHConn) AddAC added in v0.8.0

func (ahc *AHConn) AddAC(acL ...*ActionHandler) *AHConn

AddAC 动态往行动池添加行动

func (*AHConn) ExecAC added in v0.8.0

func (ahc *AHConn) ExecAC(m *message.Message) bool

ExecAC 执行 <isRet: 执行后是否放回队列>

func (*AHConn) IsTimeOut added in v0.8.0

func (ahc *AHConn) IsTimeOut() bool

type AHConnPool added in v0.8.0

type AHConnPool struct {
	Pool map[string]*AHConn
	// contains filtered or unexported fields
}

AHConnPool 长连接池

func NewAHConnPool added in v0.8.0

func NewAHConnPool() *AHConnPool

func (*AHConnPool) AddNewConn added in v0.8.0

func (p *AHConnPool) AddNewConn(m *message.Message, conn *AHConn)

func (*AHConnPool) CheckTimeOut added in v0.8.0

func (p *AHConnPool) CheckTimeOut(ctx context.Context)

func (*AHConnPool) EachMsg added in v0.8.0

func (p *AHConnPool) EachMsg(m *message.Message, sendChan chan<- *message.Message) bool

type ActionFunc

type ActionFunc func(ctx context.Context, recvMsg *message.Message) (reply message.Message, ok bool, err error)

ActionFunc 动作函数类型

type ActionHandler

type ActionHandler struct {
	Name    string          // Action 的名称,方便识别和管理
	Matcher matcher.Matcher // 核心:用于匹配消息的 Matcher 接口
	Action  ActionFunc      // 核心:实际执行的动作函数
	//priority int        // 可选:优先级,用于控制执行顺序(如果需要)
	Children []*ActionHandler // 子操作,递归执行
	// ... 其他元数据,例如描述、启用状态等
	IsEnable bool // 是否启用
	// contains filtered or unexported fields
}

func DefaultActionHandler

func DefaultActionHandler(name string, isEnable bool) *ActionHandler

func (*ActionHandler) AsActionFunc

func (ah *ActionHandler) AsActionFunc(action ActionFunc) *ActionHandler

func (*ActionHandler) AsChild

func (ah *ActionHandler) AsChild(child *ActionHandler) *ActionHandler

func (*ActionHandler) AsMatcher

func (ah *ActionHandler) AsMatcher(matcher matcher.Matcher) *ActionHandler

func (*ActionHandler) Disable

func (ah *ActionHandler) Disable()

func (*ActionHandler) Enable

func (ah *ActionHandler) Enable()

func (*ActionHandler) IsEnabled

func (ah *ActionHandler) IsEnabled() bool

type AutoRegister

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

func GetAutoRegister

func GetAutoRegister() *AutoRegister

func (*AutoRegister) CachePlugins added in v0.7.1

func (ag *AutoRegister) CachePlugins()

func (*AutoRegister) DisableByName

func (ag *AutoRegister) DisableByName(name string) bool

func (*AutoRegister) EnableByName

func (ag *AutoRegister) EnableByName(name string) bool

func (*AutoRegister) Plugins

func (ag *AutoRegister) Plugins() []*IPlugin

func (*AutoRegister) RegisterPlugin

func (ag *AutoRegister) RegisterPlugin(p IPlugin)

type IPlugin

type IPlugin interface {
	HandleRecv(ctx context.Context, recv *message.Message, sendChan chan<- *message.Message) (execute bool)
	GetName() string
	GetLevel() PluginLevel
	GetPluginOpt() PluginOpt
	SetCli(cli *wcf.Client)
	GetCli() *wcf.Client
	EnableP()  // 启用插件
	DisableP() // 禁用插件
	Close()
}

type Plugin

type Plugin struct {
	ACPool *AHConnPool // 多步骤行动池(用于一次多行动跟踪)(标识是RoomId + WxId)

	// end
	Name              string      // 插件名称
	PluginOpt                     // 插件设置
	Cli               *wcf.Client // wcf客户端
	ActionHandlerList []*ActionHandler
	// contains filtered or unexported fields
}

func DefaultPlugin

func DefaultPlugin(name string) *Plugin

func (*Plugin) AsAction

func (p *Plugin) AsAction(ah *ActionHandler) *Plugin

func (*Plugin) AsDisable

func (p *Plugin) AsDisable() *Plugin

func (*Plugin) AsEnable

func (p *Plugin) AsEnable() *Plugin

func (*Plugin) AsLevel

func (p *Plugin) AsLevel(l PluginLevel) *Plugin

func (*Plugin) AsLifeTime

func (p *Plugin) AsLifeTime(life time.Duration) *Plugin

func (*Plugin) AsPluginOpt

func (p *Plugin) AsPluginOpt(opt PluginOpt) *Plugin

func (*Plugin) Close

func (p *Plugin) Close()

func (*Plugin) DisableP added in v0.7.1

func (p *Plugin) DisableP()

func (*Plugin) EnableP added in v0.7.1

func (p *Plugin) EnableP()

func (*Plugin) GetCli added in v0.7.1

func (p *Plugin) GetCli() *wcf.Client

func (*Plugin) GetLevel

func (p *Plugin) GetLevel() PluginLevel

func (*Plugin) GetName

func (p *Plugin) GetName() string

func (*Plugin) GetPluginOpt

func (p *Plugin) GetPluginOpt() PluginOpt

func (*Plugin) HandleRecv

func (p *Plugin) HandleRecv(ctx context.Context, recv *message.Message, sendChan chan<- *message.Message) (execute bool)

func (*Plugin) SetCli added in v0.7.1

func (p *Plugin) SetCli(cli *wcf.Client)

type PluginHandler

type PluginHandler interface {
	HandleRecv(ctx context.Context)
	Close()
}

type PluginLevel

type PluginLevel uint8

type PluginOpt

type PluginOpt struct {
	Enable           bool          // 是否启用
	IsExclusion      bool          // todo 是否排斥其他模块
	IsWaitAllAcMatch bool          // 是否等待所有同级ac匹配规则(默认false情况匹配到一个ac后其余ac将不匹配) 是否匹配所有ac
	Level            PluginLevel   // 模块等级
	LifeTime         time.Duration // 存活时间
}

Directories

Path Synopsis
Package admin @Author Clover @Data 2025/3/10 下午4:55:00 @Desc 管理员模块
Package admin @Author Clover @Data 2025/3/10 下午4:55:00 @Desc 管理员模块
ai
Package ai @Author Clover @Data 2024/8/30 下午5:48:00 @Desc 过滤器
Package ai @Author Clover @Data 2024/8/30 下午5:48:00 @Desc 过滤器
cron
Package cron @Author Clover @Data 2024/9/17 下午7:36:00 @Desc 定时器
Package cron @Author Clover @Data 2024/9/17 下午7:36:00 @Desc 定时器
cron/cronplugins
Package cronplugins @Author Clover @Data 2024/9/17 下午8:27:00 @Desc 定时获取天气模块
Package cronplugins @Author Clover @Data 2024/9/17 下午8:27:00 @Desc 定时获取天气模块
Package anime @Author Clover @Data 2025/3/31 下午7:58:00 @Desc 动漫相关插件
Package anime @Author Clover @Data 2025/3/31 下午7:58:00 @Desc 动漫相关插件
Package biliDecoder @Author Clover @Data 2025/3/17 下午1:59:00 @Desc
Package biliDecoder @Author Clover @Data 2025/3/17 下午1:59:00 @Desc
Package hentai 提供涩图功能
Package hentai 提供涩图功能
Package matchers @Author Clover @Data 2025/3/16 下午12:33:00 @Desc
Package matchers @Author Clover @Data 2025/3/16 下午12:33:00 @Desc

Jump to

Keyboard shortcuts

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