Skip to content

feat: nowplaying permanente con botones mejorados y cola ordenable (beta)#36

Merged
Hitomatito merged 1 commit into
mainfrom
issue-17-nowplaying-buttons
Jun 14, 2026
Merged

feat: nowplaying permanente con botones mejorados y cola ordenable (beta)#36
Hitomatito merged 1 commit into
mainfrom
issue-17-nowplaying-buttons

Conversation

@Hitomatito

Copy link
Copy Markdown
Owner

Esta solicitud de extracción actualiza la configuración de Docker Compose y Lavalink para mejorar la conectividad y la monitorización del estado del servicio, así como para simplificar la configuración de los proveedores de búsqueda. Los principales cambios afectan a la forma en que se conecta y monitoriza el servicio Lavalink, cómo se conecta el bot a Lavalink y qué proveedores de búsqueda están habilitados.

Docker Compose y Redes:

  • Se modificó el servicio lavalink en docker-compose.yml para usar network_mode: host y se eliminó la asignación de ports, lo que permite que Lavalink se conecte directamente a la red del host.

  • Se añadió una comprobación de estado al servicio lavalink para monitorizar su estado mediante una solicitud HTTP.

  • Se actualizó la variable de entorno LAVALINK_HOST del servicio del bot para usar la IP de la puerta de enlace de la red del host (172.18.0.1) en lugar del nombre del servicio, lo que garantiza la conectividad con Lavalink al usar la red del host.

Proveedores de búsqueda de Lavalink:

  • Se simplificó la lista lavasrc.providers en lavalink/application.yml eliminando los proveedores de búsqueda ISRC, SoundCloud y Spotify, dejando habilitada únicamente la búsqueda genérica de YouTube.

…eta)

- NowPlaying se envía automáticamente después de /play y /add
- Sin timeout en botones (permanecen activos siempre)
- Botón 🔗 Abrir con URL de la canción actual
- Barra de progreso se actualiza cada 5s via background task
- Cache de detalles Spotify para evitar rate-limiting
- Botón 📋 Beta para reordenar cola con modal + vista previa numerada
- Removidos providers ISRC/scsearch/spsearch de Lavalink
- Healthcheck agregado a Lavalink en docker-compose
- NodeDisconnectedEvent/NodeConnectedEvent listeners
- Limpieza de estado al salir del servidor
Copilot AI review requested due to automatic review settings June 14, 2026 07:56
@Hitomatito Hitomatito merged commit f5cd73e into main Jun 14, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Este PR mezcla cambios de infraestructura (Docker Compose/Lavalink) con cambios grandes en el cog de música para habilitar un /nowplaying “permanente” con botones interactivos, historial y refresco automático del embed.

Changes:

  • Ajusta la conectividad y healthcheck de Lavalink en docker-compose.yml (host networking + healthcheck) y cambia cómo el bot resuelve el host de Lavalink.
  • Simplifica los lavasrc.providers en lavalink/application.yml para usar solo ytsearch.
  • Implementa una nueva UI de Now Playing con botones (pause/skip/stop/loop/prev/shuffle), modal para mover canciones en la cola, historial por guild y un task periódico de actualización.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.

File Description
lavalink/application.yml Reduce proveedores de búsqueda de LavaSrc a ytsearch.
docker-compose.yml Cambia Lavalink a network_mode: host, agrega healthcheck y ajusta LAVALINK_HOST del bot.
cogs/music.py Agrega vista persistente de nowplaying con controles, historial, reorder beta y auto-refresh.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docker-compose.yml
Comment on lines 26 to 30
environment:
BOT_TOKEN: ${BOT_TOKEN:?set BOT_TOKEN in .env}
LAVALINK_HOST: lavalink
LAVALINK_HOST: 172.18.0.1
LAVALINK_PORT: 2333
LAVALINK_PASSWORD: ${LAVALINK_PASSWORD:?set LAVALINK_PASSWORD in .env}
Comment thread cogs/music.py
Comment on lines +222 to +227
async def _edit(self, interaction: discord.Interaction, embed: discord.Embed):
if interaction.response.is_done():
await interaction.edit_original_response(embed=embed, view=self)
else:
await interaction.response.edit_message(embed=embed, view=self)

Comment thread cogs/music.py
Comment on lines +249 to +253
elif child.style == discord.ButtonStyle.url:
track = self.player.current
if track and track.uri:
child._url = track.uri
continue
Comment thread cogs/music.py
Comment on lines +579 to +588
spotify_details: dict | None = None
if (track.uri or "").startswith("https://open.spotify.com/track/"):
parsed = parse_spotify_url(track.uri)
if parsed and SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET:
try:
spotify_details = await get_track_details(
parsed[1], SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET
)
except Exception:
pass
Comment thread cogs/music.py
Comment on lines +171 to +174
async def on_submit(self, interaction: discord.Interaction):
queue = self.player.queue
if not queue:
return await interaction.response.send_message("La cola está vacía.", ephemeral=True)
Comment thread cogs/music.py
Comment on lines +1991 to 1994
@app_commands.command(name="nowplaying", description="Muestra la canción actual con controles interactivos")
async def nowplaying(self, interaction: discord.Interaction):
"""Ver canción actual"""
"""Ver canción actual con botones de control"""
try:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants