ctxext

package
v0.1.7 Latest Latest
Warning

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

Go to latest
Published: Nov 22, 2023 License: AGPL-3.0 Imports: 5 Imported by: 0

Documentation

Overview

Package ctxext ctx扩展

Index

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 LimitByChannel

func LimitByChannel(ctx *nano.Ctx) *rate.Limiter

LimitByChannel 默认限速器 每 10s 5次触发

按 channel 限制

func LimitByGroup

func LimitByGroup(ctx *nano.Ctx) *rate.Limiter

LimitByGroup 默认限速器 每 10s 5次触发

按 group 限制

func LimitByGuild added in v0.1.7

func LimitByGuild(ctx *nano.Ctx) *rate.Limiter

LimitByGuild 默认限速器 每 10s 5次触发

按 guild 限制

func LimitByUser

func LimitByUser(ctx *nano.Ctx) *rate.Limiter

LimitByUser 默认限速器 每 10s 5次触发

按 发送者 限制

func MustMessageNotNil

func MustMessageNotNil(ctx *nano.Ctx) bool

MustMessageNotNil 消息是否不为空

func SetDefaultLimiterManagerParam

func SetDefaultLimiterManagerParam(interval time.Duration, burst int)

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 自定义限速器

按 发送者 限制

Jump to

Keyboard shortcuts

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