Pular para o conteúdo
Guia 03

Fontes de dados

Salve um endereço da web uma vez, clique no valor que você quer, e um comando o lê ao vivo.

8 min de leitura

01O que é uma fonte de dados

em um relanceUm comando, um endereço da web, um valor que o bot anuncia.

Uma fonte de dados é um endereço da web salvo uma única vez. Quando um espectador executa um comando que o cita, o bot chama esse endereço, extrai um valor da resposta e o diz no chat. O clima, uma estatística de jogo, o tamanho da fila no seu próprio servidor: se responde em https e devolve JSON ou texto, um comando pode lê-lo.

Um comando, um valor ao vivo.

Por trás desta linha existe um comando personalizado comum. A resposta dele, como digitada no editor:

Está fazendo {urlfetch:weather}°C em Montreal agora.

O marcador nomeia a fonte, não o valor. O lugar de onde o bot tira esse valor fica salvo na própria fonte, na forma de um caminho: um endereço dentro da resposta. A resposta é o prédio, current é o andar, temperature_2m é a porta. Escreva tudo com pontos e você obtém current.temperature_2m. A seção três faz esses cliques por você, e a analogia já pode ir para casa.

Nota As fontes de dados são gratuitas em todos os planos. Um canal Premium passa por uma via interna diferente, e cada limite desta página é o mesmo para os dois.

02Adicionar uma fonte pelo editor de comandos

em um relanceSeis cliques, sem sair do comando que você está editando.

Tudo acontece em Comandos, no editor que se encaixa ao lado da sua lista de comandos.

  1. Coloque o cursor onde vai o valor

    Abra um comando, clique em Resposta, e deixe o cursor exatamente onde o valor deve aparecer na frase.

  2. Abra a paleta

    Abaixo da resposta, ao lado dos marcadores {user} e {args}, há um botão Fonte de dados.

  3. Crie uma

    + Nova fonte abre a janela Adicionar uma fonte de dados: “Aponte para qualquer API da web, consulte uma resposta real e clique no valor que quer mostrar no chat.”

  4. Dê um nome e cole o endereço

    Nome de exibição é para você. Ele vira automaticamente o Nome da fonte de dados, a palavra que entra no marcador: “Letras minúsculas, números e sublinhados. Usado em {urlfetch:name}.” Depois, Endereço da web, em https, até 512 caracteres.

  5. Consulte uma resposta real

    Consultar uma amostra chama sua API de verdade, cerca de uma vez a cada 10 segundos. Se a resposta chegar em um formato que a janela não consegue ler, use o link ou cole uma resposta e cole uma à mão.

  6. Clique no valor e adicione a fonte

    A resposta vira uma árvore sob “Clique no valor que quer mostrar no chat.” Clique em temperature_2m e a janela mostra Exibindo current.temperature_2m. Adicionar fonte salva tudo, e a linha da paleta insere {urlfetch:weather} no seu cursor.

  • O nome de exibição é o que você lê nas listas. Ele vira automaticamente o nome da fonte de dados abaixo.
  • O nome da fonte de dados é a palavra colocada no marcador: letras minúsculas, números e sublinhados, até 32 caracteres.
  • Endereço da web: https, absoluto, até 512 caracteres. O bot o envia exatamente assim, sempre.
  • Consultar uma amostra faz uma requisição real à sua API. Cerca de um teste a cada 10 segundos.
  • Clicar em um valor salva o caminho dele na fonte. “Usar a resposta inteira” muda para texto simples.
A janela “Adicionar uma fonte de dados” com um valor já escolhido.

Depois que a fonte é criada, o mesmo botão a lista. Cada fonte salva mostra o seu caminho, o que permite distinguir dois feeds de clima de relance, e clicar em uma linha coloca o marcador onde estava o seu cursor.

  • O botão Fonte de dados fica com as pastilhas de marcadores, abaixo de Resposta, ao lado de Contador.
  • Cada linha mostra o caminho salvo na fonte, ou “Texto simples” quando exibe a resposta inteira.
  • + Nova fonte abre a janela sem perder o comando que você está escrevendo.
O botão “Fonte de dados” aberto ao lado das pastilhas de marcadores.
Dica Um canal pode guardar 20 fontes de dados. Depois disso, o editor mostra “Você atingiu o limite de 20 fontes de dados para o seu canal. Exclua uma para liberar espaço.” A exclusão pede dois cliques, e o servidor nomeia os comandos que citam a fonte antes de soltá-la: “Estes comandos a citam. Eles perderão estes dados se você excluir:”.

03Escolher o valor

em um relanceUm caminho são pontos entre as etapas. Clique em um valor e veja o marcador ser escrito.

Esta é a mesma árvore do painel, com as mesmas regras. Só os valores são clicáveis; um ramo como current contém outras coisas, então não pode terminar um caminho. Edite a resposta à esquerda e a árvore acompanha, o que continua sendo a forma mais rápida de testar com a sua própria API antes de salvar qualquer coisa.

Clique em um valor
A árvore aparece assim que o JSON for lido.
A gramática de caminhos, a mesma que o editor verifica ao salvar.
RegraO que significa
Pontos entre as etapascurrent.temperature_2m entra em current, depois sai com temperature_2m.
Listas usam números purositems.0.name é a primeira entrada. Colchetes não fazem parte da gramática.
ProfundidadeAté 8 etapas. Além disso, a árvore recusa o valor: “Mais profundo que 8 níveis. Escolha algo mais perto do topo.”
Cada etapaLetras, números, sublinhado e hífen, até 64 caracteres cada uma.
O fim do caminhoTermina em um valor: texto, um número, true ou false. Parar em um objeto, uma lista ou um campo vazio conta como fonte de dados quebrada, e o chat mostra o seu |default, ou o marcador bruto se não houver um.
Um caminho no marcadorTem prioridade sobre o salvo na fonte. {urlfetch:weather.current.wind_speed_10m} lê outro valor do mesmo endereço.
O nomeSem diferenciar maiúsculas. {URLFETCH:Weather} e {urlfetch:weather} são a mesma fonte.
O valorLimpo, aparado, depois cortado em 100 bytes antes de chegar ao chat.
Dica Um único endereço salvo pode alimentar vários comandos. Salve {urlfetch:weather} em current.temperature_2m para !weather, depois escreva {urlfetch:weather.current.wind_speed_10m} em !wind. Mesma fonte, mesmo orçamento de 20 fontes de dados, duas respostas diferentes.

04As APIs que exigem uma chave

em um relanceAs chaves ficam na sua conta, seladas, e viajam em um cabeçalho Authorization.

Algumas APIs exigem uma chave antes de responder. Adicione-a uma vez em Configurações, no painel Chaves de API: um rótulo de até 32 caracteres para reconhecê-la depois, e o segredo em si, de até 512 caracteres, depois Adicionar chave. A indicação do painel diz melhor do que nós: “Chaves de API que suas fontes de dados enviam em cada requisição. Pessoas com acesso compartilhado podem usá-las, mas nunca vê-las.”

O segredo é selado antes de ser gravado e nunca mais é exibido. Você mantém o rótulo e os últimos 4 caracteres, o suficiente para diferenciar duas chaves quando trocar uma delas. Quando uma fonte de dados tem uma chave, o bot a envia em um cabeçalho Authorization: Bearer a cada consulta, e o endereço continua limpo.

Na janela “Adicionar uma fonte de dados”, escolha a chave no campo Chave da API. “Nenhuma chave necessária” é a resposta certa para a maioria das APIs públicas. Se nenhuma chave estiver salva, o campo indica “Ainda não há chaves de API. Adicione uma em Configurações, depois selecione-a aqui.” e um link Abrir chaves de API leva às Configurações.

Atenção Mantenha a chave fora do Endereço da web e fora da resposta do comando. Um endereço é armazenado como texto e qualquer pessoa com acesso ao painel pode lê-lo, e uma resposta vai para o chat, onde todo mundo vê. Se a sua API aceita a chave apenas como parâmetro de URL, trate essa chave como pública e troque-a com frequência.

05Limites e tempos limite

em um relanceTudo tem teto, e o cache faz a maior parte do trabalho.

Os números abaixo são os que rodam em produção. O cache é o que você vai encontrar primeiro: uma resposta aceita é reutilizada por 30 segundos, então um comando executado 40 vezes em um minuto chama a sua API só duas vezes.

Igual em todos os planos.
LimiteO número
Fontes de dados por canal20.
Fontes de dados em uma resposta3. O editor recusa salvar uma quarta.
Endereço da webSomente https, absoluto, até 512 caracteres.
Endereços recusadosEndereços IP literais, localhost, e qualquer coisa que termine em .local ou .internal. Verificado ao salvar e a cada consulta.
Tamanho da respostaO bot lê até 1 MiB de uma resposta, medido após a descompressão.
Tamanho da amostraO editor só mostra uma árvore para uma amostra de texto legível de no máximo 128 KB. Uma resposta maior ou ilegível dá “A API respondeu, mas a resposta não pôde ser lida automaticamente. Cole uma abaixo.” Uma amostra colada com mais de 128 KB dá “Esta amostra passa de 128 KB. Cole uma mais curta.”
Tipo de conteúdoapplication/json ou text/*.
Tempos limiteA API tem 2,5 segundos, o serviço de consulta 3 segundos, e o bot para de esperar aos 3,5 segundos.
CacheUma boa resposta fica guardada por 30 segundos. Uma recusa, como um 404 ou um caminho que não encontra nada, fica guardada por 15 segundos. Uma falha não entra no cache.
Requisições por canal6 por minuto, somando todas as fontes de dados.
Requisições por fonte de dados30 por minuto.
Requisições por host de API120 por minuto, contadas em todos os canais que apontam para este host.
RedirecionamentosAté 3 saltos, cada um permanecendo em https.
Um host que falha em sequênciaCinco falhas de transporte seguidas e este host fica em repouso por 60 segundos.
“Consultar uma amostra”Cerca de um teste a cada 10 segundos: “Testes demais. Cada um chama a API de verdade. Aguarde cerca de 10 segundos e tente de novo.”
Fontes de dados citadas pelos seus comandos
Requisições realmente recebidas pela sua API
2 por minuto
Atendidas pelo cache de 30 segundos
10 por minuto
Recusadas pelo teto de 6 por minuto
0 por minuto

O cache existe por causa da sua cota de API. Sem ele, uma única raid gastaria um mês de chamadas em uma noite, e todos os outros canais apontando para o mesmo host também sentiriam.

Nota Dois segundos de paciência é muito tempo em um chat. Se a sua API for lenta, espere um espaço vazio no lugar do valor durante uma live cheia: escreva a frase para que ela ainda faça sentido sem o valor, ou adicione uma alternativa depois de uma barra vertical.

06O que o chat mostra quando algo falha

em um relanceUma falha deixa um espaço vazio ou a sua alternativa. Uma fonte que não consegue responder mostra o seu |default, ou o marcador bruto se não houver um.

Um comando nunca fica mudo por causa de uma fonte de dados. O resto da frase sai mesmo assim e o valor fica vazio, a menos que você tenha escrito uma alternativa depois de uma barra vertical: {urlfetch:weather|indisponível} diz “indisponível” quando a consulta falha. Uma fonte pausada, ausente ou incapaz de produzir um valor funciona do mesmo jeito: o chat e os temporizadores mostram o valor |default do marcador. Sem |default, o chat mostra o marcador bruto, como digitado, e é por isso que um {urlfetch:weather} cru no chat significa “verifique esta fonte de dados”.

O que aconteceuO que o chat mostra
A API recusou, limitou, devolveu um erro, demorou mais do que o bot espera, o caminho não encontrou nada, ou a mensagem é a reprodução de uma antigaNada no lugar do valor, ou o texto da sua alternativa.
A fonte está pausada, ausente, nunca foi salva, ou não conseguiu produzir um valorO texto da sua alternativa. Sem alternativa, o marcador aparece exatamente como digitado: {urlfetch:weather}.
#your_channel

PrincessBarney!weather

ItsBagelBotEstá fazendo °C em Montreal agora.

Sua chave foi rejeitada, ou o endpoint recusou a requisição. Teste pelo painel e você recebe o mesmo veredito: “A API recusou a solicitação. Confira a URL e selecione a chave certa em Chave da API se esta API precisar de uma.”

Dica Escreva uma alternativa para tudo o que pode falhar durante uma live: {urlfetch:weather|indisponível}. Assim, uma API lenta é lida como “indisponível” em vez de um buraco na frase.

Se algo der errado

O que você vêO que significaO que fazer
A API recusou a solicitação. Confira a URL e selecione a chave certa em Chave da API se esta API precisar de uma.A API descartou o teste: chave errada ou ausente, ou endereço errado.Confira o endereço da web. Se a API exigir uma chave, adicione-a em Configurações, no painel Chaves de API, escolha-a no campo Chave da API e teste de novo.
Limite de solicitações atingido. Aguarde um instante e teste de novo.Um teto de requisições foi atingido.Aguarde um minuto e teste de novo.
A API devolveu um erro. O chat não mostra nada, a menos que o marcador tenha um |default: {urlfetch:nome|default}.A API respondeu com um erro.Confira o status da API, ou adicione uma alternativa depois de uma barra vertical.
O tempo limite da API se esgotou. O chat não mostra nada, a menos que o marcador tenha um |default: {urlfetch:nome|default}.A API demorou mais do que o bot espera.Tente de novo, e adicione uma alternativa depois de uma barra vertical.
Esta fonte de dados não conseguiu produzir um valor. Enquanto isso, o chat mostra o valor |default do marcador, se ele tiver um, senão {urlfetch:name} como foi digitado. Confira o endereço da web e a chave da API, depois clique em Consultar uma amostra novamente.A fonte está pausada, ou o caminho ou o endereço não retorna nenhum valor.Reative a fonte se estiver pausada. Caso contrário, corrija o endereço ou a chave, consulte uma amostra e clique no valor de novo.
O serviço de consulta não respondeu. Tente de novo em instantes.O serviço que chama a sua API não respondeu a tempo.Aguarde um instante e teste de novo.
A API respondeu, mas a resposta não pôde ser lida automaticamente. Cole uma abaixo.A resposta não é texto legível, ou passa de 128 KB.Clique em “ou cole uma resposta” e cole uma resposta real à mão.
Isto não é JSON válido. Corrija e a árvore aparecerá aqui.A amostra colada não é JSON.Cole a resposta de novo, da primeira chave até a última.
Esta amostra passa de 128 KB. Cole uma mais curta.A amostra colada é grande demais para a árvore.Cole um trecho menor da resposta.
Testes demais. Cada um chama a API de verdade. Aguarde cerca de 10 segundos e tente de novo.Consultar uma amostra permite cerca de um teste a cada 10 segundos.Aguarde 10 segundos.
Você atingiu o limite de 20 fontes de dados para o seu canal. Exclua uma para liberar espaço.Um canal guarda 20 fontes de dados.Exclua uma fonte que você não usa mais.
Já existe uma fonte de dados chamada “name”.Outra fonte já usa este nome.Escolha outro nome, ou edite a fonte existente.
Uma mensagem de temporizador pode referenciar no máximo 3 valores consultados diferentes ({urlfetch:…}).As mensagens de temporizador são limitadas a 3 fontes de dados.Cite menos fontes na mensagem do temporizador.
Um {urlfetch:name} bruto no chatA fonte está pausada, ausente, ou não consegue produzir um valor, e o marcador não tem |default. Os marcadores além do teto por mensagem também continuam brutos.Abra o comando, confira se o nome corresponde a uma fonte salva, e reative-a se estiver pausada. Adicione um |default para o chat mostrar uma alternativa.

07O que uma fonte não faz

em um relanceAs bordas, em uma tela, antes de montar um comando em torno delas.
  • O endereço fica fixo ao ser salvo. {args} e {user} permanecem intactos em um endereço da web, então um espectador não consegue direcionar a requisição enviada à sua API.
  • As requisições são GET, e os cabeçalhos não são seus para configurar. O único que o bot adiciona é Authorization: Bearer, e só quando a fonte tem uma chave.
  • Os marcadores se expandem nas respostas de comandos personalizados, depois das verificações de permissão, de live e de tempo de espera, e nas mensagens de temporizador, a cada disparo. Uma mensagem de temporizador pode citar até 3 fontes de dados diferentes. Os contadores deixam o marcador em paz.
  • Uma mensagem de chat reproduzida nunca consulta duas vezes. Se o bot reprocessar um evento antigo, o chat recebe um espaço vazio (ou a sua alternativa) em vez de uma segunda chamada à sua API.
  • Endereços privados e locais são descartados nas duas pontas: ao salvar, e de novo no momento da consulta.
Dica Cite duas vezes a mesma fonte em uma resposta e o bot consulta só uma vez. Escreva {urlfetch:weather} na frase e {urlfetch:weather.current.wind_speed_10m} logo depois: dois valores, uma requisição, uma linha da sua cota.
Nota Verificado em 12 de outubro de 2026.