Ir al contenido
Guía 03

Fuentes de datos

Apunta el bot a una dirección web una vez, haz clic en el valor que quieres y un comando lo lee en vivo.

01Qué es una fuente de datos

de un vistazoUn comando, una dirección web y un valor que el bot anuncia.

Una fuente de datos es una dirección web que guardas una sola vez. Cuando un espectador ejecuta un comando que la cita, el bot llama a esa dirección, extrae un valor de la respuesta y lo dice en el chat. El tiempo, una estadística de juego, la longitud de la cola en tu propio servidor: si responde por https y devuelve JSON o texto plano, un comando puede leerla.

Un comando, un valor en vivo.

Detrás de esa línea hay un comando personalizado normal. Su respuesta, tal como se escribe en el editor:

Hace {urlfetch:weather}°C en Montréal en este momento.

La variable nombra la fuente, no el valor. Qué valor extrae el bot se guarda en la propia fuente, como una ruta: una dirección dentro de la respuesta. La respuesta es el edificio, current es el piso y temperature_2m es la puerta. Escríbelo con puntos y obtienes current.temperature_2m. La sección tres hace esos clics por ti, y la analogía ya puede irse a casa.

Nota Las fuentes de datos son gratuitas en todos los planes. Un canal premium pasa por una vía interna distinta, y cada límite de esta página es el mismo para los dos.

02Añadir una fuente desde el editor de comandos

de un vistazoSeis clics, sin salir del comando que estás escribiendo.

Todo se hace en Comandos, en el editor que se acopla junto a tu lista de comandos.

  1. Coloca el cursor donde va el valor

    Abre un comando, haz clic en Respuesta y deja el cursor justo donde debe aparecer el valor dentro de la frase.

  2. Abre el panel

    Debajo de la respuesta, junto a las píldoras {user} y {args}, hay un chip llamado Fuente de datos.

  3. Crea una

    + Nueva fuente de datos abre la ventana Añadir una fuente de datos: «Conéctala a cualquier API web, obtén una respuesta real y haz clic en el valor que quieres mostrar en el chat.»

  4. Ponle un nombre y pega la dirección

    Nombre visible es para ti. Se convierte automáticamente en el Nombre de la fuente de datos, la palabra que va dentro de la variable: «Letras minúsculas, dígitos y guiones bajos. Se usa dentro de {urlfetch:name}.» Luego, la Dirección web, en https, de hasta 512 caracteres.

  5. Obtén una respuesta real

    Obtener una muestra llama a tu API de verdad, aproximadamente una vez cada 10 segundos. Si la respuesta llega en un formato que la ventana no sabe leer, usa el enlace o pega una respuesta y pega una a mano.

  6. Haz clic en el valor y añade la fuente

    La respuesta se convierte en un árbol bajo «Haz clic en el valor que quieres mostrar en el chat.» Haz clic en temperature_2m y la ventana muestra Mostrando current.temperature_2m. Añadir fuente guarda todo, y la fila del panel inserta {urlfetch:weather} en tu cursor.

  • El nombre visible es el que lees en las listas. Se convierte automáticamente en el nombre de la fuente de datos de abajo.
  • El nombre de la fuente de datos es la palabra que va dentro de la variable: letras minúsculas, dígitos y guiones bajos, hasta 32 caracteres.
  • Dirección web: https, absoluta, de hasta 512 caracteres. El bot la envía tal cual, cada vez.
  • Obtener una muestra hace una petición real a tu API. Aproximadamente una prueba cada 10 segundos.
  • Hacer clic en un valor guarda su ruta en la fuente. «Usar toda la respuesta» cambia a texto sin formato.
La ventana «Añadir una fuente de datos» con un valor ya elegido.

Una vez creada la fuente, el mismo chip la muestra en la lista. Cada fuente guardada muestra su ruta, así distingues dos fuentes del tiempo de un vistazo, y al hacer clic en una fila se coloca la variable donde estaba tu cursor.

  • El chip Fuente de datos está junto a las píldoras de variables, debajo de Respuesta, al lado de Contador.
  • Cada fila muestra la ruta guardada en la fuente, o «Texto sin formato» cuando muestra toda la respuesta.
  • + Nueva fuente de datos abre la ventana sin perder el comando que estás escribiendo.
El chip «Fuente de datos» abierto junto a las píldoras de variables.
Consejo Un canal puede tener 20 fuentes de datos. Si llegas al límite, el editor muestra «Has alcanzado el límite de 20 fuentes de datos de tu canal. Elimina una para hacer espacio.» Eliminar requiere dos toques, y el servidor indica qué comandos citan la fuente antes de soltarla: «Estos comandos usan sus datos. Los perderán si la eliminas:».

03Elegir el valor

de un vistazoUna ruta son puntos entre los pasos. Haz clic en un valor y mira cómo se escribe la variable.

Este es el mismo árbol que muestra el panel, con las mismas reglas. Solo los valores son clicables; una rama como current contiene otras cosas, así que no puede ser el final de una ruta. Edita la respuesta a la izquierda y el árbol la sigue, que es la forma más rápida de ensayar con tu propia API antes de guardar nada.

Haz clic en un valor
El árbol aparece cuando se analiza el JSON.
La gramática de rutas, la misma que el editor verifica al guardar.
ReglaQué significa
Puntos entre los pasoscurrent.temperature_2m abre current y luego saca temperature_2m de ahí.
Las listas usan números sin corchetesitems.0.name es la primera entrada. Los corchetes no forman parte de la gramática.
ProfundidadHasta 8 pasos. Más allá, el árbol rechaza el valor: «Más de 8 niveles de profundidad. Elige algo más cerca del principio.»
Cada pasoLetras, dígitos, guion bajo y guion, de hasta 64 caracteres cada uno.
El final de la rutaDebe caer en un valor: texto, un número, true o false. Detenerse en un objeto, una lista o un campo vacío cuenta como una fuente de datos rota, y el chat muestra tu |default, o la variable sin procesar si no tiene ninguno.
Una ruta dentro de la variableGana a la guardada en la fuente. {urlfetch:weather.current.wind_speed_10m} lee un valor distinto de la misma dirección.
El nombreNo distingue mayúsculas. {URLFETCH:Weather} y {urlfetch:weather} son la misma fuente.
El valorLimpio, recortado y luego cortado a 100 bytes antes de llegar al chat.
Consejo Una sola dirección guardada puede alimentar varios comandos. Guarda {urlfetch:weather} en current.temperature_2m para !weather, y luego escribe {urlfetch:weather.current.wind_speed_10m} en !wind. La misma fuente, el mismo presupuesto de 20 fuentes de datos, dos respuestas distintas.

04Las API que piden una clave

de un vistazoLas claves viven en tu cuenta, cifradas, y viajan en un encabezado Authorization.

Algunas API exigen una clave antes de responder. Añádela una vez en Ajustes, en el panel Claves de API: una etiqueta de hasta 32 caracteres para reconocerla después, y el secreto en sí, de hasta 512 caracteres, y luego Añadir clave. El propio texto del panel lo dice mejor que nosotros: «Claves de API que tus fuentes de datos envían con cada solicitud. Las personas con acceso compartido pueden usarlas, pero nunca verlas.»

El secreto se cifra antes de guardarse y nunca vuelve a mostrarse. Te quedan la etiqueta y los últimos 4 caracteres, lo justo para distinguir dos claves cuando cambias una. Cuando una fuente de datos tiene una clave, el bot la envía en un encabezado Authorization: Bearer en cada consulta, y la dirección se mantiene limpia.

En la ventana «Añadir una fuente de datos», elige la clave en el campo Clave de API. «No necesita clave» es la respuesta correcta para la mayoría de las API públicas. Si todavía no tienes ninguna clave guardada, el campo dice «Aún no hay claves de API. Añade una en Ajustes y luego selecciónala aquí.» y un enlace Abrir claves de API te lleva a Ajustes.

Cuidado Mantén la clave fuera de la Dirección web y fuera de la respuesta del comando. Una dirección se guarda como texto y cualquiera con acceso al panel puede leerla, y una respuesta va al chat, donde todos la ven. Si tu API solo acepta la clave como parámetro de la URL, trata esa clave como pública y cámbiala con regularidad.

05Límites y tiempos

de un vistazoTodo tiene un tope, y la caché hace la mayor parte del trabajo.

Las cifras de abajo son las que están activas en producción. La caché es con lo primero que te encontrarás: una respuesta aceptada se reutiliza durante 30 segundos, así que un comando que se ejecuta 40 veces en un minuto solo llama a tu API dos veces.

Igual en todos los planes.
LímiteLa cifra
Fuentes de datos por canal20.
Fuentes de datos en una respuesta3. El editor se niega a guardar una cuarta.
Dirección webSolo https, absoluta, de hasta 512 caracteres.
Direcciones rechazadasLas direcciones IP literales, localhost, y cualquier cosa que termine en .local o .internal. Se verifica al guardar y de nuevo en cada consulta.
Tamaño de la respuestaEl bot lee hasta 1 MiB de una respuesta, medido después de descomprimir.
Tamaño de la muestraEl editor muestra un árbol solo para una muestra de texto legible de hasta 128 KB. Una respuesta más grande o ilegible da «La API respondió, pero su respuesta no se pudo leer automáticamente. Pega una abajo.» Una muestra pegada de más de 128 KB da «Esa muestra supera los 128 KB. Pega una más corta.»
Tipo de contenidoapplication/json o text/*.
Tiempos de esperaLa API tiene 2,5 segundos, el servicio de consultas 3 segundos, y el bot deja de esperar a los 3,5 segundos.
CachéUna buena respuesta se guarda 30 segundos. Un rechazo, como un 404 o una ruta que no encuentra nada, se guarda 15 segundos. Una caída no se guarda en caché.
Consultas por canal6 por minuto, contando todas tus fuentes de datos.
Consultas por fuente de datos30 por minuto.
Consultas por host de API120 por minuto, contadas en todos los canales que apuntan a ese host.
RedireccionesHasta 3 saltos, manteniéndose cada uno en https.
Un host que falla seguidoCinco fallos de transporte seguidos, y ese host descansa 60 segundos.
«Obtener una muestra»Aproximadamente una prueba cada 10 segundos: «Demasiadas pruebas. Cada una llama a la API real. Espera unos 10 segundos e inténtalo de nuevo.»
Fuentes de datos que citan tus comandos
Consultas que tu API recibe de verdad
2 por minuto
Servidas desde la caché de 30 segundos
10 por minuto
Rechazadas por el tope de 6 por minuto
0 por minuto

La caché existe por tu cuota de API. Sin ella, un solo raid gastaría un mes de llamadas en una tarde, y todos los demás canales que apuntan al mismo host también lo notarían.

Nota Dos segundos de paciencia del bot son mucho tiempo en el chat. Si tu API es lenta, espera un hueco en lugar del valor durante un directo concurrido: escribe la frase para que se lea aunque falte el número, o añade un respaldo después de una barra vertical.

06Lo que muestra el chat cuando falla

de un vistazoUn fallo deja un hueco o tu respaldo. Una fuente que no puede responder muestra tu |default, o la variable sin procesar si no tiene uno.

Un comando nunca se queda mudo por culpa de una fuente de datos. El resto de la frase se envía igualmente y el valor queda vacío, salvo que hayas escrito un respaldo después de una barra vertical: {urlfetch:weather|no disponible} dice «no disponible» cuando la consulta falla. Una fuente en pausa, inexistente o incapaz de producir un valor funciona igual: el chat y los temporizadores muestran el valor |default de la variable. Sin |default, el chat muestra la variable tal como se escribió, y por eso un {urlfetch:weather} sin procesar en el chat significa «revisa esta fuente de datos».

Qué pasóQué muestra el chat
La API rechazó la solicitud, te limitó, devolvió un error, tardó más de lo que espera el bot, la ruta no encontró nada, o el mensaje es la repetición de uno antiguoNada en lugar del valor, o el texto de tu |respaldo.
La fuente está en pausa, no existe, nunca se guardó o no pudo producir un valorEl texto de tu |respaldo. Sin |respaldo, la variable tal cual: {urlfetch:weather}.
#your_channel

PrincessBarney!weather

ItsBagelBotHace °C en Montréal en este momento.

Tu clave fue rechazada, o el punto de acceso descartó la solicitud. Prueba desde el panel y obtendrás el mismo veredicto: «La API rechazó la solicitud. Revisa la URL y selecciona la clave correcta en Clave de API si esta API necesita una.»

Consejo Escribe un respaldo para todo lo que pueda fallar durante un directo: {urlfetch:weather|no disponible}. Así, una API lenta se lee «no disponible» en lugar de un hueco en la frase.

Si algo sale mal

Lo que vesLo que significaQué hacer
La API rechazó la solicitud. Revisa la URL y selecciona la clave correcta en Clave de API si esta API necesita una.La API descartó la prueba: clave incorrecta o ausente, o dirección incorrecta.Revisa la dirección web. Si la API necesita una clave, añádela en Ajustes, en Claves de API, elígela en el campo Clave de API y vuelve a probar.
Límite de solicitudes alcanzado. Espera un momento y vuelve a probar.Se alcanzó un tope de solicitudes.Espera un minuto y vuelve a probar.
La API devolvió un error. El chat no muestra nada, salvo que la variable tenga un |default: {urlfetch:nombre|default}.La API respondió con un error.Revisa el estado de la API, o añade un respaldo después de una barra vertical.
La API no respondió a tiempo. El chat no muestra nada, salvo que la variable tenga un |default: {urlfetch:nombre|default}.La API tardó más de lo que espera el bot.Inténtalo de nuevo, y añade un respaldo después de una barra vertical.
Esta fuente de datos no pudo producir un valor. Mientras tanto, el chat muestra el valor |default de la variable si lo tiene, y si no, {urlfetch:nombre} tal como lo escribiste. Comprueba la dirección web y la clave API, y vuelve a hacer clic en Obtener una muestra.La fuente está en pausa, o su ruta o su dirección no devuelven ningún valor.Reanuda la fuente si está en pausa. Si no, corrige la dirección o la clave, obtén una muestra y vuelve a hacer clic en el valor.
El servicio de consultas no respondió. Inténtalo de nuevo en un momento.El servicio que llama a tu API no respondió a tiempo.Espera un momento y vuelve a probar.
La API respondió, pero su respuesta no se pudo leer automáticamente. Pega una abajo.La respuesta no es texto legible, o supera los 128 KB.Haz clic en «o pega una respuesta» y pega una respuesta real a mano.
No es JSON válido. Corrígelo y el árbol aparecerá aquí.La muestra pegada no es JSON.Vuelve a pegar la respuesta, desde la primera llave hasta la última.
Esa muestra supera los 128 KB. Pega una más corta.La muestra pegada es demasiado grande para el árbol.Pega un fragmento más pequeño de la respuesta.
Demasiadas pruebas. Cada una llama a la API real. Espera unos 10 segundos e inténtalo de nuevo.Obtener una muestra permite aproximadamente una prueba cada 10 segundos.Espera 10 segundos.
Has alcanzado el límite de 20 fuentes de datos de tu canal. Elimina una para hacer espacio.Un canal guarda 20 fuentes de datos.Elimina una fuente que ya no uses.
Ya existe una fuente de datos llamada «nombre».Otra fuente ya usa ese nombre.Elige otro nombre, o edita la fuente existente.
Un mensaje de temporizador puede hacer referencia a un máximo de 3 valores obtenidos distintos ({urlfetch:…}).Los mensajes de temporizador están limitados a 3 fuentes de datos.Cita menos fuentes en el mensaje del temporizador.
Una variable {urlfetch:nombre} sin procesar en el chatLa fuente está en pausa, no existe o no puede producir un valor, y la variable no tiene |default. Las variables que superan el tope por mensaje también se quedan sin procesar.Abre el comando, comprueba que el nombre coincida con una fuente guardada, y reanúdala si está en pausa. Añade un |default para que el chat muestre un respaldo.

07Lo que una fuente no hará

de un vistazoLos límites, en una sola pantalla, antes de diseñar un comando alrededor de una.
  • La dirección se fija al guardarla. {args} y {user} no se tocan dentro de una dirección web, así que un espectador no puede dirigir la petición hacia tu API.
  • Las peticiones son GET, y los encabezados no los configuras tú. El único que añade el bot es Authorization: Bearer, y solo cuando la fuente tiene una clave.
  • Las variables se expanden en las respuestas de comandos personalizados, después de pasar las comprobaciones de permisos, de directo y de enfriamiento, y en los mensajes de temporizador, cada vez que se dispara. Un mensaje de temporizador puede citar hasta 3 fuentes de datos distintas. Los contadores no tocan la variable.
  • Un mensaje de chat repetido nunca hace una segunda consulta. Si el bot vuelve a leer un evento antiguo, el chat recibe un hueco (o tu respaldo) en lugar de una segunda llamada a tu API.
  • Las direcciones privadas y locales se rechazan en ambos extremos: al guardar, y de nuevo al consultar.
Consejo Cita dos veces la misma fuente en una respuesta y el bot solo consulta una vez. Escribe {urlfetch:weather} en la frase y {urlfetch:weather.current.wind_speed_10m} justo después: dos valores, una petición, una sola llamada de tu cuota.
Nota Última comprobación: 12 de octubre de 2026.