Documentation
¶
Overview ¶
Package queue is a player's track list: what plays now, what played before and what comes next, with optional persistence through a Store.
Index ¶
- type Change
- type Config
- type Queue
- func (q *Queue) Add(ctx context.Context, tracks ...lavalink.Track)
- func (q *Queue) AddNext(ctx context.Context, tracks ...lavalink.Track)
- func (q *Queue) Advance(ctx context.Context) (lavalink.Track, bool)
- func (q *Queue) Back(ctx context.Context) (lavalink.Track, bool)
- func (q *Queue) Clear(ctx context.Context)
- func (q *Queue) Current() *lavalink.Track
- func (q *Queue) Delete(ctx context.Context) error
- func (q *Queue) Duration() lavalink.Duration
- func (q *Queue) Filter(ctx context.Context, keep func(lavalink.Track) bool)
- func (q *Queue) Find(match func(lavalink.Track) bool) int
- func (q *Queue) Insert(ctx context.Context, i int, tracks ...lavalink.Track)
- func (q *Queue) Len() int
- func (q *Queue) Load(ctx context.Context) error
- func (q *Queue) Move(ctx context.Context, from, to int) error
- func (q *Queue) OnChange() ...
- func (q *Queue) Peek() (lavalink.Track, bool)
- func (q *Queue) Previous() []lavalink.Track
- func (q *Queue) Remove(ctx context.Context, i int) (lavalink.Track, bool)
- func (q *Queue) RemoveRange(ctx context.Context, start, end int) ([]lavalink.Track, bool)
- func (q *Queue) Save(ctx context.Context) error
- func (q *Queue) SetCurrent(ctx context.Context, t *lavalink.Track)
- func (q *Queue) SetOnChange(...)
- func (q *Queue) Shuffle(ctx context.Context)
- func (q *Queue) Swap(ctx context.Context, i, j int) error
- func (q *Queue) Tracks() []lavalink.Track
- type Store
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
// Store persists the queue. Without one nothing is written.
Store Store
// Logger reports store failures. Defaults to [slog.Default].
Logger *slog.Logger
// OnChange runs after every change, outside the lock.
OnChange func(ctx context.Context, guildID string, change Change, tracks []lavalink.Track)
// HistoryLimit is how many played tracks to remember. Defaults to 25.
HistoryLimit int
}
Config configures a Queue. Every field is optional.
type Queue ¶
type Queue struct {
// contains filtered or unexported fields
}
Queue is a player's track list. Safe for concurrent use.
A change writes to Config.Store and calls Config.OnChange before returning, both outside the lock, which is what the context bounds.
func New ¶
New builds an empty queue. Queue.Load fills it from the store.
func (*Queue) Advance ¶
Advance retires the playing track and makes the next one current. Nothing queued reports false and clears Current.
func (*Queue) OnChange ¶ added in v0.1.2
func (q *Queue) OnChange() func(ctx context.Context, guildID string, change Change, tracks []lavalink.Track)
OnChange returns the queue-change callback, if any.
func (*Queue) RemoveRange ¶
RemoveRange drops tracks in [start, end) and returns them.
func (*Queue) Save ¶
Save writes the queue to Config.Store; without one it does nothing.
func (*Queue) SetCurrent ¶
SetCurrent replaces the playing track without touching the history. It copies: callers pass tracks out of events listeners still hold.
func (*Queue) SetOnChange ¶ added in v0.1.2
func (q *Queue) SetOnChange(f func(ctx context.Context, guildID string, change Change, tracks []lavalink.Track))
SetOnChange replaces the queue-change callback. It runs after every change, outside the lock.
type Store ¶
type Store interface {
Get(ctx context.Context, guildID string) ([]byte, error)
Set(ctx context.Context, guildID string, data []byte) error
Delete(ctx context.Context, guildID string) error
}
Store persists queues. Get returns nil for a guild it never saw; implementations must be safe for concurrent use.