Documentation ¶
Overview ¶
Package ctxext ctx扩展
Index ¶
- Variables
- func LimitByChannel(ctx *nano.Ctx) *rate.Limiter
- func LimitByGroup(ctx *nano.Ctx) *rate.Limiter
- func LimitByGuild(ctx *nano.Ctx) *rate.Limiter
- func LimitByUser(ctx *nano.Ctx) *rate.Limiter
- func MustMessageNotNil(ctx *nano.Ctx) bool
- func SetDefaultLimiterManagerParam(interval time.Duration, burst int)
- type LimiterManager
Constants ¶
This section is empty.
Variables ¶
View Source
var DefaultSingle = nano.NewSingle( nano.WithKeyFn(func(ctx *nano.Ctx) int64 { switch ctx.Value.(type) { case *nano.Message: return int64(ctx.UserID()) } return 0 }), nano.WithPostFn[int64](func(ctx *nano.Ctx) { _, _ = ctx.SendPlainMessage(false, "您有操作正在执行, 请稍后再试!") }), )
DefaultSingle 默认反并发处理
按 发送者 反并发 并发时返回 "您有操作正在执行, 请稍后再试!"
Functions ¶
func SetDefaultLimiterManagerParam ¶
SetDefaultLimiterManagerParam 设置默认限速器参数
每 interval 时间 burst 次触发
Types ¶
type LimiterManager ¶
type LimiterManager struct {
// contains filtered or unexported fields
}
LimiterManager 自定义限速器管理
func NewLimiterManager ¶
func NewLimiterManager(interval time.Duration, burst int) (m LimiterManager)
NewLimiterManager 新限速器管理
func (LimiterManager) LimitByChannel ¶
func (m LimiterManager) LimitByChannel(ctx *nano.Ctx) *rate.Limiter
LimitByChannel 自定义限速器
按 channel 限制
func (LimiterManager) LimitByGroup ¶
func (m LimiterManager) LimitByGroup(ctx *nano.Ctx) *rate.Limiter
LimitByGroup 自定义限速器
按 group 限制
func (LimiterManager) LimitByGuild ¶ added in v0.1.7
func (m LimiterManager) LimitByGuild(ctx *nano.Ctx) *rate.Limiter
LimitByGuild 自定义限速器
按 guild 限制
func (LimiterManager) LimitByUser ¶
func (m LimiterManager) LimitByUser(ctx *nano.Ctx) *rate.Limiter
LimitByUser 自定义限速器
按 发送者 限制
Click to show internal directories.
Click to hide internal directories.