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) Replayed() 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) Replayed ¶ added in v0.1.3
Replayed reports whether the playing track came back out of the history, in which case it is already there and must not be retired into it twice.
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.