diff --git a/README.md b/README.md index 9c945e8..8e326ba 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,11 @@ Si querés probar el bot en tu servidor de Discord, acá te dejo la invitación [Invitación del bot a tu server](https://discord.com/oauth2/authorize?client_id=987850036866084974) +## Demo +Aca tenes un video corto mostrando como se levanta toda la aplicación localmente con Docker Compose, y como funciona el bot en un servidor de Discord: + +https://github.com/user-attachments/assets/a46a2a20-2ac0-48bb-923e-66c1a10d7ce7 + ## 🚀 Instalación ### ⚙️ Configuración del bot en el portal de desarrolladores de Discord @@ -65,7 +70,7 @@ Para poner a andar el bot y sus microservicios, vamos a usar Docker Compose. Est Una vez que Docker construya las imágenes, podés iniciar todos los servicios con: ```bash - docker-compose --env-file .env up + docker compose --env-file .env up ``` Esto levantará la siguiente arquitectura de microservicios, pensada para ser escalable y robusta: @@ -91,12 +96,16 @@ Para poner a andar el bot y sus microservicios, vamos a usar Docker Compose. Est Una vez que el bot esté andando, podés interactuar con él en tu servidor de Discord usando estos comandos básicos: -- `/seso play `: Reproduce una canción en el canal de voz. -- `/seso stop`: Detiene la reproducción y desconecta al bot. -- `/seso list`: Muestra la lista de reproducción. -- `/seso skip`: Salta a la siguiente canción. -- `/seso remove `: Elimina una canción de la lista. -- `/seso playing`: Muestra la canción que está sonando. +> ⚠️ **Nota:** Aca tenés que poner el prefijo que configuraste en el archivo `.env` (ej: `/bot`). + +- `/ play `: Reproduce una canción en el canal de voz. +- `/ stop`: Detiene la reproducción y desconecta al bot. +- `/ list`: Muestra la lista de reproducción. +- `/ skip`: Salta a la siguiente canción. +- `/ remove `: Elimina una canción de la lista. +- `/ playing`: Muestra la canción que está sonando. +- `/ pause`: Pausa la canción actual. +- `/ resume`: Reanuda la canción pausada. ## 🤝 Contribuciones diff --git a/build_and_push.sh b/build_and_push.sh index 6aa770f..d10c144 100644 --- a/build_and_push.sh +++ b/build_and_push.sh @@ -5,25 +5,18 @@ set -e DOCKER_HUB_USERNAME="tomasvilte" VERSION_BOT="1.2.0" VERSION_AUDIO_SERVICE="1.1.0" +PLATFORMS="linux/amd64,linux/arm64" echo "Introduce tu contraseña de Docker Hub:" read -s DOCKER_HUB_PASSWORD -echo "Construyendo la imagen para audio_processor..." -cd audio_processor/ -docker build -t ${DOCKER_HUB_USERNAME}/audio_processor:${VERSION_AUDIO_SERVICE} --build-arg ENV=local -f Dockerfile . -cd .. - -echo "Construyendo la imagen para bot..." -cd butakero_bot/ -docker build -t ${DOCKER_HUB_USERNAME}/butakero_bot:${VERSION_BOT} --build-arg ENV=bot_local -f Dockerfile . - -echo "Construyendo la imagen del bot para debug..." -docker build -t ${DOCKER_HUB_USERNAME}/butakero_bot:${VERSION_BOT}-debug --build-arg ENV=bot_local -f Dockerfile.debug . -cd .. +echo "Configurando Docker buildx para construcción multi-arquitectura..." +if ! docker buildx ls | grep -q "multiarch-builder"; then + echo "Creando nuevo builder multi-arquitectura..." + docker buildx create --name multiarch-builder --driver docker-container --bootstrap +fi -echo "Verificando las imágenes construidas..." -docker images | grep ${DOCKER_HUB_USERNAME} +docker buildx use multiarch-builder echo "Iniciando sesión en Docker Hub..." if ! echo "${DOCKER_HUB_PASSWORD}" | docker login -u "${DOCKER_HUB_USERNAME}" --password-stdin; then @@ -31,16 +24,40 @@ if ! echo "${DOCKER_HUB_PASSWORD}" | docker login -u "${DOCKER_HUB_USERNAME}" -- exit 1 fi -for image in \ - "audio_processor:${VERSION_AUDIO_SERVICE}" \ - "butakero_bot:${VERSION_BOT}" \ - "butakero_bot:${VERSION_BOT}-debug" -do - echo "Subiendo ${DOCKER_HUB_USERNAME}/${image} a Docker Hub..." - if ! docker push "${DOCKER_HUB_USERNAME}/${image}"; then - echo "Error al subir ${image}" - exit 1 - fi -done +echo "Construyendo y subiendo la imagen para audio_processor (${PLATFORMS})..." +cd audio_processor/ +docker buildx build \ + --platform "${PLATFORMS}" \ + --build-arg ENV=local \ + -t "${DOCKER_HUB_USERNAME}/audio_processor:${VERSION_AUDIO_SERVICE}" \ + -f Dockerfile \ + --push \ + . + +echo "Construyendo y subiendo la imagen para bot (${PLATFORMS})..." +cd ../ +cd butakero_bot/ +docker buildx build \ + --platform "${PLATFORMS}" \ + --build-arg ENV=bot_local \ + -t "${DOCKER_HUB_USERNAME}/butakero_bot:${VERSION_BOT}" \ + -f Dockerfile \ + --push \ + . + +echo "Construyendo y subiendo la imagen del bot para debug (${PLATFORMS})..." +docker buildx build \ + --platform "${PLATFORMS}" \ + --build-arg ENV=bot_local \ + -t "${DOCKER_HUB_USERNAME}/butakero_bot:${VERSION_BOT}-debug" \ + -f Dockerfile.debug \ + --push \ + . + +echo "Verificando las imágenes subidas..." +echo "Las siguientes imágenes fueron construidas y subidas para ${PLATFORMS}:" +echo "- ${DOCKER_HUB_USERNAME}/audio_processor:${VERSION_AUDIO_SERVICE}" +echo "- ${DOCKER_HUB_USERNAME}/butakero_bot:${VERSION_BOT}" +echo "- ${DOCKER_HUB_USERNAME}/butakero_bot:${VERSION_BOT}-debug" echo "¡Proceso completado!" \ No newline at end of file diff --git a/docs/README.MD b/docs/README.MD index c4c30b8..f72920e 100644 --- a/docs/README.MD +++ b/docs/README.MD @@ -86,7 +86,7 @@ El despliegue con Docker Compose levanta los siguientes servicios: ```env YOUTUBE_API_KEY=TU_API_KEY_AQUI DISCORD_TOKEN=TU_DISCORD_TOKEN_AQUI -COMMAND_PREFIX=bot_music # El prefijo que el bot va a escuchar en Discord (ej: !play) +COMMAND_PREFIX=bot_music # El prefijo que el bot va a escuchar en Discord (ej: /play) ``` #### Obtener YouTube API Key diff --git a/docs/demo-bot.mp4 b/docs/demo-bot.mp4 deleted file mode 100644 index de449e1..0000000 Binary files a/docs/demo-bot.mp4 and /dev/null differ