Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var LyricsCommand = core.Command{ Name: "letra", Description: "Mostra a letra da música", Options: discord.CommandOptions{&discord.StringOption{ OptionName: "nome", Description: "nome da música", }}, Handler: func(ctx *core.CommandContext) { player, query, replaced := music.GetPlayer(ctx.GuildID), ctx.Argument(0).String(), false if query == "" { if player != nil && player.Current != nil { if strings.Contains(player.Current.Title, "-") { query = player.Current.Title } else { query, replaced = utils.Fmt("%s - %s", player.Current.Author, player.Current.Title), true } } else { ctx.Reply(emojis.Cry, "Não há nada tocando no momento, e você não passou nenhuam música para obter a letra.") return } } embed := utils.NewEmbed().Color(0xF0FF00).Description("%s Obtendo resultados...", emojis.AnimatedStaff) ctx.Reply(embed) result, err := gonius.SearchSong(query) if err != nil { if err != gonius.ErrNotFound { ctx.Stacktrace(err) return } if replaced && player.Current != nil { result, err = gonius.SearchSong(player.Current.Title) } } if err != nil { if err == gonius.ErrNotFound { ctx.Reply(embed.Color(0xF93A2F).Description("%s Não consegui achar a letra dessa música.", emojis.Cry)) } else { ctx.Stacktrace(err) } return } entry := result[0] ctx.Reply(embed.Description("%s Carregando letra...", emojis.AnimatedStaff)) lyrics, err := entry.Lyrics() if err != nil { ctx.Stacktrace(err) return } if len(lyrics) > 4096 { ctx.Reply(embed.Color(0xF93A2F).Description("%s A letra dessa música é muito grande.", emojis.Cry)) return } ctx.Reply(embed. Color(0x0099E1). Author(entry.PrimaryArtist.Name, entry.PrimaryArtist.Image). URL(entry.URL). Title(entry.Title). Description(lyrics). Thumbnail(entry.Image)) }, }
View Source
var NowplayingCommand = core.Command{ Name: "tocando", Description: "Mostra as informações dá música que estiver tocando no momento", Handler: func(ctx *core.CommandContext) { player := music.GetPlayer(ctx.GuildID) if player == nil || player.State == music.StoppedState { ctx.Ephemeral().Reply(emojis.Cry, "Não há nada tocando no momento.") return } embed := utils.NewEmbed(). Description("%s Tocando no momento: **[%s](%s)**", emojis.AnimatedHype, player.Current.Title, player.Current.URL). Thumbnail(player.Current.Thumbnail). Color(0x00FF59). Field("Autor", player.Current.Author, true). Field("Duração", utils.Fmt("%v/%v", utils.FormatTime(player.Voicy.PlaybackPosition()), utils.Is(player.Current.IsLive, "--:--", utils.FormatTime(player.Current.Duration))), true). Field("Provedor", player.Current.Provider(), true). Footer(utils.Fmt("Adicionado por %s#%s", player.Current.Requester.Username, player.Current.Requester.Discriminator), player.Current.Requester.AvatarURL()). Timestamp(player.Current.RequestedAt) if player.State == music.PausedState { embed.Color(0xB4BE10).Description("%s Pausado no momento em: [%s](%s)", emojis.Cry, player.Current.Title, player.Current.URL) } ctx.Reply(embed) }, }
View Source
var PauseCommand = core.Command{ Name: "pausar", Description: "Pausar ou despausar a música atual", Handler: func(ctx *core.CommandContext) { handleCommand(ctx) }, }
View Source
var PlayCommand = core.Command{ Name: "tocar", Description: "Sistema de músicas", Options: discord.CommandOptions{&discord.StringOption{ OptionName: "musica", Description: "Nome, ou URL de uma música ou playlist", Required: true, Autocomplete: true, }, &discord.BooleanOption{ OptionName: "embaralhar", Description: "Embaralhar as músicas da fila", }}, Handler: func(ctx *core.CommandContext) { query, shuffle := ctx.Argument(0).String(), ctx.Argument(1).Bool() state := ctx.VoiceState() if state == nil { ctx.Ephemeral().Reply(emojis.Cry, "Você não está conectado em nenhum canal de voz.") return } embed := utils.NewEmbed().Color(0xF0FF00).Description("%s Obtendo resultados para sua pesquisa...", emojis.AnimatedStaff) ctx.Reply(embed) player := music.GetOrCreatePlayer(ctx.GuildID, ctx.ChannelID, state.ChannelID) defer checkIdle(player) result, err := providers.FindSong(query, true) if err != nil { ctx.Stacktrace(err) return } if result == nil { ctx.Reply(embed.Color(0xF93A2F).Description("%s Não consegui encontrar essa música.", emojis.Cry)) return } if result.Playlist != nil { player.AddSong(ctx.Sender(), shuffle, result.Songs...) ctx.Reply(embed.Color(0x00D166). Description("%s Lista de reprodução [%s](%s) adicionada na fila", emojis.Yeah, result.Playlist.Title, result.Playlist.URL). Field("Criador", result.Playlist.Author, true). Field("Músicas", len(result.Songs), true). Field("Duração", utils.FormatTime(result.Playlist.Duration), true)) return } song := result.Songs[0] embed.Thumbnail(song.Thumbnail). Field("Autor", song.Author, true). Field("Duração", utils.Is(song.IsLive, "--:--", utils.FormatTime(song.Duration)), true). Field("Provedor", song.Provider(), true) if !song.IsLoaded() { go ctx.Reply(embed.Description("%s Carregando [%s](%s)", emojis.AnimatedStaff, song.Title, song.URL)) if err := song.Load(); err != nil { ctx.Stacktrace(err) return } } player.AddSong(ctx.Sender(), shuffle, song) ctx.Reply(embed. Color(0x00D166). Thumbnail(song.Thumbnail). Description("%s Música [%s](%s) adicionada na fila", emojis.Yeah, song.Title, song.URL)) }, AutoCompleteHandler: func(ctx *core.AutoCompleteContext) api.AutocompleteStringChoices { query := strings.ReplaceAll(ctx.Data.Options[0].Value.String(), "\"", "") if strings.TrimSpace(query) == "" { return api.AutocompleteStringChoices{} } if providers.FindByInput(query, false) != nil { return api.AutocompleteStringChoices{{ Name: query, Value: query, }} } data, err := utils.FromWebString("http://suggestqueries.google.com/complete/search?client=youtube&ds=yt&client=chrome&q=" + url.QueryEscape(query)) if err != nil { panic(err) } result := api.AutocompleteStringChoices{} for _, entry := range gjson.Get(data, "1").Array() { choice := entry.String() result = append(result, discord.StringChoice{ Name: choice, Value: choice, }) } return result }, }
View Source
var QueueCommand = core.Command{ Name: "fila", Description: "Mostra as músicas adicionadas na fila", Handler: func(ctx *core.CommandContext) { player := music.GetPlayer(ctx.GuildID) if player == nil || len(player.Queue) == 0 { ctx.Ephemeral().Reply(emojis.Cry, "Não há nada na fila no momento.") return } var finalText string var count int for _, track := range player.Queue { if count > 19 { break } count++ finalText += utils.Fmt("**%d** - [%s](%s)\n", count, track.Title, track.URL) } ctx.Reply(utils.NewEmbed(). Color(0xA652BB). Description(finalText). Footer(utils.Fmt("Mostrando %d de %d músicas", count, len(player.Queue)), ctx.Sender().AvatarURL()). Timestamp(time.Now())) }, }
View Source
var ResumeCommand = core.Command{ Name: "despausar", Description: "Pausar ou despausar a música atual", Handler: func(ctx *core.CommandContext) { handleCommand(ctx) }, }
View Source
var SeekCommand = core.Command{ Name: "seek", Description: "Alterar a posição do batidão", Options: discord.CommandOptions{&discord.StringOption{ OptionName: "posição", Description: "Posição desejada, exemplo de formatos válidos: 05:05 ou 5m5s", Required: true, }}, Handler: func(ctx *core.CommandContext) { if ctx.VoiceState() == nil { ctx.Ephemeral().Reply(emojis.Cry, "Você não está conectado em nenhum canal de voz.") return } player := music.GetPlayer(ctx.GuildID) if player == nil || player.State != music.PlayingState { ctx.Ephemeral().Reply(emojis.Cry, "Não há nada tocando no momento ou o batidão está pausado.") return } if player.Current.IsLive { ctx.Ephemeral().Reply(emojis.Cry, "Você não pode fazer isso em transmissões ao vivo.") return } duration, err := utils.ParseDuration(ctx.Argument(0).String()) if err != nil || duration < 0 || duration > player.Current.Duration { ctx.Ephemeral().Reply(emojis.Cry, "Duração inválida ou maior que a duração total da música.") return } player.Voicy.Seek(duration) ctx.Reply(emojis.OK, "Posição do batidão alterada para os minutos `%s`.", utils.FormatTime(duration)) }, }
View Source
var ShuffleCommand = core.Command{ Name: "embaralhar", Description: "Embaralhar as músicas da fila", Handler: func(ctx *core.CommandContext) { if ctx.VoiceState() == nil { ctx.Ephemeral().Reply(emojis.Cry, "Você não está conectado em nenhum canal de voz.") return } player := music.GetPlayer(ctx.GuildID) if player == nil || player.State == music.StoppedState { ctx.Ephemeral().Reply(emojis.Cry, "Não há nada tocando no momento.") return } if len(player.Queue) < 2 { ctx.Ephemeral().Reply(emojis.Cry, "Não há músicas suficientes para embaralhar na fila.") return } player.Shuffle() ctx.Reply(emojis.OK, "Músicas embaralhadas com sucesso.") }, }
View Source
var SkipCommand = core.Command{ Name: "pular", Description: "Pular a música atual", Handler: func(ctx *core.CommandContext) { if ctx.VoiceState() == nil { ctx.Ephemeral().Reply(emojis.Cry, "Você não está conectado em nenhum canal de voz.") return } player := music.GetPlayer(ctx.GuildID) if player == nil || player.State == music.StoppedState { ctx.Ephemeral().Reply(emojis.Cry, "Não há nada para pular no momento.") return } player.Skip() ctx.Reply(emojis.OK, "Música pulada com sucesso.") }, }
View Source
var StopCommand = core.Command{ Name: "parar", Description: "Parar a música atual, limpar a fila e desconectar do canal de voz.", Handler: func(ctx *core.CommandContext) { if ctx.VoiceState() == nil { ctx.Ephemeral().Reply(emojis.Cry, "Você não está conectado em nenhum canal de voz.") return } player := music.GetPlayer(ctx.GuildID) if player == nil { ctx.Ephemeral().Reply(emojis.Cry, "Não há nada tocando no momento.") return } player.Stop(false) ctx.Reply(emojis.OK, "Batidão parado com sucesso.") }, }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.