/get (/download)¶
Baixa vídeos de Instagram, YouTube, X/Twitter, TikTok e outros sites suportados pelo yt-dlp. A URL pode vir como argumento ou você pode dar reply numa mensagem que contenha o link. A URL digitada vale mais que a mensagem respondida.
Dando reply num vídeo, numa imagem ou num áudio do WhatsApp, o /get usa a própria mídia, sem o
yt-dlp: sem opção, devolve o arquivo original como documento; com -a, -st, -ss ou -es, passa
pelo ffmpeg. Se a mídia tiver um link na legenda, vale a mídia.
| Opção | Valor | Descrição |
|---|---|---|
-sticker, -st |
Envia como figurinha animada (até 6 s), enquadrada no meio do vídeo. É o mesmo que o /sticker |
|
-audio, -a |
Extrai só o áudio (.mp3) |
|
-startSec, -ss |
<tempo> |
Começa neste ponto do vídeo original (padrão 0), em segundos (22, 1.5) ou em min:seg (09:33, ou h:min:seg) |
-endSec, -es |
<tempo> |
Termina neste ponto do vídeo original, no mesmo formato do -ss; deve ser maior que o início. Vale também sem -ss e para figurinhas |
-verbose, -v |
Mostra os parâmetros usados no yt-dlp/ffmpeg | |
<url> |
Link do vídeo; vale mais que a mensagem respondida |
O arquivo convertido é limitado a 20 MB (setting get.maxSizeMB). O arquivo original de uma mídia
respondida vai como veio do WhatsApp; sem nome (uma foto da câmera, por exemplo), ganha um como
zapbot.jpeg.
Escolha áudio ou figurinha por execução. Figurinhas têm no máximo seis segundos: sem -es, pegam os
seis segundos a partir do -ss (ou do início), e um trecho menor definido por -ss e -es mantém a
duração pedida. O vídeo e o áudio são enviados como documento.
De um link, com -ss, -es ou -st, o yt-dlp baixa só o trecho pedido (--download-sections,
cortado no tempo exato com --force-keyframes-at-cuts), sem o vídeo inteiro. Se o site não deixar
baixar o trecho, o /get baixa o vídeo inteiro e o ffmpeg corta.
Na mídia respondida:
- Imagem:
-stfaz a figurinha enquadrada no meio, como o/sticker;-ss,-ese-asão recusados. - Áudio: com
-ssou-es, o trecho sai em.mp3; figurinha é recusada. - Outros arquivos (PDF, documentos) são recusados.
Limites (o /get não é admin: quem estiver no bot.users usa; com ele em true, qualquer um):
- Download de no máximo 200 MB antes da conversão (setting
get.maxDownloadMB). - Link de playlist baixa só o vídeo do link (
--no-playlist). - yt-dlp e ffmpeg são interrompidos após 5 minutos cada.
- Opção desconhecida é recusada (
❌ Opção desconhecida: -x), em vez de virar a URL. - No máximo 2
/get(ou/sticker) com yt-dlp ou ffmpeg ao mesmo tempo. Os demais recebem um aviso para tentar de novo.
Enquanto baixa e converte, o bot mostra "⏳ Processando…". No fim, essa mesma mensagem vira "✅ Mídia baixada com sucesso!" (ou "✅ Sticker criado com sucesso!"), ou o erro, sem uma mensagem a mais.
URLs que apontam para a rede interna (localhost, 10.x, 192.168.x, 169.254.x, IPv6 local
etc.) são recusadas, para que o /get não sirva de ponte para a sua rede (SSRF). A checagem
recusa também respostas de DNS mistas (um endereço público e um interno), que indicam rebinding.
Como o yt-dlp resolve o DNS de novo e segue redirects por conta própria, a defesa de raiz é um
firewall de egresso no container (docker/app/egress-firewall.sh, ligado por
ZAPBOT_EGRESS_FIREWALL=1), que bloqueia todo acesso à rede interna a partir do bot.
/get https://www.instagram.com/reel/XXXXXXXX/
/get -a https://youtu.be/XXXXXXXXXXX
/get -ss 10 -es 25 https://x.com/usuario/status/123456
/get -es 15 https://youtu.be/XXXXXXXXXXX
/get -ss 09:33 -es 09:45 https://youtu.be/XXXXXXXXXXX
/download -st -ss 3 -es 6 https://youtu.be/XXXXXXXXXXX
(reply numa mensagem com link) /get -a
(reply num vídeo do WhatsApp) /get -a → só o áudio, em .mp3
(reply num vídeo do WhatsApp) /get -ss 5 -es 20 → o trecho, como documento