Documentation
¶
Index ¶
- Constants
- type AudioTrackData
- type AutocompleteHandler
- type Bot
- type BotConfig
- type Command
- type CommandCheck
- type CommandHandler
- type CommandMap
- type CommandsModule
- type ComponentHandler
- type Config
- type DefaultCommandsModule
- type LavalinkConfig
- type ListenerModule
- type Listeners
- type LoopingType
- type Module
- type MusicHistory
- type MusicPlayer
- func (p *MusicPlayer) CancelDisconnect()
- func (p *MusicPlayer) OnPlayerPause(player lavalink.Player)
- func (p *MusicPlayer) OnPlayerResume(player lavalink.Player)
- func (p *MusicPlayer) OnPlayerUpdate(player lavalink.Player, state lavalink.PlayerState)
- func (p *MusicPlayer) OnTrackEnd(player lavalink.Player, track lavalink.AudioTrack, ...)
- func (p *MusicPlayer) OnTrackException(player lavalink.Player, track lavalink.AudioTrack, ...)
- func (p *MusicPlayer) OnTrackStart(player lavalink.Player, track lavalink.AudioTrack)
- func (p *MusicPlayer) OnTrackStuck(player lavalink.Player, track lavalink.AudioTrack, ...)
- func (p *MusicPlayer) OnWebSocketClosed(player lavalink.Player, code int, reason string, byRemote bool)
- func (p *MusicPlayer) PlanDisconnect()
- type MusicPlayerMap
- func (b *MusicPlayerMap) Add(player *MusicPlayer)
- func (b *MusicPlayerMap) All() []*MusicPlayer
- func (b *MusicPlayerMap) Delete(guildID snowflake.Snowflake)
- func (b *MusicPlayerMap) Get(guildID snowflake.Snowflake) *MusicPlayer
- func (b *MusicPlayerMap) Has(guildID snowflake.Snowflake) bool
- func (b *MusicPlayerMap) Len() int
- func (b *MusicPlayerMap) New(guildID snowflake.Snowflake, playerType PlayerType, loopingType LoopingType) *MusicPlayer
- type MusicQueue
- func (q *MusicQueue) Clear()
- func (q *MusicQueue) Get(index int) lavalink.AudioTrack
- func (q *MusicQueue) Len() int
- func (q *MusicQueue) LoopingType() LoopingType
- func (q *MusicQueue) Pop() lavalink.AudioTrack
- func (q *MusicQueue) Push(tracks ...lavalink.AudioTrack)
- func (q *MusicQueue) Remove(index ...int)
- func (q *MusicQueue) SetType(loopingType LoopingType)
- func (q *MusicQueue) Shuffle()
- func (q *MusicQueue) Tracks() []lavalink.AudioTrack
- type PlayerType
Constants ¶
View Source
const KittyBotColor = 0x4c50c1
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AudioTrackData ¶
type AutocompleteHandler ¶
type Bot ¶
type Bot struct { Logger log.Logger Client bot.Client Lavalink disgolink.Link MusicPlayers *MusicPlayerMap Paginator *paginator.Manager Commands *CommandMap Listeners *Listeners DB db.DB Config Config Version string }
func (*Bot) LoadModules ¶
func (*Bot) RegisterNodes ¶
func (b *Bot) RegisterNodes()
func (*Bot) SetupLavalink ¶
func (b *Bot) SetupLavalink()
func (*Bot) SetupPaginator ¶
func (b *Bot) SetupPaginator()
func (*Bot) SyncCommands ¶
func (b *Bot) SyncCommands()
type Command ¶
type Command struct { Create discord.ApplicationCommandCreate Checks CommandCheck CommandHandler map[string]CommandHandler ComponentHandler map[string]ComponentHandler AutoCompleteHandler map[string]AutocompleteHandler }
type CommandCheck ¶
type CommandCheck func(b *Bot, p *message.Printer, e *events.ApplicationCommandInteractionEvent) bool
var ( IsDev CommandCheck = func(b *Bot, p *message.Printer, e *events.ApplicationCommandInteractionEvent) bool { for _, v := range b.Config.DevUserIDs { if v == e.User().ID { return true } } if err := e.CreateMessage(discord.NewMessageCreateBuilder(). SetContent(p.Sprintf("checks.is.dev")). SetEphemeral(true). Build(), ); err != nil { b.Logger.Error(err) } return false } HasMusicPlayer CommandCheck = func(b *Bot, p *message.Printer, e *events.ApplicationCommandInteractionEvent) bool { if !b.MusicPlayers.Has(*e.GuildID()) { if err := e.CreateMessage(discord.NewMessageCreateBuilder(). SetContent(p.Sprintf("checks.has.music.player")). SetEphemeral(true). Build(), ); err != nil { b.Logger.Error(err) } return false } return true } HasQueueItems CommandCheck = func(b *Bot, p *message.Printer, e *events.ApplicationCommandInteractionEvent) bool { if b.MusicPlayers.Get(*e.GuildID()).Queue.Len() == 0 { if err := e.CreateMessage(discord.MessageCreate{Content: p.Sprintf("checks.has.queue.items")}); err != nil { b.Logger.Error(err) } return false } return true } HasHistoryItems CommandCheck = func(b *Bot, p *message.Printer, e *events.ApplicationCommandInteractionEvent) bool { if b.MusicPlayers.Get(*e.GuildID()).History.Len() == 0 { if err := e.CreateMessage(discord.MessageCreate{Content: p.Sprintf("checks.has.history.items")}); err != nil { b.Logger.Error(err) } return false } return true } IsMemberConnectedToVoiceChannel CommandCheck = func(b *Bot, p *message.Printer, e *events.ApplicationCommandInteractionEvent) bool { if voiceState, ok := e.Client().Caches().VoiceStates().Get(*e.GuildID(), e.User().ID); !ok || voiceState.ChannelID == nil { if err := e.CreateMessage(discord.NewMessageCreateBuilder(). SetContent(p.Sprintf("modules.music.not.in.voice")). SetEphemeral(true). Build(), ); err != nil { b.Logger.Error(err) } return false } return true } IsPlaying CommandCheck = func(b *Bot, p *message.Printer, e *events.ApplicationCommandInteractionEvent) bool { if b.MusicPlayers.Get(*e.GuildID()).PlayingTrack() == nil { if err := e.CreateMessage(discord.NewMessageCreateBuilder(). SetContent(p.Sprintf("checks.is.playing")). SetEphemeral(true). Build(), ); err != nil { b.Logger.Error(err) } return false } return true } )
func CommandCheckAllOf ¶
func CommandCheckAllOf(checks ...CommandCheck) CommandCheck
func CommandCheckAnyOf ¶
func CommandCheckAnyOf(checks ...CommandCheck) CommandCheck
func (CommandCheck) And ¶
func (c CommandCheck) And(check CommandCheck) CommandCheck
func (CommandCheck) Or ¶
func (c CommandCheck) Or(check CommandCheck) CommandCheck
type CommandHandler ¶
type CommandMap ¶
type CommandMap struct {
// contains filtered or unexported fields
}
func NewCommandMap ¶
func NewCommandMap(bot *Bot) *CommandMap
func (*CommandMap) AddAll ¶
func (m *CommandMap) AddAll(c []Command)
func (*CommandMap) OnEvent ¶
func (m *CommandMap) OnEvent(event bot.Event)
type CommandsModule ¶
type CommandsModule interface {
Commands() []Command
}
type ComponentHandler ¶
type DefaultCommandsModule ¶
type DefaultCommandsModule struct {
Cmds []Command
}
func (DefaultCommandsModule) Commands ¶
func (m DefaultCommandsModule) Commands() []Command
type LavalinkConfig ¶
type LavalinkConfig struct { Nodes []lavalink.NodeConfig `json:"nodes"` ResumingTimeout int `json:"resuming_timeout"` }
type ListenerModule ¶
type Listeners ¶
type Listeners struct {
// contains filtered or unexported fields
}
func NewListeners ¶
func (*Listeners) AddListener ¶
func (l *Listeners) AddListener(listener ListenerModule)
type LoopingType ¶
type LoopingType int
const ( LoopingTypeOff LoopingType = iota LoopingTypeRepeatSong LoopingTypeRepeatQueue )
func (LoopingType) String ¶
func (t LoopingType) String() string
type MusicHistory ¶
type MusicHistory struct {
// contains filtered or unexported fields
}
func NewHistory ¶
func NewHistory() *MusicHistory
func (*MusicHistory) Last ¶
func (h *MusicHistory) Last() lavalink.AudioTrack
func (*MusicHistory) Len ¶
func (h *MusicHistory) Len() int
func (*MusicHistory) Push ¶
func (h *MusicHistory) Push(tracks ...lavalink.AudioTrack)
func (*MusicHistory) Tracks ¶
func (h *MusicHistory) Tracks() []lavalink.AudioTrack
type MusicPlayer ¶
type MusicPlayer struct { lavalink.Player Bot *Bot Type PlayerType Queue *MusicQueue History *MusicHistory SkipVotes map[snowflake.Snowflake]struct{} DisconnectContext context.Context DisconnectCancel context.CancelFunc }
func (*MusicPlayer) CancelDisconnect ¶
func (p *MusicPlayer) CancelDisconnect()
func (*MusicPlayer) OnPlayerPause ¶
func (p *MusicPlayer) OnPlayerPause(player lavalink.Player)
func (*MusicPlayer) OnPlayerResume ¶
func (p *MusicPlayer) OnPlayerResume(player lavalink.Player)
func (*MusicPlayer) OnPlayerUpdate ¶
func (p *MusicPlayer) OnPlayerUpdate(player lavalink.Player, state lavalink.PlayerState)
func (*MusicPlayer) OnTrackEnd ¶
func (p *MusicPlayer) OnTrackEnd(player lavalink.Player, track lavalink.AudioTrack, endReason lavalink.AudioTrackEndReason)
func (*MusicPlayer) OnTrackException ¶
func (p *MusicPlayer) OnTrackException(player lavalink.Player, track lavalink.AudioTrack, exception lavalink.FriendlyException)
func (*MusicPlayer) OnTrackStart ¶
func (p *MusicPlayer) OnTrackStart(player lavalink.Player, track lavalink.AudioTrack)
func (*MusicPlayer) OnTrackStuck ¶
func (p *MusicPlayer) OnTrackStuck(player lavalink.Player, track lavalink.AudioTrack, thresholdMs lavalink.Duration)
func (*MusicPlayer) OnWebSocketClosed ¶
func (*MusicPlayer) PlanDisconnect ¶
func (p *MusicPlayer) PlanDisconnect()
type MusicPlayerMap ¶
type MusicPlayerMap struct {
// contains filtered or unexported fields
}
func NewMusicPlayerMap ¶
func NewMusicPlayerMap(bot *Bot) *MusicPlayerMap
func (*MusicPlayerMap) Add ¶
func (b *MusicPlayerMap) Add(player *MusicPlayer)
func (*MusicPlayerMap) All ¶
func (b *MusicPlayerMap) All() []*MusicPlayer
func (*MusicPlayerMap) Delete ¶
func (b *MusicPlayerMap) Delete(guildID snowflake.Snowflake)
func (*MusicPlayerMap) Get ¶
func (b *MusicPlayerMap) Get(guildID snowflake.Snowflake) *MusicPlayer
func (*MusicPlayerMap) Len ¶
func (b *MusicPlayerMap) Len() int
func (*MusicPlayerMap) New ¶
func (b *MusicPlayerMap) New(guildID snowflake.Snowflake, playerType PlayerType, loopingType LoopingType) *MusicPlayer
type MusicQueue ¶
type MusicQueue struct {
// contains filtered or unexported fields
}
func NewMusicQueue ¶
func NewMusicQueue(queueType LoopingType) *MusicQueue
func (*MusicQueue) Clear ¶
func (q *MusicQueue) Clear()
func (*MusicQueue) Get ¶
func (q *MusicQueue) Get(index int) lavalink.AudioTrack
func (*MusicQueue) Len ¶
func (q *MusicQueue) Len() int
func (*MusicQueue) LoopingType ¶
func (q *MusicQueue) LoopingType() LoopingType
func (*MusicQueue) Pop ¶
func (q *MusicQueue) Pop() lavalink.AudioTrack
func (*MusicQueue) Push ¶
func (q *MusicQueue) Push(tracks ...lavalink.AudioTrack)
func (*MusicQueue) Remove ¶
func (q *MusicQueue) Remove(index ...int)
func (*MusicQueue) SetType ¶
func (q *MusicQueue) SetType(loopingType LoopingType)
func (*MusicQueue) Shuffle ¶
func (q *MusicQueue) Shuffle()
func (*MusicQueue) Tracks ¶
func (q *MusicQueue) Tracks() []lavalink.AudioTrack
Click to show internal directories.
Click to hide internal directories.