Documentation ¶
Index ¶
- Constants
- func GenerateAddedSongEmbed(song *voice.Song, member *discordgo.Member) *discordgo.MessageEmbed
- func GenerateAddingSongEmbed(input string, member *discordgo.Member) *discordgo.MessageEmbed
- func GenerateAskAddPlaylistEmbed(songs []*voice.Song, requestor *discordgo.Member) *discordgo.MessageEmbed
- func GenerateFailedToAddSongEmbed(input string, member *discordgo.Member) *discordgo.MessageEmbed
- func GenerateFailedToFindSong(input string, member *discordgo.Member) *discordgo.MessageEmbed
- type DiscordResponseHandler
- func (h *DiscordResponseHandler) CreateFollowupMessage(session SessionService, interaction *discordgo.Interaction, ...) error
- func (h *DiscordResponseHandler) Respond(session SessionService, interaction *discordgo.Interaction, ...) error
- func (h *DiscordResponseHandler) RespondWithMessage(session SessionService, interaction *discordgo.Interaction, message string) error
- type DiscordSessionService
- type GuildID
- type InMemoryInteractionStorage
- type InteractionHandler
- func (handler *InteractionHandler) AddSongOrPlaylist(s *discordgo.Session, ic *discordgo.InteractionCreate)
- func (handler *InteractionHandler) CheckVoiceChannelsPresence()
- func (handler *InteractionHandler) GetPlayingSong(s *discordgo.Session, ic *discordgo.InteractionCreate, ...)
- func (handler *InteractionHandler) GuildCreate(s *discordgo.Session, event *discordgo.GuildCreate)
- func (handler *InteractionHandler) GuildDelete(s *discordgo.Session, event *discordgo.GuildDelete)
- func (handler *InteractionHandler) ListPlaylist(s *discordgo.Session, ic *discordgo.InteractionCreate, ...)
- func (handler *InteractionHandler) PlaySong(s *discordgo.Session, ic *discordgo.InteractionCreate, ...)
- func (handler *InteractionHandler) Ready(s *discordgo.Session, event *discordgo.Ready)
- func (handler *InteractionHandler) RegisterEventHandlers(s *discordgo.Session)
- func (handler *InteractionHandler) RemoveSong(s *discordgo.Session, ic *discordgo.InteractionCreate, ...)
- func (handler *InteractionHandler) SkipSong(s *discordgo.Session, ic *discordgo.InteractionCreate, ...)
- func (handler *InteractionHandler) StopPlaying(s *discordgo.Session, ic *discordgo.InteractionCreate, ...)
- func (handler *InteractionHandler) WithLogger(l *zap.Logger) *InteractionHandler
- type InteractionStorage
- type ResponseHandler
- type SessionService
- type SlashCommandRouter
- func (ch *SlashCommandRouter) AddSongOrPlaylistHandler(h func(*discordgo.Session, *discordgo.InteractionCreate)) *SlashCommandRouter
- func (ch *SlashCommandRouter) GetCommandHandlers() map[string]func(*discordgo.Session, *discordgo.InteractionCreate)
- func (ch *SlashCommandRouter) GetComponentHandlers() map[string]func(*discordgo.Session, *discordgo.InteractionCreate)
- func (ch *SlashCommandRouter) GetSlashCommands() []*discordgo.ApplicationCommand
- func (ch *SlashCommandRouter) ListHandler(h func(*discordgo.Session, *discordgo.InteractionCreate, ...)) *SlashCommandRouter
- func (ch *SlashCommandRouter) PlayHandler(h func(*discordgo.Session, *discordgo.InteractionCreate, ...)) *SlashCommandRouter
- func (ch *SlashCommandRouter) PlayingNowHandler(h func(*discordgo.Session, *discordgo.InteractionCreate, ...)) *SlashCommandRouter
- func (ch *SlashCommandRouter) RemoveHandler(h func(*discordgo.Session, *discordgo.InteractionCreate, ...)) *SlashCommandRouter
- func (ch *SlashCommandRouter) SkipHandler(h func(*discordgo.Session, *discordgo.InteractionCreate, ...)) *SlashCommandRouter
- func (ch *SlashCommandRouter) StopHandler(h func(*discordgo.Session, *discordgo.InteractionCreate, ...)) *SlashCommandRouter
- type SongLookuper
Constants ¶
const ( ErrorMessageNotInVoiceChannel = "No estas en un canal de voz down. Tenes que unirte a uno para reproducir musica loco" ErrorMessageFailedToAddSong = "No se pudo agregar la cancion kkkk" )
Variables ¶
This section is empty.
Functions ¶
func GenerateAddedSongEmbed ¶
func GenerateAddingSongEmbed ¶
func GenerateAddingSongEmbed(input string, member *discordgo.Member) *discordgo.MessageEmbed
func GenerateFailedToAddSongEmbed ¶
func GenerateFailedToAddSongEmbed(input string, member *discordgo.Member) *discordgo.MessageEmbed
func GenerateFailedToFindSong ¶
func GenerateFailedToFindSong(input string, member *discordgo.Member) *discordgo.MessageEmbed
Types ¶
type DiscordResponseHandler ¶
type DiscordResponseHandler struct {
// contains filtered or unexported fields
}
DiscordResponseHandler implementa la interfaz ResponseHandler para manejar respuestas a interacciones de Discord.
func NewDiscordResponseHandler ¶
func NewDiscordResponseHandler(logger *zap.Logger) *DiscordResponseHandler
NewDiscordResponseHandler crea una nueva instancia de DiscordResponseHandler.
func (*DiscordResponseHandler) CreateFollowupMessage ¶
func (h *DiscordResponseHandler) CreateFollowupMessage(session SessionService, interaction *discordgo.Interaction, params discordgo.WebhookParams) error
CreateFollowupMessage crea un mensaje de seguimiento para una interacción de Discord.
func (*DiscordResponseHandler) Respond ¶
func (h *DiscordResponseHandler) Respond(session SessionService, interaction *discordgo.Interaction, response discordgo.InteractionResponse) error
Respond responde a una interacción de Discord con la respuesta proporcionada.
func (*DiscordResponseHandler) RespondWithMessage ¶
func (h *DiscordResponseHandler) RespondWithMessage(session SessionService, interaction *discordgo.Interaction, message string) error
RespondWithMessage responde a una interacción de Discord con un mensaje de texto.
type DiscordSessionService ¶
type DiscordSessionService struct {
// contains filtered or unexported fields
}
DiscordSessionService es una implementación real de SessionService que envuelve discordgo.Session.
func NewSessionService ¶
func NewSessionService(session *discordgo.Session) *DiscordSessionService
func (*DiscordSessionService) FollowupMessageCreate ¶
func (s *DiscordSessionService) FollowupMessageCreate(i *discordgo.Interaction, wait bool, params *discordgo.WebhookParams) (*discordgo.Message, error)
func (*DiscordSessionService) InteractionRespond ¶
func (s *DiscordSessionService) InteractionRespond(i *discordgo.Interaction, r *discordgo.InteractionResponse) error
type InMemoryInteractionStorage ¶
type InMemoryInteractionStorage struct {
// contains filtered or unexported fields
}
InMemoryInteractionStorage es una estructura de almacenamiento en memoria para interacciones.
func NewInMemoryStorage ¶
func NewInMemoryStorage() *InMemoryInteractionStorage
NewInMemoryStorage crea una nueva instancia de InMemoryInteractionStorage con un mapa inicializado.
func (*InMemoryInteractionStorage) DeleteSongList ¶
func (s *InMemoryInteractionStorage) DeleteSongList(channelID string)
DeleteSongList elimina la lista de canciones asociada al canal identificado por channelID.
func (*InMemoryInteractionStorage) GetSongList ¶
func (s *InMemoryInteractionStorage) GetSongList(channelID string) []*voice.Song
GetSongList retorna la lista de canciones asociada al canal identificado por channelID.
func (*InMemoryInteractionStorage) SaveSongList ¶
func (s *InMemoryInteractionStorage) SaveSongList(channelID string, list []*voice.Song)
SaveSongList guarda una lista de canciones en el canal identificado por channelID.
type InteractionHandler ¶
type InteractionHandler struct {
// contains filtered or unexported fields
}
InteractionHandler maneja las interacciones de Discord.
func NewInteractionHandler ¶
func NewInteractionHandler(ctx context.Context, discordToken string, responseHandler ResponseHandler, session SessionService, songLookuper SongLookuper, storage InteractionStorage, cfg *config.Config) *InteractionHandler
NewInteractionHandler crea una nueva instancia de InteractionHandler.
func (*InteractionHandler) AddSongOrPlaylist ¶
func (handler *InteractionHandler) AddSongOrPlaylist(s *discordgo.Session, ic *discordgo.InteractionCreate)
AddSongOrPlaylist maneja la adición de una canción o lista de reproducción.
func (*InteractionHandler) CheckVoiceChannelsPresence ¶
func (handler *InteractionHandler) CheckVoiceChannelsPresence()
CheckVoiceChannelsPresence verifica la presencia de usuarios en los canales de voz y desconecta al bot si no hay usuarios presentes.
func (*InteractionHandler) GetPlayingSong ¶
func (handler *InteractionHandler) GetPlayingSong(s *discordgo.Session, ic *discordgo.InteractionCreate, opt *discordgo.ApplicationCommandInteractionDataOption)
GetPlayingSong obtiene la canción que se está reproduciendo actualmente.
func (*InteractionHandler) GuildCreate ¶
func (handler *InteractionHandler) GuildCreate(s *discordgo.Session, event *discordgo.GuildCreate)
GuildCreate se llama cuando el bot se une a un nuevo servidor.
func (*InteractionHandler) GuildDelete ¶
func (handler *InteractionHandler) GuildDelete(s *discordgo.Session, event *discordgo.GuildDelete)
GuildDelete se llama cuando el bot es removido de un servidor.
func (*InteractionHandler) ListPlaylist ¶
func (handler *InteractionHandler) ListPlaylist(s *discordgo.Session, ic *discordgo.InteractionCreate, acido *discordgo.ApplicationCommandInteractionDataOption)
ListPlaylist lista las canciones en la lista de reproducción actual.
func (*InteractionHandler) PlaySong ¶
func (handler *InteractionHandler) PlaySong(s *discordgo.Session, ic *discordgo.InteractionCreate, opt *discordgo.ApplicationCommandInteractionDataOption)
PlaySong maneja el comando de reproducción de una canción.
func (*InteractionHandler) Ready ¶
func (handler *InteractionHandler) Ready(s *discordgo.Session, event *discordgo.Ready)
Ready se llama cuando el bot está listo para recibir interacciones.
func (*InteractionHandler) RegisterEventHandlers ¶
func (handler *InteractionHandler) RegisterEventHandlers(s *discordgo.Session)
RegisterEventHandlers registra los manejadores de eventos en la sesión de Discord.
func (*InteractionHandler) RemoveSong ¶
func (handler *InteractionHandler) RemoveSong(s *discordgo.Session, ic *discordgo.InteractionCreate, opt *discordgo.ApplicationCommandInteractionDataOption)
RemoveSong elimina una canción de la lista de reproducción.
func (*InteractionHandler) SkipSong ¶
func (handler *InteractionHandler) SkipSong(s *discordgo.Session, ic *discordgo.InteractionCreate, acido *discordgo.ApplicationCommandInteractionDataOption)
SkipSong salta la canción actualmente en reproducción.
func (*InteractionHandler) StopPlaying ¶
func (handler *InteractionHandler) StopPlaying(s *discordgo.Session, ic *discordgo.InteractionCreate, acido *discordgo.ApplicationCommandInteractionDataOption)
StopPlaying detiene la reproducción de música.
func (*InteractionHandler) WithLogger ¶
func (handler *InteractionHandler) WithLogger(l *zap.Logger) *InteractionHandler
WithLogger establece el logger para InteractionHandler.
type InteractionStorage ¶
type InteractionStorage interface { SaveSongList(channelID string, list []*voice.Song) GetSongList(channelID string) []*voice.Song DeleteSongList(channelID string) }
InteractionStorage define la interfaz para el almacenamiento de interacciones.
type ResponseHandler ¶
type ResponseHandler interface { Respond(session SessionService, interaction *discordgo.Interaction, response discordgo.InteractionResponse) error RespondWithMessage(session SessionService, interaction *discordgo.Interaction, message string) error CreateFollowupMessage(session SessionService, interaction *discordgo.Interaction, params discordgo.WebhookParams) error }
ResponseHandler define la interfaz para manejar respuestas a interacciones de Discord.
type SessionService ¶
type SessionService interface { InteractionRespond(i *discordgo.Interaction, r *discordgo.InteractionResponse) error FollowupMessageCreate(i *discordgo.Interaction, wait bool, params *discordgo.WebhookParams) (*discordgo.Message, error) }
SessionService define la interfaz para los métodos de discordgo.Session que necesitamos.
type SlashCommandRouter ¶
type SlashCommandRouter struct {
// contains filtered or unexported fields
}
SlashCommandRouter enruta los comandos de barra oblicua en Discord.
func NewSlashCommandRouter ¶
func NewSlashCommandRouter(commandPrefix string) *SlashCommandRouter
NewSlashCommandRouter crea una nueva instancia de SlashCommandRouter con el prefijo de comando especificado.
func (*SlashCommandRouter) AddSongOrPlaylistHandler ¶
func (ch *SlashCommandRouter) AddSongOrPlaylistHandler(h func(*discordgo.Session, *discordgo.InteractionCreate)) *SlashCommandRouter
AddSongOrPlaylistHandler establece el manejador para el comando "add_song_playlist".
func (*SlashCommandRouter) GetCommandHandlers ¶
func (ch *SlashCommandRouter) GetCommandHandlers() map[string]func(*discordgo.Session, *discordgo.InteractionCreate)
GetCommandHandlers devuelve los manejadores de los comandos de barra oblicua.
func (*SlashCommandRouter) GetComponentHandlers ¶
func (ch *SlashCommandRouter) GetComponentHandlers() map[string]func(*discordgo.Session, *discordgo.InteractionCreate)
GetComponentHandlers devuelve los manejadores de los componentes.
func (*SlashCommandRouter) GetSlashCommands ¶
func (ch *SlashCommandRouter) GetSlashCommands() []*discordgo.ApplicationCommand
GetSlashCommands devuelve los comandos de barra oblicua.
func (*SlashCommandRouter) ListHandler ¶
func (ch *SlashCommandRouter) ListHandler(h func(*discordgo.Session, *discordgo.InteractionCreate, *discordgo.ApplicationCommandInteractionDataOption)) *SlashCommandRouter
ListHandler establece el manejador para el comando "list".
func (*SlashCommandRouter) PlayHandler ¶
func (ch *SlashCommandRouter) PlayHandler(h func(*discordgo.Session, *discordgo.InteractionCreate, *discordgo.ApplicationCommandInteractionDataOption)) *SlashCommandRouter
PlayHandler establece el manejador para el comando "play".
func (*SlashCommandRouter) PlayingNowHandler ¶
func (ch *SlashCommandRouter) PlayingNowHandler(h func(*discordgo.Session, *discordgo.InteractionCreate, *discordgo.ApplicationCommandInteractionDataOption)) *SlashCommandRouter
PlayingNowHandler establece el manejador para el comando "playing".
func (*SlashCommandRouter) RemoveHandler ¶
func (ch *SlashCommandRouter) RemoveHandler(h func(*discordgo.Session, *discordgo.InteractionCreate, *discordgo.ApplicationCommandInteractionDataOption)) *SlashCommandRouter
RemoveHandler establece el manejador para el comando "remove".
func (*SlashCommandRouter) SkipHandler ¶
func (ch *SlashCommandRouter) SkipHandler(h func(*discordgo.Session, *discordgo.InteractionCreate, *discordgo.ApplicationCommandInteractionDataOption)) *SlashCommandRouter
SkipHandler establece el manejador para el comando "skip".
func (*SlashCommandRouter) StopHandler ¶
func (ch *SlashCommandRouter) StopHandler(h func(*discordgo.Session, *discordgo.InteractionCreate, *discordgo.ApplicationCommandInteractionDataOption)) *SlashCommandRouter
StopHandler establece el manejador para el comando "stop".