Help us shape the future of Go! Take the 2026 Go Developer Survey

types

package
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2022 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const KittyBotColor = 0x4c50c1

Variables

This section is empty.

Functions

This section is empty.

Types

type AutocompleteHandler

type AutocompleteHandler func(b *Bot, p *message.Printer, e *events.AutocompleteInteractionEvent) error

type Bot

type Bot struct {
	Logger       log.Logger
	Bot          *core.Bot
	Lavalink     disgolink.Link
	MusicPlayers *MusicPlayerMap
	Paginator    *paginator.Manager
	Commands     *CommandMap
	Listeners    *Listeners
	DB           *bun.DB
	Config       Config
	Version      string
}

func (*Bot) AddPlayHistory

func (b *Bot) AddPlayHistory(userID snowflake.Snowflake, title string, query string)

func (*Bot) LoadConfig

func (b *Bot) LoadConfig() error

func (*Bot) LoadModules

func (b *Bot) LoadModules(modules []Module)

func (*Bot) LoadPlayer

func (b *Bot) LoadPlayer(guildID snowflake.Snowflake)

func (*Bot) RegisterNodes

func (b *Bot) RegisterNodes()

func (*Bot) SavePlayers

func (b *Bot) SavePlayers()

func (*Bot) SetupBot

func (b *Bot) SetupBot() (err error)

func (*Bot) SetupDatabase

func (b *Bot) SetupDatabase(shouldSyncDBTables bool) error
func (b *Bot) SetupLavalink()

func (*Bot) SetupPaginator

func (b *Bot) SetupPaginator()

func (*Bot) StartBot

func (b *Bot) StartBot() (err error)

func (*Bot) SyncCommands

func (b *Bot) SyncCommands()

type BotConfig

type BotConfig struct {
	Token      string `json:"token"`
	ShardIDs   []int  `json:"shard_ids"`
	ShardCount int    `json:"shard_count"`
}

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 := e.Member.VoiceState(); voiceState == nil || 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

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 core.Event)

type CommandsModule

type CommandsModule interface {
	Commands() []Command
}

type ComponentHandler

type ComponentHandler func(b *Bot, p *message.Printer, e *events.ComponentInteractionEvent) error

type Config

type Config struct {
	DevMode              bool                  `json:"dev_mode"`
	DevGuildIDs          []snowflake.Snowflake `json:"dev_guild_ids"`
	DevUserIDs           []snowflake.Snowflake `json:"dev_user_ids"`
	LogLevel             log.Level             `json:"log_level"`
	Bot                  BotConfig             `json:"bot"`
	Database             DatabaseConfig        `json:"database"`
	PlayHistoryCacheSize int                   `json:"play_history_cache_size"`
	Lavalink             LavalinkConfig        `json:"lavalink"`
}

type DatabaseConfig

type DatabaseConfig struct {
	Host     string `json:"host"`
	Port     string `json:"port"`
	User     string `json:"user"`
	Password string `json:"password"`
	DBName   string `json:"db_name"`
}

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 ListenerModule interface {
	OnEvent(b *Bot, event core.Event)
}

type Listeners

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

func NewListeners

func NewListeners(b *Bot) *Listeners

func (*Listeners) AddListener

func (l *Listeners) AddListener(listener ListenerModule)

func (*Listeners) OnEvent

func (l *Listeners) OnEvent(event core.Event)

type LoopingType

type LoopingType int
const (
	LoopingTypeOff LoopingType = iota
	LoopingTypeRepeatSong
	LoopingTypeRepeatQueue
)

func (LoopingType) String

func (t LoopingType) String() string

type Module

type Module interface{}

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{}
}

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 (p *MusicPlayer) OnWebSocketClosed(player lavalink.Player, code int, reason string, byRemote bool)

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) Has

func (b *MusicPlayerMap) Has(guildID snowflake.Snowflake) bool

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

type PlayerType

type PlayerType int
const (
	PlayerTypeMusic PlayerType = iota
	PlayerTypeRadio
)

Jump to

Keyboard shortcuts

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