Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 16 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand All @@ -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 <nombre de la canción>`: 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 <número>`: 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`).

- `/<prefijo> play <nombre de la canción>`: Reproduce una canción en el canal de voz.
- `/<prefijo> stop`: Detiene la reproducción y desconecta al bot.
- `/<prefijo> list`: Muestra la lista de reproducción.
- `/<prefijo> skip`: Salta a la siguiente canción.
- `/<prefijo> remove <número>`: Elimina una canción de la lista.
- `/<prefijo> playing`: Muestra la canción que está sonando.
- `/<prefijo> pause`: Pausa la canción actual.
- `/<prefijo> resume`: Reanuda la canción pausada.

## 🤝 Contribuciones

Expand Down
67 changes: 42 additions & 25 deletions build_and_push.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,42 +5,59 @@ 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
echo "Error al iniciar sesión en Docker Hub"
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!"
2 changes: 1 addition & 1 deletion docs/README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Binary file removed docs/demo-bot.mp4
Binary file not shown.