Alojamiento: Deno Deploy
Esta guía te explica cómo puedes alojar tus bots de grammy en Deno Deploy.
Ten en cuenta que esta guía es solo para usuarios de Deno, y que necesitas tener una cuenta Git
Deno Deploy es ideal para la mayoría de los bots sencillos, y debe tener en cuenta que no todas las funciones de Deno están disponibles para las aplicaciones que se ejecutan en Deno Deploy. Por ejemplo, la plataforma solo admite un conjunto limitado de las API del sistema de archivos disponibles en Deno. Es como las otras muchas plataformas serverless-y-paas, pero dedicadas a las aplicaciones Deno.
El resultado de este tutorial puede verse en nuestro repositorio de bots de ejemplo.
Preparación de su código
Recuerda que necesitas ejecutar tu bot en webhhoks, por lo que debes usar
webhook
y no llamar aCallback bot
en tu código..start()
- Asegúrate de que tienes un archivo que exporta tu objeto
Bot
, para que puedas importarlo después para ejecutarlo. - Crea un archivo llamado
main
o.ts main
, o en realidad cualquier nombre que te guste (pero deberías recordar y usar este como el archivo principal para desplegar), con el siguiente contenido:.js
import { Bot, webhookCallback } from "https://deno.land/x/grammy@v1.30.0/mod.ts";
// Puedes modificar esto a la forma correcta de importar tu objeto `Bot`.
import bot from "./bot.ts";
const handleUpdate = webhookCallback(bot, "std/http");
Deno.serve(async (req) => {
if (req.method === "POST") {
const url = new URL(req.url);
if (url.pathname.slice(1) === bot.token) {
try {
return await handleUpdate(req);
} catch (err) {
console.error(err);
}
}
}
return new Response();
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Le aconsejamos que tenga su manejador en alguna ruta secreta en lugar de la raíz (/
). Aquí, estamos usando el token del bot (/<bot token>
).
Despliegue
Método 1: Con GitHub
Este es el método recomendado, y el más fácil de seguir. La principal ventaja de seguir este método es que Deno Deploy estará atento a los cambios en tu repositorio que incluya el código de tu bot, y desplegará las nuevas versiones automáticamente.
Crea un repositorio en GitHub, puede ser privado o público.
Empuja tu código.
Es recomendable que tengas una única rama estable y que hagas tus pruebas en otras ramas, para que no te ocurran cosas inesperadas.
Visite su Deno Deploy dashboard.
Haga clic en “Nuevo proyecto”.
Instala la app de GitHub en tu cuenta u organización, y elige tu repositorio.
Selecciona la rama que quieres desplegar.
Selecciona el archivo de entrada
main
, y haz clic en “Deploy Project” para desplegar..ts
Método 2: Con deployctl
Este es un método para usuarios más avanzados o si no quieres subir tu código a GitHub. Te permite desplegar el proyecto a través de la línea de comandos o de las GitHub Actions.
Instala
deployctl
.Crea un token de acceso desde la sección “Access Tokens” en configuración de la cuenta.
Vaya al directorio de su proyecto y ejecute el siguiente comando:
shdeployctl deploy --project=<project> --entrypoint=./main.ts --prod --token=<token>
Configuración de variables de entorno
Las variables de entorno pueden establecerse accediendo a la configuración del proyecto después de desplegarlo.
Pero esto también es posible desde la línea de comandos:
- Puedes asignar variables de entorno desde un archivo dotenv añadiendo el argumento
-
.-env -file = <file> - También puede especificarlas individualmente utilizando el argumento
-
.-env = <clave = valor>
- Puedes asignar variables de entorno desde un archivo dotenv añadiendo el argumento
Para configurar las Acciones de GitHub, consulta this.
Consulta la documentación de deployctl para más información.
Nota
Después de poner en marcha tu aplicación, debes configurar los ajustes de los webhooks de tu bot para que apunten a tu aplicación. Para ello, envía una petición a
curl https://api.telegram.org/bot<token>/setWebhook?url=<url>
sustituyendo <token>
por el token de tu bot, y <url>
por la URL completa de tu aplicación junto con la ruta al manejador del webhook.