Telegram introdujo nuevos bots dentro de su API en 2015 para permitir a los desarrolladores crear páginas de destino en su Messenger, pero estos chatbots vienen con un límite de velocidad para enviar solicitudes.

Telegram ha establecido el límite de tasa API para enviar mensajes a usuarios o grupos. Puede enviar 1 mensaje/seg a chats individuales, 20 solicitudes/seg a grupos y canales, y solo 30 mensajes por segundo a múltiples usuarios. Para evitar alcanzar este límite, distribuya las notificaciones en intervalos más largos o utilice el código de cola en la API del bot para gestionar las solicitudes.

Para su información, exploraremos el límite de velocidad de la API de Telegram para ayudarlo a comprender cómo enviar sus solicitudes o mensajes de manera efectiva para ganar más usuarios para su bot.

¿Cuál es el límite de velocidad para el bot de Telegram?

El límite de velocidad de la API de Telegram es la cantidad de mensajes/solicitudes que puede enviar a diferentes usuarios o grupos por segundo. Si bien el límite exacto puede depender del tipo de solicitud, aquí está la lista general:

Charlas individuales: La plataforma ha fijado el límite de enviar un mensaje por segundo a un individuo en particular.

Grupos y canales: No se le permite enviar más de 20 solicitudes/mensajes por minuto al mismo grupo. Además, sólo puedes crear 50 grupos o canales en un día.

En general: Telegram te permite enviar solo 30 mensajes por segundo a múltiples usuarios. Para una sola cuenta, no puedes tener más de 10 nombres de usuario públicos.

Telegram ha establecido estas limitaciones para evitar el spam y mantener el servicio funcionando sin problemas. Tenga en cuenta que recibirá el código de error 429 si excede este límite de tarifa. Esto significa que ya no podrá enviar ninguna solicitud y es posible que deba volver a intentarlo más tarde.

NOTA: Si Telegram detecta alguna actividad de spam, puede bloquear su cuenta para siempre.

¿Cómo evito el límite de tarifa de la API de Telegram?

Si desea evitar alcanzar el límite de velocidad de la API de Telegram, aquí hay 4 formas de hacerlo, según el tipo de solicitud que esté realizando.

Distribuir notificaciones en intervalos más largos

Para enviar una gran cantidad de solicitudes/mensajes para ganar más usuarios, intente distribuirlos en intervalos más largos. Esto puede durar de 8 a 12 horas y le ayudará a no exceder el límite de velocidad API en Telegram.

Por ejemplo, puede enviar 10 solicitudes por segundo y luego esperar 3 segundos antes de enviar otras nuevas, en lugar de 30 en 1 segundo.

NOTA: Si envía mensajes al mismo chat o persona, intente limitar su velocidad a un mensaje por segundo.

De esta manera, Telegram no detectará ninguna actividad de spam en su servidor y no recibirá el mensaje de error 429, que indica que ha alcanzado el límite de tasa de API.

Utilice la cola para gestionar solicitudes

La siguiente solución para evitar alcanzar el límite de velocidad de la API de Telegram es utilizar un código de cola en su bot para retrasar sus solicitudes. Para hacer esto, simplemente agregue el siguiente código a su API:

lock_queue = Cola(1)
request_queue = Cola(3)
definición solicitud_api(argumento):
si cola_bloqueo.vacío():
intentar:
solicitudes_cola.put_nowait(tiempo tiempo())
excepto cola. Completo:
cola_bloqueo.poner(1)
first_request_time = solicitudes_queue.get()
registrador.info('Hora de la primera solicitud: ' + str(primera_hora_solicitud))
tiempo_actual = tiempo.tiempo()
tiempo_pasado = tiempo_actual – tiempo_primera_solicitud
si tiempo_pasado >= 1:
request_queue.put_nowait(tiempo.tiempo())
lock_queue.get()
demás:
logger.info(tiempo_pasado)
tiempo de dormir(1 – tiempo_pasado)
request_queue.put_nowait(tiempo.tiempo())
lock_queue.get()
demás:
lock_queue.put(1)
first_request_time = vk_requests_queue.get()
registrador.info('Hora de la primera solicitud: ' + str(primera_hora_solicitud))
tiempo_actual = tiempo.tiempo()
tiempo_pasado = tiempo_actual – tiempo_primera_solicitud
si tiempo_pasado >= 1:
request_queue.put_nowait(tiempo.tiempo())
lock_queue.get()
demás:
logger.info(tiempo_pasado)
tiempo de dormir(1 – tiempo_pasado)
request_queue.put_nowait(tiempo.tiempo())
lock_queue.get()
resultado = make_api_request(argumento) # las solicitudes también las realiza externamente módulo.
devolver resultado

Si este código no ayuda, puedes probar este:

importar Redistribuir

r_db = redis.Redis(puerto=puerto, db=db)

definición solicitud_límite(solicitud_para_hacer, límite =3por=1nombre_solicitud='prueba'**kwargs):
over_limit_lua_ = “'
nombre_clave local = LLAVES[1]
límite local = tonúmero(ARGV[1])
duración local = ARGV[2]

clave local = nombre_clave .. '_num_de_solicitudes'
recuento local = redis.call('INCR', llave)
si tonumber(count) > límite entonces
hora_izquierda local = redis.call('PTTL', llave)
tiempo de regreso_izquierda
fin
redis.call('EXPIRAR', clave, duración)
regresar -2
“'

si no hasattr(r_db, 'over_limit_lua'):
r_db.over_limit_lua = r_db.register_script(over_limit_lua_)

solicitud_posibilidad = En t(r_db.over_limit_lua(claves=nombre_solicitud, argumentos=[limit, per]))
si solicitud_posibilidad > 0:
tiempo.dormir(solicitud_posibilidad / 1000.0)
devolver limit_request(solicitud_para_hacer, límite, por, nombre_solicitud, **kwargs)
demás:
request_result = request_to_make(**kwargs)
devolver resultado_solicitud

Una vez que agregue el código a la API de su bot de Telegram, intente enviar las solicitudes a los usuarios y vea si aún recibe el código de error.

Establecer tiempos de espera antes de enviar mensajes

También puedes configurar un tiempo de espera o temporizador en la API de tu bot de Telegram para retrasar los mensajes y evitar exceder el límite de velocidad. Para esto, agregue el siguiente código:

constante retraso = intervalo => nuevo Promesa(resolver => setTimeout(resolver, intervalo));
constante enviarMensaje = parámetros asíncronos => {
esperar demora(1000);

devolver axios(parámetros);
};

También puede configurar un limitador de tasa de solicitud con este código:

constante Limitador de tasa = requerir ('limitador-de-tasa-de-solicitud');
constante limitador = nuevo Limitador de velocidad(120); // 120 solicitudes por minuto
constante sendMessage = params => limitador.request(params);
enviar mensaje('/enviarMensaje?texto=hola')
.entonces(respuesta => {
consola.log('¡Hola!'respuesta);
}).atrapar(errar => {
consola.log('Oh mi'errar);
});

Luego, confirme si aún recibe el código de error 429 al enviar mensajes a los usuarios en Telegram.

Utilice su propia API de servidor

Si supera el límite de velocidad de la API de Telegram, utilice su propio servidor API para acceder a las funciones y enviar más mensajes o solicitudes.

Para esto, especifique la opción – – local en la API del bot. Esto habilitará funciones que no están disponibles en https://api.telegram.org, como:

Límite de tamaño de descarga de archivost: Ninguno

Límite de tamaño de carga de archivos: 2000MB

URL del webhook: URL HTTP

Ruta de carga de archivos: Esquema local y USL

IP del webhook: Cualquier dirección IP local

Puerto de webhook: Cualquier

Max_webhook_connections: Se puede configurar hasta 100000.

Además, también obtienes la ruta local absoluta directamente en el campo “file_path” sin la Obtener el archivo solicitud para descargarlo.

Conclusión

En esta guía completa, analizamos cuál es el límite de velocidad de la API de Telegram y cómo puede evitar recibir su código de error 429.

Con suerte, este artículo le brindó una comprensión clara del límite de velocidad al enviar solicitudes/mensajes a través de sus bots de Telegram.

Tauqeer Ahmed es un experto en tecnología con más de 10 años de experiencia en la industria. Es licenciado en Ciencias de la Computación y se especializa en seguridad de redes y resolución de problemas de software. Puede obtener más información sobre él en /tauqeer-ahmed/

Ver todas las publicaciones