Registro en la consola mientras se depura
Si estás familiarizado con JavaScript / TypeScript probablemente hayas utilizado console
o console
para comprobar lo que está sucediendo mientras depuras algo. Mientras trabajas en tu bot o middleware puede que quieras comprobar algo similar: ¿Qué ha pasado y cuánto tiempo ha tardado?
Este plugin está interesado en peticiones individuales para depurar problemas individuales. Estando en un entorno de producción, probablemente quieras algo opuesto para tener una visión general. Por ejemplo: al depurar por qué falla /start
comprobarás la actualización individual de Telegram. En un contexto de producción estás más interesado en todos los mensajes /start
que están ocurriendo. Esta librería está pensada para ayudar con las actualizaciones individuales.
Depurar tu implementación
import { generateUpdateMiddleware } from "telegraf-middleware-console-time";
if (process.env.NODE_ENV !== "production") {
bot.use(generateUpdateMiddleware());
}
// Tu implementación
bot.command("start" /* , ... */);
2
3
4
5
6
7
8
que dará salida a cosas como esta:
2020-03-31T14:32:36.974Z 490af message text Edgar 6 /start: 926.247ms
2020-03-31T14:32:57.750Z 490ag message text Edgar 6 /start: 914.764ms
2020-03-31T14:33:01.188Z 490ah message text Edgar 5 /stop: 302.666ms
2020-03-31T14:46:11.385Z 490ai message text Edgar 6 /start: 892.452ms
2
3
4
El 490af
es el update
.
El número que precede a los comandos es la longitud total del contenido. Esto es útil cuando se considera la longitud máxima para cosas como los datos de devolución de llamada.
El contenido en sí se acorta para evitar el spam de los registros.
Depurar tu middleware
Cuando creas tu propio middleware o asumes los tiempos lentos de otro middleware puedes usar estos middlewares para crear un perfil de tiempos.
import {
generateAfterMiddleware,
generateBeforeMiddleware,
} from "telegraf-middleware-console-time";
const bot = new Bot("");
// Utiliza BeforeMiddleware antes de cargar el middleware probado.
bot.use(generateBeforeMiddleware("foo"));
// Middleware a probar
bot.use(/* ... */);
// Usar AfterMiddleware después de cargar el middleware que se está probando (con la misma etiqueta).
bot.use(generateAfterMiddleware("foo"));
// Otros middleware/implementaciones (tomarán la cantidad de tiempo "interna" cuando se usen).
bot.use(/* ... */);
bot.on("message" /* ... */);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
El resultado será algo así:
490ai foo before: 304.185ms
490ai foo inner: 83.122ms
490ai foo after: 501.028ms
490ai foo total: 891.849ms
2
3
4
Esto indica que el middleware comprobado por sí solo tardó 800ms y no tiene el rendimiento que quizás se necesita.