Documentation
¶
Index ¶
- type Manager
- func NewManager(info *dto.BotInfo) *Manager
- func NewManagerFromConfig(info *dto.BotInfo, cfg config.TokenManagerConfig) *Manager
- func NewManagerFromConfigWithContext(parent context.Context, info *dto.BotInfo, cfg config.TokenManagerConfig) *Manager
- func NewManagerWithContext(parent context.Context, info *dto.BotInfo) *Manager
- func (m *Manager) GetAppID() uint64
- func (m *Manager) GetToken() string
- func (m *Manager) Ready() bool
- func (m *Manager) Stop()
- func (m *Manager) TokenExpiresAt() time.Time
- func (m *Manager) WaitReady() error
- func (m *Manager) WaitReadyWithContext(ctx context.Context) error
- func (m *Manager) WaitReadyWithTimeout(timeout time.Duration) error
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
func NewManager ¶
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 ¶
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
GetAppID 返回机器人的应用 ID(AppID)。
互动事件回应(PUT /interactions/{id})需要携带 X-Callback-AppID 请求头, 官方 botgo SDK 的实现即为此用法。
func (*Manager) Stop ¶
func (m *Manager) Stop()
Stop 停止 token 自动刷新 调用此方法后,Manager 将不再刷新 token 此方法是幂等的,多次调用安全
func (*Manager) TokenExpiresAt ¶ added in v1.9.0
TokenExpiresAt 返回当前 token 的过期时间。未就绪时返回零值 time.Time。
func (*Manager) WaitReadyWithContext ¶ added in v1.22.0
WaitReadyWithContext 阻塞直到 access token 可用、调用方 ctx 结束或超时。
相比 WaitReadyWithTimeout,它额外监听调用方的 ctx: API 调用方普遍会给自己设置几秒的 deadline,而固定 30 秒的等待完全无视它, 一次"token 尚未就绪"就能让调用方的超时被违反十几倍, 并在此期间每个在途请求各占住一个 goroutine。