Help us shape the future of Go! Take the 2026 Go Developer Survey

token

package
v1.71.1 Latest Latest
Warning

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

Go to latest
Published: Oct 6, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Manager

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

Manager 管理 access token

https://bot.q.qq.com/wiki/develop/api-v2/dev-prepare/interface-framework/api-use.html#%E8%8E%B7%E5%8F%96%E8%B0%83%E7%94%A8%E5%87%AD%E8%AF%81

func NewManager

func NewManager(info *dto.BotInfo) *Manager

NewManager 初始化并启动后台刷新(使用默认配置,context.Background() 作为根 context)

func NewManagerFromConfig

func NewManagerFromConfig(info *dto.BotInfo, cfg config.TokenManagerConfig) *Manager

NewManagerFromConfig 使用指定配置初始化并启动后台刷新(context.Background() 作为根 context)

参数:

  • info: Bot 信息
  • cfg: Token 配置

示例:

cfg, _ := config.LoadDefault()
mgr := token.NewManagerFromConfig(global.Info, cfg.Token)

func NewManagerFromConfigWithContext

func NewManagerFromConfigWithContext(parent context.Context, info *dto.BotInfo, cfg config.TokenManagerConfig) *Manager

NewManagerFromConfigWithContext 创建与外部 context 联动的 Manager(自定义配置)。

当 parent ctx 被取消时,后台刷新 goroutine 自动退出,无需手动调用 Stop()。

func NewManagerWithContext

func NewManagerWithContext(parent context.Context, info *dto.BotInfo) *Manager

NewManagerWithContext 创建与外部 context 联动的 Manager(默认 token 配置)。

当 parent ctx 被取消时(如 Bot 关闭),后台 token 刷新 goroutine 将自动退出, 无需手动调用 Stop()。

推荐在 Bot 生命周期中使用:

mgr := token.NewManagerWithContext(bot.Context(), info)

func (*Manager) GetAppID added in v1.28.0

func (m *Manager) GetAppID() uint64

GetAppID 返回机器人的应用 ID(AppID)。

互动事件回应(PUT /interactions/{id})需要携带 X-Callback-AppID 请求头, 官方 botgo SDK 的实现即为此用法。

func (*Manager) GetToken

func (m *Manager) GetToken() string

GetToken 获取当前的 access token 如果 Manager 已停止,返回空字符串 调用者应该检查返回的 token 是否为空

func (*Manager) Ready added in v1.9.0

func (m *Manager) Ready() bool

Ready 返回是否已成功获取到 access token(非阻塞)。

func (*Manager) Stop

func (m *Manager) Stop()

Stop 停止 token 自动刷新 调用此方法后,Manager 将不再刷新 token 此方法是幂等的,多次调用安全

func (*Manager) TokenExpiresAt added in v1.9.0

func (m *Manager) TokenExpiresAt() time.Time

TokenExpiresAt 返回当前 token 的过期时间。未就绪时返回零值 time.Time。

func (*Manager) WaitReady

func (m *Manager) WaitReady() error

WaitReady 阻塞直到 access token 可用 使用默认超时时间(30秒)

func (*Manager) WaitReadyWithContext added in v1.22.0

func (m *Manager) WaitReadyWithContext(ctx context.Context) error

WaitReadyWithContext 阻塞直到 access token 可用、调用方 ctx 结束或超时。

相比 WaitReadyWithTimeout,它额外监听调用方的 ctx: API 调用方普遍会给自己设置几秒的 deadline,而固定 30 秒的等待完全无视它, 一次"token 尚未就绪"就能让调用方的超时被违反十几倍, 并在此期间每个在途请求各占住一个 goroutine。

func (*Manager) WaitReadyWithTimeout

func (m *Manager) WaitReadyWithTimeout(timeout time.Duration) error

WaitReadyWithTimeout 阻塞直到 access token 可用或超时。

Jump to

Keyboard shortcuts

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