meet bot

TypeScript

Meet Music Bot

License: MIT CI Node.js Version

Bot de música para Google Meet no Linux: microfone virtual (PulseAudio/PipeWire), Puppeteer, yt-dlp e ffmpeg para tocar áudio do YouTube na sala em que você participar.

Documentação

RecursoLocal
Índice da documentaçãodocs/README.md
Arquitetura e camadasdocs/ARCHITECTURE.md
Diagramas Mermaid (fluxos completos)docs/diagrams/meet-music-bot-overview.md
Testes e coberturadocs/TEST_REPORT.md
Ideias futuras (backlog)TODO/melhorias.md

CI e testes

  • GitHub Actions: .github/workflows/ci.yml — instala dependências, compila, executa testes com cobertura e gera o tarball com pnpm pack (Node 20 e 22).
  • Local: scripts test e test:watch no package.json.

Visão geral (fluxo de áudio)

Fluxogramas adicionais (CLI, sequência !play → injeção): ver docs/diagrams acima.

Pré-requisitos

  • Ubuntu / Debian (ou derivados)
  • Node.js 18+ (alinhado ao Vitest e ao CI)
  • PulseAudio ou PipeWire (PipeWire com pipewire-pulse)
  • FFmpeg
  • yt-dlp
  • Chromium ou Google Chrome
  • Xvfb (uso típico do Puppeteer com display virtual)

Instalação

cd meet-music-bot
chmod +x setup.sh
./setup.sh
pnpm install

Uso

pnpm start

O script start compila o TypeScript e executa dist/index.js. Para só compilar: pnpm run build.

Comandos da CLI

ComandoDescrição
!join <url ou código>Entra em uma sala do Meet
!name <nome>nome de visitante
!play <url ou nome>Toca música (adiciona à fila)
!skipPula a música atual
!pausePausa
!stopPara e limpa a fila
!queueMostra a fila
!loopAtiva/desativa loop
!clearLimpa a fila
!volume <0-200>Volume
!leaveSai da sala
!helpAjuda
!quitEncerra o bot

Exemplos

!join https://meet.google.com/abc-defg-hij
!play https://www.youtube.com/watch?v=dQw4w9WgXcQ
!play lo-fi hip hop radio
!volume 60
!skip
!loop

Observações

  • O bot usa o navegador que o Puppeteer abre, com sessão Google conforme o perfil/permissões da sua máquina.
  • Salas com “pedir para entrar” dependem de aprovação do anfitrião.
  • Volume padrão 80; valores acima de 100 amplificam o sinal.

Solução de problemas

Falha ao criar microfone virtual — subir o servidor de som: pulseaudio --start ou systemctl --user start pipewire pipewire-pulse (conforme o seu sistema).

Falha ao iniciar o navegador — instalar Chromium/Chrome, por exemplo via pacote chromium-browser ou Google Chrome.

Sem som no Meet — em pavucontrol, confira o sink MeetMusicBot para o Chrome e o microfone MeetMusicBotSrc no Meet.

Comunidade open source

  • Contribuindo (CONTRIBUTING): Veja nosso guia completo sobre como rodar testes, configurar o Husky, usar Conventional Commits e enviar PRs (que exigem no mínimo 60% de cobertura de testes).
  • Código de Conduta: Esperamos que todos os membros da nossa comunidade sigam este código.
  • Política de Segurança: Instruções sobre vulnerabilidades.
  • Licença (MIT): O código é licenciado pela Samuel Ramos. Consulte a licença para mais termos.