jueves, marzo 28, 2024
No menu items!
InicioBlogsLímite de inundación de Telegram: ¿cómo solucionar este error?

Límite de inundación de Telegram: ¿cómo solucionar este error?

Telegram le permite crear chatbots dentro del Messenger para múltiples propósitos, pero algunos desarrolladores informan que reciben un error de límite de inundación al enviar solicitudes.

En este artículo detallado, exploraremos el significado de este límite y cómo puede evitar recibir el error al enviar solicitudes o mensajes a los usuarios.

¿Qué significa la espera de inundación de Telegram?

El Telegrama El límite de inundación es el mecanismo que la plataforma ha establecido para evitar el spam y el abuso de su servicio. Para ello, ha fijado el número máximo de mensajes o solicitudes que un chatbot puede realizar a la API de Telegram en un periodo de tiempo concreto.

Si bien Telegram no especifica el límite exacto para enviar mensajes/solicitudes, esta es la regla general:

  • La API del bot de Telegram te permite enviar solo 10 solicitudes de código por cuenta.
  • No puedes enviar 1 mensaje por segundo a un solo chat.
  • Telegram no te permitirá enviar más de 30 mensajes por segundo a múltiples usuarios y más de 20 solicitudes a grupos o canales de Telegram.
  • Solo puedes crear 50 grupos o canales por cuenta.

Si excede estos límites, obtendrá el código de estado 429 (por realizar demasiadas solicitudes), error de espera de inundación o el error “reintentar después”. El mensaje puede verse así:

🔥 Leer:  Este guantelete de Iron Man de bricolaje es capaz de disparar cohetes reales

Se invocó el error Floodwait al enviar un mensaje; forzando un intervalo de espera de 70792 segundos para….

Para manejar esta situación, tendrá que esperar la cantidad de tiempo especificada (hasta que se restablezca el límite) y luego intentar enviar solicitudes más tarde.

NOTA: La duración exacta del límite puede variar, según el uso y la carga del servidor.

¿Cómo evito recibir el error de límite de espera de inundación de Telegram?

Calcule la tasa de espera de inundaciones

La primera solución para evitar recibir este error de límite o mensaje de error 429 es calcular su tasa.

Realice N número de llamadas a métodos para recibir un FLOOD_WAIT_X. Esto te dará:

Tasa de espera de inundación: X+Tiempo total para realizar llamadas a métodos

Ahora, use la función de suspensión para realizar N llamadas a métodos dentro de los segundos de tasa de inundación para evitar que la inundación espere.

Utilice el objeto de entidad de la parte receptora

Algunos usuarios informan que en lugar de usar el nombre del receptor como una cadena, usar su objeto de entidad como parámetro también les ayudó a evitar alcanzar este límite específico en Telegram. Aquí está el código que puedes usar en la API del bot:

con TelegramClientSync(StringSession(session_id), api_id, api_hash) como cliente:
bot_entity = client.get_input_entity(peer=”mibot”)
resultados = esperar cliente.send_message(entidad=bot_entidad, mensaje=mensaje)

Luego, intente enviar solicitudes a usuarios o grupos y vea si esta solución ayuda.

Realizar pruebas en el bot

Si estás en la fase de prueba de tu Telegrama bot, puede realizar las siguientes tres pruebas para reducir las posibilidades de obtener errores FLOOD_WAIT.

  • En lugar del servidor de producción, conéctese al servidor de prueba (solo si es posible).
  • Para conectarse al servidor de prueba, cree cuentas de prueba con los números de teléfono 99966XYYYY y utilícelas (X e Y tienen de 0 a 9 dígitos).
  • En el servidor de prueba, utilice el número de teléfono que utilizó para crear el ID/Hash de API para conectarse con el servidor.
🔥 Leer:  Científico chino pasa 71,000 voltios de electricidad estática a través de su cuerpo para probar el límite humano

Cambiar el intervalo de envío de solicitudes

Si envía demasiados mensajes o notificaciones a diferentes usuarios en Telegram, terminará recibiendo este error de límite.

Por lo tanto, es recomendable cambiar los intervalos de envío de solicitudes a un período de tiempo amplio de 8 a 12 horas y verificar la solución.

Utilice el complemento de reintento automático

Una vez que alcance el límite de inundación en Telegram, su única opción es esperar el tiempo especificado y luego volver a intentarlo. Para ello, puede utilizar el siguiente código del complemento de reintento automático en la API del bot para evitar volver a recibir el error y enviar mensajes a los usuarios.

función pausa(segundos: número) {
devolver nueva Promesa(resolver => setTimeout(resolver, 1000 * segundos))
}

tipo AutoRetryTransformer = (…argumentos: cualquiera[]) => cualquiera

/**
* Especificar opciones al crear un transformador de reintento automático
* función.
*/
interfaz de exportación AutoRetryOptions {
maxDelaySeconds: infinito

maxRetryAttempts: Infinito

reintentarOnInternalServerErrors: booleano
}
función de exportación reintento automático (
¿opciones?: Parcial
): AutoRetryTransformer {
const maxDelay = opciones?.maxDelaySeconds ?? 3600
const maxRetries = opciones?.maxRetryAttempts ?? 3
const retryOnInternalServerErrors =
¿opciones?.retryOnInternalServerErrors ?? FALSO
devolver asíncrono (anterior, método, carga útil, señal) => {
dejar intentos restantes = maxRetries
let result = await prev(método, carga útil, señal)
while (!resultado.ok && intentos restantes– > 0) {
dejar reintentar = falso
si (
tipo de resultado.parámetros?.retry_after === 'número' &&
resultado.parameters.retry_after <= maxDelay
) {
esperar pausa (resultado.parametros.retry_after)
reintentar = verdadero
} más si (
resultado.código_error >= 500 &&
reintentarOnInternalServerErrors
) {
reintentar = verdadero
}
si (!retry) devuelve resultado
else resultado = esperar anterior (método, carga útil, señal)
}
resultado de retorno
}
}

NOTA: Es posible que necesite usar una cola o configurar el complemento de manera que nunca le lleve mucho tiempo ejecutar eficazmente el bot en webhooks.

Conclusión

En este artículo, exploramos los motivos del límite de inundación de Telegram y explicamos algunos métodos para evitar errores al enviar mensajes o solicitudes a usuarios y grupos.

Con suerte, ahora puedes garantizar una experiencia más fluida con tus bots en Telegram.

Recomendamos

Populares