Alojamiento: Deno Deploy
Esta guía le informa sobre las formas de alojar sus bots de grammY en Deno Deploy.
Ten en cuenta que esta guía es sólo para usuarios de Deno, y que necesitas tener una cuenta de Git
Deno Deploy es ideal para la mayoría de los bots simples, y debe tener en cuenta que no todas las características de Deno están disponibles para las aplicaciones que se ejecutan en Deno Deploy. Por ejemplo, no hay sistema de archivos en Deno Deploy. Es igual que las demás plataformas sin servidor, pero dedicado a las aplicaciones de 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
mod
o.ts mod
, 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 { serve } from "https://deno.land/std@0.160.0/http/server.ts";
import { Bot, webhookCallback } from "https://deno.land/x/grammy@v1.11.2/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");
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();
});
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.
- Visita tu Deno Deploy dashboard.
- Haz clic en “Nuevo proyecto”, y ve a la sección “Despliegue desde el repositorio de GitHub”.
- Instala la app de GitHub en tu cuenta u organización, y elige tu repositorio.
- Selecciona la rama que quieres desplegar, y luego elige tu archivo
mod
para ser desplegado..ts
deployctl
Método 2: Con Este es un método para usuarios más avanzados. Te permite desplegar el proyecto a través de la línea de comandos o de las acciones de Github.
- Visita tu Deno Deploy dashboard.
- Haz clic en “Nuevo proyecto”, y luego en “Proyecto vacío”.
- Instale
deployctl
. - Crear un token de acceso.
- Ejecuta el siguiente comando:
deployctl deploy --project <project> ./mod.ts --prod --token <token>
- Para configurar las acciones de Github, consulte esto.
Método 3: Con URL
Todo lo que necesitas para seguir este método para desplegar tu bot de grammY, es una URL pública a tu archivo
mod
..ts
- Crea un nuevo proyecto en Deno Deploy.
- Haz clic en “Desplegar URL”.
- Introduzca la URL pública de su archivo
mod
y haga clic en “Deploy”..ts
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
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.