liblavalink

package
v0.0.0-...-cd2be41 Latest Latest
Warning

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

Go to latest
Published: May 17, 2024 License: GPL-3.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DecodeResponse

func DecodeResponse(data []byte, v interface{}) error

Helper functions to decode responses from JSON

func EncodeRequest

func EncodeRequest(v interface{}) ([]byte, error)

Helper functions to encode requests to JSON

Types

type LavalinkClient

type LavalinkClient struct {
	NodeManager *NodeManager
	Players     map[string]*Player
}

func NewLavalinkClient

func NewLavalinkClient() *LavalinkClient

func (*LavalinkClient) AddNode

func (c *LavalinkClient) AddNode(host string, port int, password string) error

func (*LavalinkClient) GetPlayer

func (c *LavalinkClient) GetPlayer(guildID string) *Player

func (*LavalinkClient) RemovePlayer

func (c *LavalinkClient) RemovePlayer(guildID string)

type LoopRequest

type LoopRequest struct {
	GuildID string `json:"guildId"`
	Loop    bool   `json:"loop"`
}

func NewLoopRequest

func NewLoopRequest(guildID string, loop bool) *LoopRequest

type Node

type Node struct {
	Host      string
	Port      int
	Password  string
	WebSocket *WebSocketClient
	Headers   http.Header
}

type NodeManager

type NodeManager struct {
	Nodes []*Node
	Mutex sync.Mutex
}

func NewNodeManager

func NewNodeManager() *NodeManager

func (*NodeManager) AddNode

func (m *NodeManager) AddNode(host string, port int, password string) error

func (*NodeManager) GetLeastLoadedNode

func (m *NodeManager) GetLeastLoadedNode() *Node

func (*NodeManager) RemoveNode

func (m *NodeManager) RemoveNode(host string, port int)

type PauseRequest

type PauseRequest struct {
	GuildID string `json:"guildId"`
	Pause   bool   `json:"pause"`
}

func NewPauseRequest

func NewPauseRequest(guildID string, pause bool) *PauseRequest

type PlayRequest

type PlayRequest struct {
	GuildID   string `json:"guildId"`
	Track     string `json:"track"`
	StartTime int64  `json:"startTime,omitempty"`
	EndTime   int64  `json:"endTime,omitempty"`
	Volume    int    `json:"volume,omitempty"`
}

Define request structures

func NewPlayRequest

func NewPlayRequest(guildID, track string) *PlayRequest

Helper functions to create requests

type Player

type Player struct {
	GuildID      string
	Node         *Node
	Track        *Track
	Volume       int
	Loop         bool
	CurrentIndex int
	Queue        *Queue
}

func NewPlayer

func NewPlayer(guildID string, node *Node, queue *Queue) *Player

func (*Player) Next

func (p *Player) Next() error

func (*Player) Pause

func (p *Player) Pause() error

func (*Player) Play

func (p *Player) Play(trackID string) error

func (*Player) Prev

func (p *Player) Prev() error

func (*Player) Resume

func (p *Player) Resume() error

func (*Player) Seek

func (p *Player) Seek(position int64) error

func (*Player) SetLoop

func (p *Player) SetLoop(loop bool) error

func (*Player) SetVolume

func (p *Player) SetVolume(volume int) error

func (*Player) SkipTo

func (p *Player) SkipTo(index int) error

func (*Player) Stop

func (p *Player) Stop() error

type PlayerUpdate

type PlayerUpdate struct {
	GuildID  string `json:"guildId"`
	Track    *Track `json:"track,omitempty"`
	Position int64  `json:"position,omitempty"`
	Volume   int    `json:"volume,omitempty"`
}

type Queue

type Queue struct {
	Tracks []*Track
	// contains filtered or unexported fields
}

Queue represents a queue of tracks to be played.

func NewQueue

func NewQueue() *Queue

NewQueue creates a new Queue instance.

func (*Queue) AddTrack

func (q *Queue) AddTrack(track *Track)

AddTrack adds a new track to the queue.

func (*Queue) IndexOfTrack

func (q *Queue) IndexOfTrack(trackIdentifier string) int

IndexOfTrack returns the index of the track with the given Identifier, or -1 if not found.

func (*Queue) List

func (q *Queue) List() []*Track

List returns all the tracks in the queue.

func (*Queue) Next

func (q *Queue) Next(currentIndex int) (*Track, error)

Next returns the next track in the queue.

func (*Queue) Prev

func (q *Queue) Prev(currentIndex int) (*Track, error)

Prev returns the previous track in the queue.

func (*Queue) RemoveTrack

func (q *Queue) RemoveTrack(index int) error

RemoveTrack removes a track from the queue by index.

func (*Queue) SkipTo

func (q *Queue) SkipTo(index int) (*Track, error)

SkipTo skips to the track at the specified index in the queue.

type QueueManager

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

QueueManager manages multiple queues, one per guild.

func NewQueueManager

func NewQueueManager() *QueueManager

NewQueueManager creates a new QueueManager instance.

func (*QueueManager) GetQueue

func (qm *QueueManager) GetQueue(guildIdentifier string) *Queue

GetQueue retrieves the queue for a given guild Identifier, creating it if it doesn't exist.

func (*QueueManager) RemoveQueue

func (qm *QueueManager) RemoveQueue(guildIdentifier string)

RemoveQueue removes the queue for a given guild Identifier.

type SeekRequest

type SeekRequest struct {
	GuildID  string `json:"guildId"`
	Position int64  `json:"position"`
}

func NewSeekRequest

func NewSeekRequest(guildID string, position int64) *SeekRequest

type StopRequest

type StopRequest struct {
	GuildID string `json:"guildId"`
}

func NewStopRequest

func NewStopRequest(guildID string) *StopRequest

type Track

type Track struct {
	Identifier string `json:"identifier"`
	IsSeekable bool   `json:"isSeekable"`
	Author     string `json:"author"`
	Length     int64  `json:"length"`
	IsStream   bool   `json:"isStream"`
	Title      string `json:"title"`
	URI        string `json:"uri"`
}

Define response structures

type VolumeRequest

type VolumeRequest struct {
	GuildID string `json:"guildId"`
	Volume  int    `json:"volume"`
}

func NewVolumeRequest

func NewVolumeRequest(guildID string, volume int) *VolumeRequest

type WebSocketClient

type WebSocketClient struct {
	Conn           *websocket.Conn
	SendChannel    chan []byte
	ReceiveChannel chan []byte
	CloseChannel   chan struct{}
}

func NewWebSocketClient

func NewWebSocketClient(url string, headers http.Header) (*WebSocketClient, error)

func (*WebSocketClient) Close

func (c *WebSocketClient) Close()

type WebSocketClosedEvent

type WebSocketClosedEvent struct {
	GuildID  string `json:"guildId"`
	Code     int    `json:"code"`
	Reason   string `json:"reason"`
	ByRemote bool   `json:"byRemote"`
}

Jump to

Keyboard shortcuts

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