Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Portero

Bot de Discord que automatiza el acceso a canales de voz temporales. Cuando alguien entra al canal "Puerta", el bot le pregunta si quiere solicitar acceso a algún canal; si confirma, le muestra en privado la lista de canales disponibles y, al elegir uno, se conecta a ese canal de voz y avisa por audio (TTS) que alguien quiere entrar.

Características

  • Detecta automáticamente cuando alguien entra al canal "Puerta".
  • Confirmación previa (Sí/No) para evitar solicitudes por accidente.
  • Menú de selección de canal privado (solo lo ve quien lo solicitó).
  • Aviso por voz (TTS) en español al canal elegido.
  • Muestra solo los canales de voz que el usuario puede ver, y vuelve a validarlos al momento de elegir.
  • Las solicitudes simultáneas en un mismo servidor hacen fila en vez de fallar.

Requisitos

Instalación

  1. Clona el repositorio:

    git clone https://github.com/AlejandroOsorto/Portero.git
    cd Portero
  2. Crea y activa un entorno virtual:

    python -m venv venv
    
    # Windows (PowerShell)
    venv\Scripts\Activate.ps1
    
    # macOS / Linux
    source venv/bin/activate
  3. Instala las dependencias:

    pip install -r requirements.txt
  4. Copia .env.ejemplo a .env y completa tus propios valores:

    cp .env.ejemplo .env
  5. Configura el bot en el Discord Developer Portal:

    • En Bot, no hace falta activar ningún intent privilegiado: el bot solo usa los intents por defecto.
    • En OAuth2 > URL Generator, genera un link de invitación con el scope bot y los permisos: View Channels, Connect, Speak, Send Messages, Embed Links.
    • Invita el bot a tu servidor y dale permisos de Conectar y Hablar en la categoría de canales temporales.
  6. Ejecuta el bot:

    python main.py

Variables de entorno

Variable Descripción
DISCORD_TOKEN Token del bot (Developer Portal > Bot > Reset Token)
PUERTA_CHANNEL_ID ID del canal de voz "Puerta"
CATEGORY_ID ID de la categoría que contiene los canales de voz temporales (opcional; si se omite se usan todos los canales de voz del servidor)
TTS_VOICE Voz usada para el aviso por TTS (opcional, por defecto es-ES-AlvaroNeural)
EXCLUDED_CHANNEL_IDS IDs de canales a excluir siempre, separados por coma (opcional)

Para obtener los IDs: activa el Modo de desarrollador en Discord (Configuración > Avanzado), luego clic derecho sobre el canal o categoría > Copiar ID.

Tests

No hacen falta token, red ni ffmpeg: los tests usan dobles de prueba para los objetos de Discord.

python -m unittest discover -s tests -t .

Se corren solos en cada Pull Request. En TESTING.md está el detalle: cómo correr un test suelto, qué cubre cada archivo y cómo agregar casos nuevos.

Notas

  • El .env nunca debe subirse al repositorio — ya está excluido en .gitignore.
  • Si el bot se cierra por error de permisos, revisa que tenga acceso de Conectar y Hablar en el canal específico al que intenta unirse.
  • Si el bot avisa que no pudo reproducir el aviso, casi siempre es que ffmpeg no está en el PATH o que falta el permiso de Hablar en ese canal.
  • La carpeta tts_audio/ se limpia sola al arrancar y después de cada aviso; no hace falta tocarla.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages