{"id":1270,"date":"2025-12-17T20:07:59","date_gmt":"2025-12-17T17:07:59","guid":{"rendered":"http:\/\/api-sport.pro\/?p=1270"},"modified":"2025-12-17T20:07:59","modified_gmt":"2025-12-17T17:07:59","slug":"como-crear-un-bot-que-envie-notificaciones-sobre-goles-corners-y-tarjetas","status":"publish","type":"post","link":"https:\/\/api-sport.pro\/es\/como-crear-un-bot-que-envie-notificaciones-sobre-goles-corners-y-tarjetas\/","title":{"rendered":"\u00bfC\u00f3mo crear un bot que env\u00ede notificaciones sobre goles, c\u00f3rners y tarjetas?"},"content":{"rendered":"<div class=\"table-of-contents\">\n<div class=\"table-of-contents-title\">Contenidos<\/div>\n<ul class=\"table-of-contents-ul\">\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-1\">\u00bfQu\u00e9 es una API de eventos deportivos y c\u00f3mo usarla para obtener goles, c\u00f3rners y tarjetas?<\/a><\/li>\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-2\">Visi\u00f3n general de las APIs de f\u00fatbol populares para notificaciones de goles y estad\u00edsticas de partidos.<\/a><\/li>\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-3\">C\u00f3mo elegir y conectar una API de eventos deportivos: registro, claves, l\u00edmites.<\/a><\/li>\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-4\">C\u00f3mo obtener datos sobre goles, c\u00f3rners y tarjetas a trav\u00e9s de la API: estructura de solicitud y respuesta.<\/a><\/li>\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-5\">C\u00f3mo crear un bot de Telegram con notificaciones sobre goles y tarjetas basado en una API deportiva.<\/a><\/li>\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-6\">Configuraci\u00f3n de filtros y frecuencia de notificaci\u00f3n para el bot de partidos de f\u00fatbol.<\/a><\/li>\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-7\">Errores t\u00edpicos y limitaciones al trabajar con APIs de eventos deportivos y c\u00f3mo superarlos.<\/a><\/li>\n<\/ul>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-1\">\u00bfQu\u00e9 es una API de eventos deportivos y c\u00f3mo usarla para obtener goles, c\u00f3rners y tarjetas?<\/h2>\n<p>Una API de eventos deportivos es una interfaz de programaci\u00f3n que proporciona acceso a datos sobre partidos, equipos y detalles del juego en un formato legible por m\u00e1quina. En el caso del f\u00fatbol, esto incluye no solo el marcador, sino tambi\u00e9n una lista de eventos en vivo: goles, tarjetas amarillas y rojas, c\u00f3rners, tiros libres y otras acciones en el campo. En la plataforma <a href=\"http:\/\/api-sport.pro\/es\/\">api-sport.pro<\/a> esos datos est\u00e1n disponibles a trav\u00e9s de una API REST unificada para diferentes deportes, con cada deporte utilizando su propio slug (por ejemplo, <b>f\u00fatbol<\/b> para el f\u00fatbol), lo que simplifica la integraci\u00f3n y escalado del proyecto.<\/p>\n<p>T\u00e9cnicamente, el acceso a la informaci\u00f3n se construye en torno a un conjunto de endpoints. Por ejemplo, el m\u00e9todo <b>\/v2\/f\u00fatbol\/partidos<\/b> devuelve una lista de partidos con el marcador actual, minuto del juego (<b>minutoDelPartidoActual<\/b>) y estad\u00edsticas detalladas, mientras que el m\u00e9todo <b>\/v2\/f\u00fatbol\/partidos\/{matchId}\/eventos<\/b> devuelve una lista cronol\u00f3gica de eventos, donde cada evento se describe por tipo (<b>gol<\/b> or <b>tarjeta<\/b>), tiempo y participantes. Son estas estructuras las que permiten al bot enterarse en tiempo real de un nuevo gol o tarjeta, y luego enviar una notificaci\u00f3n instant\u00e1nea al usuario. Para c\u00f3rners y otras m\u00e9tricas, es conveniente usar el campo <b>estad\u00edsticasDelPartido<\/b>, donde hay un valor de la m\u00e9trica para cada equipo.<\/p>\n<p>La principal ventaja de este enfoque es que la l\u00f3gica del bot se vuelve lo m\u00e1s simple posible: llama peri\u00f3dicamente a la API, recibe un JSON estrictamente estructurado, analiza los campos necesarios y decide si generar una notificaci\u00f3n. Al mismo tiempo, la misma API se puede utilizar f\u00e1cilmente tanto para alertas simples (solo goles) como para escenarios avanzados: notificaciones para el N-\u00e9simo c\u00f3rner, un cierto n\u00famero de tarjetas o una combinaci\u00f3n de eventos. En el futuro, la plataforma <a href=\"http:\/\/api-sport.pro\/es\/\">api-sport.pro<\/a> est\u00e1 desarrollando no solo REST sino tambi\u00e9n canales WebSocket y herramientas de IA, lo que permitir\u00e1 construir sistemas de bots a\u00fan m\u00e1s r\u00e1pidos e inteligentes para apuestas, an\u00e1lisis y proyectos de medios.<\/p>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-2\">Visi\u00f3n general de las APIs de f\u00fatbol populares para notificaciones de goles y estad\u00edsticas de partidos.<\/h2>\n<p>El mercado de APIs de f\u00fatbol est\u00e1 saturado hoy en d\u00eda, pero no todos los servicios son igualmente convenientes para las tareas de notificaciones sobre goles, tarjetas y c\u00f3rners. Tres par\u00e1metros son cr\u00edticos para el bot: la profundidad de los datos en vivo, la latencia de actualizaci\u00f3n y la estabilidad operativa. En <a href=\"http:\/\/api-sport.pro\/es\/\">api-sport.pro<\/a> la informaci\u00f3n en vivo est\u00e1 disponible a trav\u00e9s del campo. <b>eventosEnVivo<\/b> en el objeto de coincidencia (puntos finales <b>\/v2\/f\u00fatbol\/partidos<\/b> \u0438 <b>\/v2\/f\u00fatbol\/partidos\/{matchId}<\/b>) y a trav\u00e9s de un m\u00e9todo separado <b>\/v2\/f\u00fatbol\/partidos\/{matchId}\/eventos<\/b>, que permite obtener r\u00e1pidamente eventos frescos as\u00ed como restaurar la cronolog\u00eda completa del partido si es necesario.<\/p>\n<p>A continuaci\u00f3n se muestra un ejemplo de una solicitud que se puede utilizar en el bot para obtener todos los partidos actuales en progreso y sus eventos en un ciclo de sondeo. El servidor API se utiliza como el host <b>https:\/\/api.api-sport.ru<\/b>, la autorizaci\u00f3n se realiza a trav\u00e9s del encabezado <b>Autorizaci\u00f3n<\/b> con tu clave de la cuenta personal:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\" data-no-translation=\"\">curl -X GET &quot;https:\/\/api.api-sport.ru\/v2\/football\/matches?status=inprogress&quot; \\\n  -H &quot;Authorization: YOUR_API_KEY&quot;<\/pre>\n<p>La respuesta contiene un array <b>partidos<\/b>, en el que para cada partido hay campos <b>puntajeLocal<\/b>, <b>puntajeVisitante<\/b>, <b>minutoDelPartidoActual<\/b>, un array <b>eventosEnVivo<\/b> y un bloque <b>estad\u00edsticasDelPartido<\/b>. Esta combinaci\u00f3n permite que el bot no solo conozca el hecho de un gol, sino tambi\u00e9n evaluar el contexto: cu\u00e1ntos c\u00f3rners ya se han tomado, cu\u00e1ntas tarjetas se han mostrado, c\u00f3mo est\u00e1 cambiando la din\u00e1mica. Si a esto le agregas el campo <b>oddsBase<\/b> Con coeficientes de casas de apuestas, se vuelve posible construir bots para an\u00e1lisis de apuestas y comparaci\u00f3n de l\u00edneas. Debido a la estructura de datos unificada en diferentes deportes, la API de <a href=\"http:\/\/api-sport.pro\/es\/\">api-sport.pro<\/a> es f\u00e1cilmente escalable: puedes agregar r\u00e1pidamente hockey, baloncesto o esports al bot de f\u00fatbol sin reescribir la arquitectura.<\/p>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-3\">C\u00f3mo elegir y conectar una API de eventos deportivos: registro, claves, l\u00edmites.<\/h2>\n<p>Antes de lanzar el bot, es importante elegir adecuadamente un proveedor de API deportiva y configurar correctamente la conexi\u00f3n. Primero que nada, eval\u00faa qu\u00e9 torneos y deportes necesitas, y si la API tiene las ligas espec\u00edficas para las que se planean notificaciones. A continuaci\u00f3n, presta atenci\u00f3n a la disponibilidad de eventos detallados: no todos los servicios tienen tipos separados para goles, tarjetas o sustituciones, as\u00ed como estad\u00edsticas detalladas sobre c\u00f3rners. <a href=\"http:\/\/api-sport.pro\/es\/\">api-sport.pro<\/a> Todos estos datos est\u00e1n disponibles a trav\u00e9s de la especificaci\u00f3n OpenAPI descrita abiertamente, por lo que el desarrollador entiende la estructura de las respuestas de antemano y puede planificar con precisi\u00f3n la l\u00f3gica del bot. Adem\u00e1s, considera la disponibilidad de datos sobre coeficientes de casas de apuestas si se planea la integraci\u00f3n con apuestas.<\/p>\n<p>Conectarse a la API se reduce a obtener una clave individual y agregarla a cada solicitud. En la plataforma api-sport.ru, esto se hace a trav\u00e9s de <a href=\"https:\/\/app.api-sport.ru\">tu cuenta personal<\/a>: despu\u00e9s de registrarte, recibes una clave API y la especificas en el encabezado <b>Autorizaci\u00f3n<\/b>. Luego, cualquier cliente HTTP (curl, axios, fetch, requests, etc.) podr\u00e1 acceder a los m\u00e9todos de la API. El ejemplo m\u00e1s simple en JavaScript podr\u00eda verse as\u00ed:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\" data-no-translation=\"\">fetch('https:\/\/api.api-sport.ru\/v2\/football\/matches?status=inprogress', {\n  headers: { 'Authorization': 'YOUR_API_KEY' }\n})\n  .then(res =&gt; res.json())\n  .then(data =&gt; console.log(data.matches));<\/pre>\n<p>Estudia las limitaciones sobre la frecuencia de solicitudes y el tama\u00f1o de la muestra por separado. Cualquier API deportiva tiene l\u00edmites b\u00e1sicos sobre el n\u00famero de solicitudes por unidad de tiempo, y un bot con sondeo frecuente debe trabajar correctamente con ellos. Por lo general, un intervalo de sondeo razonable (por ejemplo, 5-10 segundos para partidos clave) y almacenar en cach\u00e9 datos donde la alta frecuencia no es cr\u00edtica es suficiente. A medida que aumenta la carga, puedes optimizar la l\u00f3gica: usar filtros por estado del partido, torneos o equipos, solicitar solo los campos verdaderamente necesarios, y en el futuro, cambiar a WebSocket, que se planea lanzar en api-sport.ru y permitir\u00e1 recibir actualizaciones de eventos sin sondeo REST constante.<\/p>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-4\">C\u00f3mo obtener datos sobre goles, c\u00f3rners y tarjetas a trav\u00e9s de la API: estructura de solicitud y respuesta.<\/h2>\n<p>Para que el bot responda correctamente a goles, c\u00f3rners y tarjetas, es necesario entender d\u00f3nde exactamente en las respuestas de la API se encuentra esta informaci\u00f3n. En la secci\u00f3n de f\u00fatbol, <b>\/v2\/f\u00fatbol\/<\/b> las principales fuentes son los m\u00e9todos <b>\/matches<\/b>, <b>\/matches\/{matchId}<\/b> \u0438 <b>\/matches\/{matchId}\/events<\/b>. En el objeto de partido, el campo <b>eventosEnVivo<\/b> contiene un array de eventos en tiempo real. Cada elemento se describe por un tipo (<b>tipo<\/b>: gol, tarjeta, etc.), el tiempo del evento en minutos (<b>tiempo<\/b>), el equipo (<b>equipo<\/b>: local\/visitante) y, si est\u00e1 disponible, el jugador. Basado en estos campos, es f\u00e1cil determinar qu\u00e9 exactamente sucedi\u00f3 y qu\u00e9 texto de notificaci\u00f3n necesita ser generado para el usuario.<\/p>\n<p>Los c\u00f3rners y tarjetas se leen convenientemente del bloque <b>estad\u00edsticasDelPartido<\/b>, que viene junto con el partido. Contiene un array de per\u00edodos (por ejemplo, TODOS, 1RO, 2DO), dentro de los cuales hay grupos de estad\u00edsticas y elementos con claves como <b>tiros de esquina<\/b> or <b>tarjetas amarillas<\/b>. Esto permite al bot rastrear m\u00e9tricas acumulativas: por ejemplo, enviar una se\u00f1al tan pronto como el equipo tome el quinto c\u00f3rner o reciba la tercera tarjeta amarilla. A continuaci\u00f3n se muestra un fragmento simplificado de la respuesta JSON para ilustrar la estructura:<\/p>\n<p>{<br \/>\n  \u00abid\u00bb: 14570728,<br \/>\n  \u00abhomeScore\u00bb: { \u00abcurrent\u00bb: 1 },<br \/>\n  \u00abawayScore\u00bb: { \u00abcurrent\u00bb: 0 },<br \/>\n  \u00abliveEvents\u00bb: [<br \/>\n    {<br \/>\n      \u00abtime\u00bb: 23,<br \/>\n      \u00abtype\u00bb: \u00abgol\u00bb,<br \/>\n      \u00abteam\u00bb: \u00ablocal\u00bb,<br \/>\n      \u00abhomeScore\u00bb: 1,<br \/>\n      \u00abawayScore\u00bb: 0<br \/>\n    },<br \/>\n    {<br \/>\n      \u00abtime\u00bb: 30,<br \/>\n      \u00abtype\u00bb: \u00abtarjeta\u00bb,<br \/>\n      \u00abteam\u00bb: \u00abvisitante\u00bb,<br \/>\n      \u00abraz\u00f3n\u00bb: \u00abTarjeta amarilla\u00bb<br \/>\n    }<br \/>\n  ],<br \/>\n  \u00abestad\u00edsticasDelPartido\u00bb: [<br \/>\n    {<br \/>\n      \u00abper\u00edodo\u00bb: \u00abTODOS\u00bb,<br \/>\n      \u00abgrupos\u00bb: [<br \/>\n        {<br \/>\n          \u00abnombreDelGrupo\u00bb: \u00abResumen del partido\u00bb,<br \/>\n          \u00abelementosDeEstad\u00edsticas\u00bb: [<br \/>\n            { \u00abclave\u00bb: \u00abtirosDeEsquina\u00bb, \u00abvalorLocal\u00bb: 4, \u00abvalorVisitante\u00bb: 2 },<br \/>\n            { \u00abclave\u00bb: \u00abtarjetasAmarillas\u00bb, \u00abvalorLocal\u00bb: 1, \u00abvalorVisitante\u00bb: 2 }<br \/>\n          ]<br \/>\n        }<br \/>\n      ]<br \/>\n    }<br \/>\n  ]<br \/>\n}<\/p>\n<p>En el lado del bot, es suficiente recordar el estado anterior de las estad\u00edsticas del partido y compararlo con la nueva respuesta de la API. Si el indicador de c\u00f3rners o tarjetas ha aumentado, o ha aparecido un nuevo elemento en el array <b>eventosEnVivo<\/b> de tipo <b>gol<\/b>, se forma y env\u00eda una notificaci\u00f3n. Este enfoque funciona igualmente bien para alertas simples como \u00ab\u00a1Gol! 1:0\u00bb y para desencadenantes m\u00e1s complejos relacionados con apuestas y an\u00e1lisis en vivo, especialmente considerando que la API <a href=\"http:\/\/api-sport.pro\/es\/\">api-sport.pro<\/a> proporciona adem\u00e1s las cuotas b\u00e1sicas de las casas de apuestas a trav\u00e9s del campo <b>oddsBase<\/b>.<\/p>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-5\">C\u00f3mo crear un bot de Telegram con notificaciones sobre goles y tarjetas basado en una API deportiva.<\/h2>\n<p>El esquema pr\u00e1ctico del bot de Telegram funciona as\u00ed: el usuario inicia el bot, selecciona los torneos o equipos de inter\u00e9s, el bot guarda estas configuraciones y luego consulta peri\u00f3dicamente la API deportiva para verificar nuevos eventos. Cuando aparece un gol o una tarjeta, el bot env\u00eda un mensaje al usuario en Telegram. Es conveniente usar la API REST <b>https:\/\/api.api-sport.ru\/v2\/football<\/b> con filtrado por estado del partido (<b>en progreso<\/b>) y los torneos o equipos requeridos. As\u00ed, la l\u00f3gica principal se transfiere a un \u00fanico bucle en segundo plano que consulta la API y actualiza el estado de los partidos rastreados.<\/p>\n<p>A continuaci\u00f3n se muestra un ejemplo de c\u00f3digo Python simplificado que ilustra la idea b\u00e1sica: una solicitud a la API de eventos deportivos y el env\u00edo de una notificaci\u00f3n a trav\u00e9s de la API del Bot de Telegram. Por brevedad, el manejo de errores y el almacenamiento de estado no se muestran aqu\u00ed, pero el principio sigue siendo el mismo en cualquier implementaci\u00f3n de producci\u00f3n:<\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\" data-no-translation=\"\">import requests\nAPI_KEY = 'YOUR_API_KEY'\nTELEGRAM_TOKEN = 'TELEGRAM_BOT_TOKEN'\nCHAT_ID = 'USER_CHAT_ID'\nbase_url = 'https:\/\/api.api-sport.ru\/v2\/football\/matches'\nresp = requests.get(base_url, params={\n    'status': 'inprogress'\n}, headers={'Authorization': API_KEY})\nmatches = resp.json().get('matches', &#x5B;])\nfor match in matches:\n    for event in match.get('liveEvents', &#x5B;]):\n        if event&#x5B;'type'] == 'goal':\n            text = f&quot;\u0413\u043e\u043b! \u0421\u0447\u0435\u0442 {event&#x5B;'homeScore']}:{event&#x5B;'awayScore']} \u043d\u0430 {event&#x5B;'time']} \u043c\u0438\u043d\u0443\u0442\u0435&quot;\n            requests.get(f&quot;https:\/\/api.telegram.org\/bot{TELEGRAM_TOKEN}\/sendMessage&quot;, params={\n                'chat_id': CHAT_ID,\n                'text': text\n            })<\/pre>\n<p>En la pr\u00e1ctica, el bot debe guardar los IDs de los eventos ya procesados para evitar enviar notificaciones duplicadas y mantener las configuraciones del usuario: qu\u00e9 partidos rastrear, qu\u00e9 tipos de eventos son de inter\u00e9s. Todo esto se implementa en su servidor o funci\u00f3n en la nube, mientras que la API de eventos deportivos de api-sport.ru proporciona una fuente de datos estable y predecible. A medida que el servicio evoluciona, habr\u00e1 una oportunidad de utilizar conexiones WebSocket y funciones de IA para an\u00e1lisis predictivos, haciendo que tales bots sean a\u00fan m\u00e1s r\u00e1pidos y precisos sin complicar la l\u00f3gica de su lado.<\/p>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-6\">Configuraci\u00f3n de filtros y frecuencia de notificaci\u00f3n para el bot de partidos de f\u00fatbol.<\/h2>\n<p>Para evitar que el bot abrume al usuario sin perder eventos importantes, es necesario configurar adecuadamente los filtros y la frecuencia de consulta de la API. En las solicitudes a <b>\/v2\/f\u00fatbol\/partidos<\/b> es recomendable usar par\u00e1metros <b>estado=enprogreso<\/b>, <b>torneo_id<\/b>, <b>equipo_id<\/b> \u0438 <b>categor\u00eda_ids<\/b>. De esta manera, el bot recibir\u00e1 solo aquellos juegos que realmente est\u00e1n sucediendo en ese momento y que son genuinamente interesantes para la audiencia del usuario. Por ejemplo, para rastrear solo la Liga de Campeones y la Premier League inglesa, es suficiente pasar sus IDs separados por comas en el par\u00e1metro. <b>torneo_id<\/b>, y para la personalizaci\u00f3n \u2014 limitar a coincidencias de un equipo espec\u00edfico a trav\u00e9s de <b>equipo_id<\/b>.<\/p>\n<p>La consulta a la API puede organizarse por temporizador o a trav\u00e9s de una tarea programada. El intervalo depende de los requisitos del proyecto para la velocidad de respuesta. Para la mayor\u00eda de los bots, 5\u201315 segundos es suficiente, especialmente si solo se procesan los partidos clave. Al mismo tiempo, es importante no olvidar los l\u00edmites: con un gran n\u00famero de usuarios y torneos, es mejor separar la l\u00f3gica en varios hilos y almacenar en cach\u00e9 los datos donde un peque\u00f1o retraso es aceptable (por ejemplo, estad\u00edsticas de c\u00f3rner cada 30 segundos). Para aumentar la precisi\u00f3n, se pueden combinar dos niveles: consulta frecuente de una lista limitada de partidos \u00abcalientes\u00bb y actualizaciones menos frecuentes de la lista general de encuentros.<\/p>\n<p>Los filtros a nivel de l\u00f3gica de negocio permiten una gesti\u00f3n flexible de la carga y la experiencia del usuario. El usuario puede elegir qu\u00e9 eventos le interesan: solo goles, goles y tarjetas, todos los cambios estad\u00edsticos clave. El bot guarda estas configuraciones y, al recibir una respuesta de la API, la compara con el perfil del usuario. Por ejemplo, si solo se habilitan los c\u00f3rners, el bot analiza el bloque <b>estad\u00edsticasDelPartido<\/b> y env\u00eda una notificaci\u00f3n solo cuando se alcanza el umbral especificado. Este enfoque hace que trabajar con la API sea eficiente: un n\u00famero m\u00ednimo de solicitudes, notificaciones \u00fatiles m\u00e1ximas y alta lealtad de la audiencia a su producto.<\/p>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-7\">Errores t\u00edpicos y limitaciones al trabajar con APIs de eventos deportivos y c\u00f3mo superarlos.<\/h2>\n<p>Al desarrollar un bot basado en una API deportiva, a menudo ocurren los mismos errores. El m\u00e1s com\u00fan es la autorizaci\u00f3n incorrecta: falta de encabezado <b>Autorizaci\u00f3n<\/b> o uso de una clave expirada. Como resultado, el servidor devuelve el estado 401, y el bot \u00abpermanece en silencio\u00bb. Este problema se resuelve con una simple verificaci\u00f3n de configuraci\u00f3n al inicio de la aplicaci\u00f3n y almacenamiento centralizado de la clave obtenida a trav\u00e9s de <a href=\"https:\/\/app.api-sport.ru\">tu cuenta personal<\/a>. El segundo error com\u00fan es el uso incorrecto de los par\u00e1metros de filtrado: incorrecto <b>sportSlug<\/b> (por ejemplo, un error tipogr\u00e1fico en lugar de <b>f\u00fatbol<\/b>), IDs de torneo o equipo incorrectos. En tales casos, es importante registrar solicitudes y respuestas para ver r\u00e1pidamente las fuentes de problemas.<\/p>\n<p>Otro escenario t\u00edpico es exceder los l\u00edmites de solicitudes. Si el bot intenta consultar la API con demasiada frecuencia o sin filtros, conduce a errores y retrasos. Para evitar esto, incorpore almacenamiento en cach\u00e9, agregaci\u00f3n de solicitudes y intervalos de consulta razonables en la arquitectura. Por ejemplo, en lugar de solicitar detalles por separado para cada partido cada segundo, puede obtener la lista de partidos una vez a trav\u00e9s de <b>\/v2\/f\u00fatbol\/partidos?estado=enprogreso<\/b>, y luego actualizar solo los juegos verdaderamente importantes caso por caso. En el futuro, la transici\u00f3n a WebSocket, que est\u00e1 planeada en la plataforma api-sport.ru, permitir\u00e1 la eliminaci\u00f3n completa de las consultas \u00abinnecesarias\u00bb y la recepci\u00f3n de eventos a trav\u00e9s de suscripci\u00f3n.<\/p>\n<p>Otro aspecto importante es el manejo correcto de la estructura de respuesta. A veces, los desarrolladores se atan r\u00edgidamente al orden de los elementos en el array o no manejan nuevos campos que aparecen a medida que la API evoluciona. La estrategia correcta es centrarse en las claves descritas en la especificaci\u00f3n OpenAPI (por ejemplo, <b>tipo<\/b>, <b>tiempo<\/b>, <b>estad\u00edsticasDelPartido<\/b>, <b>oddsBase<\/b>), y anticipar que pueden aparecer datos adicionales en la respuesta. Esto hace que el bot sea resistente a las actualizaciones de la plataforma y permite la integraci\u00f3n fluida de nuevas funciones, como estad\u00edsticas para otros deportes, integraci\u00f3n con APIs de cuotas de apuestas o servicios de IA basados en datos. <a href=\"http:\/\/api-sport.pro\/es\/\">api-sport.pro<\/a>.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Contents What is a sports events API and how to use it to get goals, corners, and cards Overview of popular football APIs for goal notifications and match statistics How to choose and connect a sports events API: registration, keys, limits How to get data on goals, corners, and cards via API: request and response structure How to create a Telegram bot with [\u2026]<\/p>","protected":false},"author":1,"featured_media":1269,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","faq":"[{\"question\":\"\u041a\u0430\u043a\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043f\u043e \u0444\u0443\u0442\u0431\u043e\u043b\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 API \u0434\u043b\u044f \u0431\u043e\u0442\u0430?\",\"answer\":\"\u0427\u0435\u0440\u0435\u0437 API \u0441\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0433\u043e\u043b\u044b, \u0436\u0435\u043b\u0442\u044b\u0435 \u0438 \u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438, \u0437\u0430\u043c\u0435\u043d\u044b, \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043c\u0430\u0442\u0447\u0430: \u0443\u0433\u043b\u043e\u0432\u044b\u0435, \u0443\u0434\u0430\u0440\u044b, \u0444\u043e\u043b\u044b, \u043e\u0444\u0441\u0430\u0439\u0434\u044b \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u0413\u043e\u043b\u044b \u0438 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445 liveEvents \u0438 \/events, \u0443\u0433\u043b\u043e\u0432\u044b\u0435 \u0438 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u0431\u043b\u043e\u043a\u0435 matchStatistics.\"},{\"question\":\"\u041a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u0431\u043e\u0442 \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c API, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442\u044c \u043b\u0438\u043c\u0438\u0442\u044b?\",\"answer\":\"\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043b\u0438\u043c\u0438\u0442\u044b \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0430\u0440\u0438\u0444\u0430, \u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0434\u043b\u044f \u0431\u043e\u0442\u0430 \u0441 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e live-\u043c\u0430\u0442\u0447\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 5\u201315 \u0441\u0435\u043a\u0443\u043d\u0434 \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043c\u0430\u0442\u0447\u0435\u0439. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043f\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0443, \u0442\u0443\u0440\u043d\u0438\u0440\u0430\u043c \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u0434\u0435\u0442\u0430\u043b\u044f\u043c \u043c\u0430\u0442\u0447\u0430, \u0435\u0441\u043b\u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c.\"},{\"question\":\"\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0438\u043b\u0438 \u0442\u0443\u0440\u043d\u0438\u0440\u0443?\",\"answer\":\"\u0414\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b tournament_id \u0438 team_id. \u0411\u043e\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0432\u044b\u0431\u043e\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0443\u0440\u043d\u0438\u0440\u043e\u0432) \u0438 \u043f\u0440\u0438 \u043e\u043f\u0440\u043e\u0441\u0435 API \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u0430\u0442\u0447\u0438. \u042d\u0442\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u043c\u0438.\"},{\"question\":\"\u041a\u0430\u043a \u0431\u043e\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 \u043c\u0430\u0442\u0447\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0435\u043b \u0433\u043e\u043b \u0438\u043b\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430?\",\"answer\":\"\u0411\u043e\u0442 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445 liveEvents \u0438 \/events. \u0415\u0441\u043b\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0441 type = goal \u0438\u043b\u0438 type = card, \u043e\u043d \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0441\u0447\u0435\u0442\u0430, \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0438\u043c\u0435\u043d\u0438 \u0438\u0433\u0440\u043e\u043a\u0430. \u0414\u043b\u044f \u0443\u0433\u043b\u043e\u0432\u044b\u0445 \u0438 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043a\u0430\u0440\u0442\u043e\u0447\u0435\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u043a\u0435 matchStatistics.\"},{\"question\":\": \u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c API-\u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 api-sport.ru?\",\"answer\":\"\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043b\u0438\u0447\u043d\u043e\u043c \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 https:\/\/app.api-sport.ru, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c API-\u043a\u043b\u044e\u0447. \u0414\u0430\u043b\u0435\u0435 \u044d\u0442\u043e\u0442 \u043a\u043b\u044e\u0447 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 Authorization \u043a\u0430\u0436\u0434\u043e\u0433\u043e HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 https:\/\/api.api-sport.ru.\"},{\"question\":\"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043b\u0438 API \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u0442\u0431\u043e\u043b \u0438\u043b\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0434\u044b \u0441\u043f\u043e\u0440\u0442\u0430 \u0438 \u0441\u0442\u0430\u0432\u043a\u0438?\",\"answer\":\"\u041f\u043e\u043c\u0438\u043c\u043e \u0444\u0443\u0442\u0431\u043e\u043b\u0430, API \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0445\u043e\u043a\u043a\u0435\u0439, \u0431\u0430\u0441\u043a\u0435\u0442\u0431\u043e\u043b, \u0442\u0435\u043d\u043d\u0438\u0441, \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043d\u043d\u0438\u0441, \u043a\u0438\u0431\u0435\u0440\u0441\u043f\u043e\u0440\u0442 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u044b. \u0412 \u043e\u0442\u0432\u0435\u0442\u0430\u0445 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0431\u043b\u043e\u043a oddsBase \u0441 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u0431\u0443\u043a\u043c\u0435\u043a\u0435\u0440\u043e\u0432, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043a \u0434\u043b\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0431\u043e\u0442\u043e\u0432, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432\u043e\u043a\u0440\u0443\u0433 \u0441\u0442\u0430\u0432\u043e\u043a.\"}]","footnotes":""},"categories":[1],"tags":[],"class_list":["post-1270","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"yoast_head":"<title>Bot with notifications about goals and cards \u2014 API of sports events<\/title>\n<meta name=\"description\" content=\"How to create a bot with notifications about goals, corners, and cards based on a sports API. Step-by-step connection scheme, working with matches and events, code examples.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/api-sport.pro\/es\/como-crear-un-bot-que-envie-notificaciones-sobre-goles-corners-y-tarjetas\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bot with notifications about goals and cards \u2014 API of sports events\" \/>\n<meta property=\"og:description\" content=\"How to create a bot with notifications about goals, corners, and cards based on a sports API. Step-by-step connection scheme, working with matches and events, code examples.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/api-sport.pro\/es\/como-crear-un-bot-que-envie-notificaciones-sobre-goles-corners-y-tarjetas\/\" \/>\n<meta property=\"og:site_name\" content=\"Sports Events API\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-17T17:07:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-bota-kotoryi-prisylaet-uvedomleniya-o-golakh-uglovykh-i-kartochkakh_posts.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1408\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/\",\"url\":\"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/\",\"name\":\"Bot with notifications about goals and cards \u2014 API of sports events\",\"isPartOf\":{\"@id\":\"https:\/\/api-sport.pro\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-bota-kotoryi-prisylaet-uvedomleniya-o-golakh-uglovykh-i-kartochkakh_posts.jpg\",\"datePublished\":\"2025-12-17T17:07:59+00:00\",\"author\":{\"@id\":\"https:\/\/api-sport.pro\/#\/schema\/person\/bc93f449b3753a5f254264da266fb601\"},\"description\":\"How to create a bot with notifications about goals, corners, and cards based on a sports API. Step-by-step connection scheme, working with matches and events, code examples.\",\"breadcrumb\":{\"@id\":\"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/#primaryimage\",\"url\":\"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-bota-kotoryi-prisylaet-uvedomleniya-o-golakh-uglovykh-i-kartochkakh_posts.jpg\",\"contentUrl\":\"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-bota-kotoryi-prisylaet-uvedomleniya-o-golakh-uglovykh-i-kartochkakh_posts.jpg\",\"width\":1408,\"height\":768,\"caption\":\"\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u0433\u043e\u043b\u0430\u0445, \u0443\u0433\u043b\u043e\u0432\u044b\u0445 \u0438 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430\u0445?\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\",\"item\":\"https:\/\/api-sport.pro\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to create a bot that sends notifications about goals, corners, and cards?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/api-sport.pro\/#website\",\"url\":\"https:\/\/api-sport.pro\/\",\"name\":\"Sports Events API\",\"description\":\"Sports Events API\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/api-sport.pro\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/api-sport.pro\/#\/schema\/person\/bc93f449b3753a5f254264da266fb601\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/api-sport.pro\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8f3dce32feb8659c1f1c917db74325481c6133714f03d5a9433ba6df23a857ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8f3dce32feb8659c1f1c917db74325481c6133714f03d5a9433ba6df23a857ab?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/api-sport.pro\"],\"url\":\"https:\/\/api-sport.pro\/es\/author\/admin\/\"}]}<\/script>","yoast_head_json":{"title":"Bot con notificaciones sobre goles y tarjetas \u2014 API de eventos deportivos","description":"C\u00f3mo crear un bot con notificaciones sobre goles, c\u00f3rners y tarjetas basado en una API deportiva. Esquema de conexi\u00f3n paso a paso, trabajo con partidos y eventos, ejemplos de c\u00f3digo.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/api-sport.pro\/es\/como-crear-un-bot-que-envie-notificaciones-sobre-goles-corners-y-tarjetas\/","og_locale":"es_ES","og_type":"article","og_title":"Bot with notifications about goals and cards \u2014 API of sports events","og_description":"How to create a bot with notifications about goals, corners, and cards based on a sports API. Step-by-step connection scheme, working with matches and events, code examples.","og_url":"https:\/\/api-sport.pro\/es\/como-crear-un-bot-que-envie-notificaciones-sobre-goles-corners-y-tarjetas\/","og_site_name":"Sports Events API","article_published_time":"2025-12-17T17:07:59+00:00","og_image":[{"width":1408,"height":768,"url":"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-bota-kotoryi-prisylaet-uvedomleniya-o-golakh-uglovykh-i-kartochkakh_posts.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"admin","Tiempo de lectura":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/","url":"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/","name":"Bot con notificaciones sobre goles y tarjetas \u2014 API de eventos deportivos","isPartOf":{"@id":"https:\/\/api-sport.pro\/#website"},"primaryImageOfPage":{"@id":"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/#primaryimage"},"image":{"@id":"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/#primaryimage"},"thumbnailUrl":"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-bota-kotoryi-prisylaet-uvedomleniya-o-golakh-uglovykh-i-kartochkakh_posts.jpg","datePublished":"2025-12-17T17:07:59+00:00","author":{"@id":"https:\/\/api-sport.pro\/#\/schema\/person\/bc93f449b3753a5f254264da266fb601"},"description":"C\u00f3mo crear un bot con notificaciones sobre goles, c\u00f3rners y tarjetas basado en una API deportiva. Esquema de conexi\u00f3n paso a paso, trabajo con partidos y eventos, ejemplos de c\u00f3digo.","breadcrumb":{"@id":"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/#primaryimage","url":"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-bota-kotoryi-prisylaet-uvedomleniya-o-golakh-uglovykh-i-kartochkakh_posts.jpg","contentUrl":"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-bota-kotoryi-prisylaet-uvedomleniya-o-golakh-uglovykh-i-kartochkakh_posts.jpg","width":1408,"height":768,"caption":"\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u0433\u043e\u043b\u0430\u0445, \u0443\u0433\u043b\u043e\u0432\u044b\u0445 \u0438 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430\u0445?"},{"@type":"BreadcrumbList","@id":"https:\/\/api-sport.pro\/how-to-create-a-bot-that-sends-notifications-about-goals-corners-and-cards\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/api-sport.pro\/"},{"@type":"ListItem","position":2,"name":"How to create a bot that sends notifications about goals, corners, and cards?"}]},{"@type":"WebSite","@id":"https:\/\/api-sport.pro\/#website","url":"https:\/\/api-sport.pro\/","name":"API de Eventos Deportivos","description":"API de Eventos Deportivos","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/api-sport.pro\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/api-sport.pro\/#\/schema\/person\/bc93f449b3753a5f254264da266fb601","name":"administrador","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/api-sport.pro\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8f3dce32feb8659c1f1c917db74325481c6133714f03d5a9433ba6df23a857ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8f3dce32feb8659c1f1c917db74325481c6133714f03d5a9433ba6df23a857ab?s=96&d=mm&r=g","caption":"admin"},"sameAs":["http:\/\/api-sport.pro"],"url":"https:\/\/api-sport.pro\/es\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/posts\/1270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/comments?post=1270"}],"version-history":[{"count":3,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/posts\/1270\/revisions"}],"predecessor-version":[{"id":1687,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/posts\/1270\/revisions\/1687"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/media\/1269"}],"wp:attachment":[{"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/media?parent=1270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/categories?post=1270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/tags?post=1270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}