control

package module
v1.6.0 Latest Latest
Warning

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

Go to latest
Published: Oct 17, 2023 License: GPL-3.0 Imports: 14 Imported by: 352

README

zbpctrl

ZeroBot-Plugin 的控制库

Documentation

Overview

Package control 控制插件的启用与优先级等

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrEmptyExtra ...
	ErrEmptyExtra = errors.New("empty extra")
	// ErrUnregisteredExtra ...
	ErrUnregisteredExtra = errors.New("unregistered extra")
)

Functions

This section is empty.

Types

type BanStatus added in v1.5.1

type BanStatus struct {
	ID      int64 `db:"id"`
	UserID  int64 `db:"uid"`
	GroupID int64 `db:"gid"`
}

BanStatus 在某群封禁某人的状态

type BlockStatus added in v1.5.1

type BlockStatus struct {
	UserID int64 `db:"uid"`
}

BlockStatus 全局 ban 某人

type Control

type Control[CTX any] struct {
	Service string
	Cache   map[int64]uint8 // map[gid]isdisable
	Options Options[CTX]
	Manager *Manager[CTX]
}

Control is to control the plugins.

func (*Control[CTX]) Ban

func (m *Control[CTX]) Ban(uid, gid int64)

Ban 禁止某人在某群使用本插件

func (*Control[CTX]) Disable

func (m *Control[CTX]) Disable(groupID int64)

Disable disables a group to pass the Manager. groupID == 0 (ALL) will operate on all grps.

func (*Control[CTX]) Enable

func (m *Control[CTX]) Enable(groupID int64)

Enable enables a group to pass the Manager. groupID == 0 (ALL) will operate on all grps.

func (*Control[CTX]) EnableMarkIn added in v1.4.0

func (m *Control[CTX]) EnableMarkIn(grp int64) EnableMark

EnableMarkIn 打印 ● 或 ○

func (*Control[CTX]) Flip added in v1.4.0

func (m *Control[CTX]) Flip() error

Flip 改变全局默认启用状态

func (*Control[CTX]) GetData

func (m *Control[CTX]) GetData(gid int64) int64

GetData 获取某个群的 62 位配置信息

func (*Control[CTX]) GetExtra added in v1.6.0

func (m *Control[CTX]) GetExtra(obj any) error

GetExtra 取得额外数据, 一个插件一个

func (*Control[CTX]) Handler

func (m *Control[CTX]) Handler(gid, uid int64) bool

Handler 返回 预处理器

func (*Control[CTX]) IsBannedIn

func (m *Control[CTX]) IsBannedIn(uid, gid int64) bool

IsBannedIn 某人是否在某群被 ban

func (*Control[CTX]) IsEnabledIn

func (m *Control[CTX]) IsEnabledIn(gid int64) bool

IsEnabledIn 查询开启群 当全局未配置或与默认相同时, 状态取决于单独配置, 后备为默认配置; 当全局与默认不同时, 状态取决于全局配置, 单独配置失效。

func (*Control[CTX]) Permit

func (m *Control[CTX]) Permit(uid, gid int64)

Permit 允许某人在某群使用本插件

func (*Control[CTX]) Reset

func (m *Control[CTX]) Reset(groupID int64)

Reset resets the default config of a group. groupID == 0 (ALL) is not allowed.

func (*Control[CTX]) SetData

func (m *Control[CTX]) SetData(groupID int64, data int64) error

SetData 为某个群设置中间 62 位配置数据 (除高低位)

func (*Control[CTX]) SetExtra added in v1.6.0

func (m *Control[CTX]) SetExtra(obj any) error

SetExtra 设置额外数据, 一个插件一个

func (*Control[CTX]) String added in v1.4.0

func (m *Control[CTX]) String() string

String 打印帮助

type EnableMark added in v1.4.0

type EnableMark bool

EnableMark 启用:●,禁用:○

func (EnableMark) String added in v1.4.0

func (em EnableMark) String() string

String 打印启用状态

type GroupConfig added in v1.5.1

type GroupConfig struct {
	GroupID int64 `db:"gid"`     // GroupID 群号
	Disable int64 `db:"disable"` // Disable 默认启用该插件
}

GroupConfig holds the group config for the Manager.

type Manager added in v1.4.0

type Manager[CTX any] struct {
	sync.RWMutex
	M map[string]*Control[CTX]
	D sql.Sqlite
}

Manager 管理

func NewManager added in v1.4.0

func NewManager[CTX any](dbpath string) (m Manager[CTX])

NewManager 打开管理数据库

func (*Manager[CTX]) CanResponse added in v1.5.1

func (manager *Manager[CTX]) CanResponse(gid int64) bool

CanResponse ...

func (*Manager[CTX]) DoBlock added in v1.4.0

func (manager *Manager[CTX]) DoBlock(uid int64) error

DoBlock 封禁

func (*Manager[CTX]) DoUnblock added in v1.4.0

func (manager *Manager[CTX]) DoUnblock(uid int64) error

DoUnblock 解封

func (*Manager[CTX]) ForEach added in v1.4.0

func (manager *Manager[CTX]) ForEach(iterator func(key string, manager *Control[CTX]) bool)

ForEach iterates through managers.

func (*Manager[CTX]) IsBlocked added in v1.4.0

func (manager *Manager[CTX]) IsBlocked(uid int64) bool

IsBlocked 是否封禁

func (*Manager[CTX]) Lookup added in v1.4.0

func (manager *Manager[CTX]) Lookup(service string) (*Control[CTX], bool)

Lookup returns a Manager by the service name, if not exist, it will return nil.

func (*Manager[CTX]) NewControl added in v1.5.1

func (manager *Manager[CTX]) NewControl(service string, o *Options[CTX]) *Control[CTX]

NewControl returns Manager with settings.

func (*Manager[CTX]) Response added in v1.5.1

func (manager *Manager[CTX]) Response(gid int64) error

Response opens the resp of the gid

func (*Manager[CTX]) Silence added in v1.5.1

func (manager *Manager[CTX]) Silence(gid int64) error

Silence will drop its extra data

type Options

type Options[CTX any] struct {
	DisableOnDefault  bool
	Extra             int16     // 插件申请的 Extra 记录号, 可为 -32768~32767, 0 不可用
	Brief             string    // 简介
	Help              string    // 帮助文本信息
	Banner            string    // 背景图路径, 可为 http 或 本地 路径
	PrivateDataFolder string    // 全部小写的数据文件夹名, 不出现在 zbpdata
	PublicDataFolder  string    // 驼峰的数据文件夹名, 出现在 zbpdata
	OnEnable          func(CTX) // 启用插件后执行的命令, 为空则打印 “已启用服务: xxx”
	OnDisable         func(CTX) // 禁用插件后执行的命令, 为空则打印 “已禁用服务: xxx”
}

Options holds the optional parameters for the Manager.

type ResponseGroup added in v1.5.1

type ResponseGroup struct {
	GroupID int64  `db:"gid"` // GroupID 群号, 个人为负
	Extra   string `db:"ext"` // Extra 该群的扩展数据
}

ResponseGroup 响应的群

Jump to

Keyboard shortcuts

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