Control de flujo (transformer-throttler
)
Considere usar el plugin auto
-retry en su lugar.
Este plugin pone en cola la instancia de solicitudes de API salientes a través de Bottleneck para evitar que su bot alcance los límites de velocidad como se describe en esta sección avanzada de la documentación.
Existen límites no documentados en la API
Telegram implementa límites de velocidad no especificados y no documentados para algunas llamadas de la API. Estos límites no documentados no son tenidos en cuenta por el estrangulador. Si aún desea utilizar este plugin, considere la posibilidad de utilizar el auto
Uso
Aquí hay un ejemplo de cómo usar este plugin con las opciones por defecto. Ten en cuenta que las opciones por defecto están alineadas con los límites de velocidad reales aplicados por Telegram, por lo que deberían estar bien.
import { Bot } from "grammy";
import { apiThrottler } from "@grammyjs/transformer-throttler";
const bot = new Bot("");
const throttler = apiThrottler();
bot.api.config.use(throttler);
bot.command("example", (ctx) => ctx.reply("I am throttled"));
bot.start();
2
3
4
5
6
7
8
9
10
const { Bot } = require("grammy");
const { apiThrottler } = require("@grammyjs/transformer-throttler");
const bot = new Bot("");
const throttler = apiThrottler();
bot.api.config.use(throttler);
bot.command("example", (ctx) => ctx.reply("I am throttled"));
bot.start();
2
3
4
5
6
7
8
9
10
import { Bot } from "https://deno.land/x/grammy@v1.27.0/mod.ts";
import { apiThrottler } from "https://deno.land/x/grammy_transformer_throttler@v1.2.1/mod.ts";
const bot = new Bot("");
const throttler = apiThrottler();
bot.api.config.use(throttler);
bot.command("example", (ctx) => ctx.reply("I am throttled"));
bot.start();
2
3
4
5
6
7
8
9
10
Configuración
El throttler acepta un único argumento opcional de la siguiente forma:
type ThrottlerOptions = {
global?: Bottleneck.ConstructorOptions; // para limitar todas las llamadas a la API
group?: Bottleneck.ConstructorOptions; // para limitar los mensajes de grupo salientes
out?: Bottleneck.ConstructorOptions; // para limitar los mensajes privados salientes
};
2
3
4
5
La lista completa de propiedades de los objetos disponibles para Bottleneck
se puede encontrar en Bottleneck.
Si no se pasa ningún argumento, el estrangulador creado utilizará los ajustes de configuración por defecto que deberían ser apropiados para la mayoría de los casos de uso. La configuración por defecto es la siguiente:
// Acelerador global saliente
const globalConfig = {
reservoir: 30, // número de nuevos trabajos que el throttler aceptará al inicio
reservoirRefreshAmount: 30, // número de trabajos que el throttler aceptará después de la actualización
reservoirRefreshInterval: 1000, // intervalo en milisegundos en el que se refrescará el reservorio
};
// Acelerador de grupo saliente
const groupConfig = {
maxConcurrent: 1, // sólo 1 trabajo a la vez
minTime: 1000, // esperar esta cantidad de milisegundos para estar listo, después de un trabajo
reservoir: 20, // número de nuevos trabajos que el throttler aceptará al inicio
reservoirRefreshAmount: 20, // número de trabajos que el throttler aceptará después de la actualización
reservoirRefreshInterval: 60000, // intervalo en milisegundos en el que se refrescará el reservorio
};
// Acelerador privado de salida
const outConfig = {
maxConcurrent: 1, // sólo 1 trabajo a la vez
minTime: 1000, // esperar esta cantidad de milisegundos para estar listo, después de un trabajo
};
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Resumen del plugin
- Nombre:
transformer
-throttler - Fuente
- Referencia