-
Notifications
You must be signed in to change notification settings - Fork 102
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
* Add tutorial for Cloudflare Workers with Deno (#754) Co-authored-by: Jens Breuer <jens.breuer@camao-tec.com> Co-authored-by: Ciki Momogi <cikimomogi@protonmail.com> Co-authored-by: KnorpelSenf <shtrog@gmail.com> * Accept suggestions * Accept suggestions * Fix menu * Move default section to Node.js * Move Deno section to default * Fix link * sync to Ukrainian * fix formatting * Space before tip Co-authored-by: Nazar Antoniuk <75927667+Nazar-Ant@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Andrii Zontov <loginmanx@gmail.com> * Update site/docs/.vitepress/configs/uk.ts * Sync #754 to Indonesian * Add line highlighting * docs(id): fix typo * docs(id): sync tip * docs(id): fix typo * Disable prev/next navigation page * Update site/docs/uk/hosting/cloudflare-workers.md * Apply suggestions from code review * Add Spanish * sync zh #837 --------- Co-authored-by: Jens Breuer <breuer.jens@gmail.com> Co-authored-by: Jens Breuer <jens.breuer@camao-tec.com> Co-authored-by: Ciki Momogi <cikimomogi@protonmail.com> Co-authored-by: KnorpelSenf <shtrog@gmail.com> Co-authored-by: Nazar Antoniuk <antonuk.nazar09@gmail.com> Co-authored-by: Nazar Antoniuk <75927667+Nazar-Ant@users.noreply.github.com> Co-authored-by: Andrii Zontov <loginmanx@gmail.com> Co-authored-by: Habemuscode <habemuscode@protonmail.com> Co-authored-by: grammyz <grammyz@users.noreply.github.com>
- Loading branch information
1 parent
33f793b
commit c06aee4
Showing
15 changed files
with
1,062 additions
and
291 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
--- | ||
prev: false | ||
next: false | ||
--- | ||
|
||
# Alojamiento: Cloudflare Workers (Node.js) | ||
|
||
[Cloudflare Workers](https://workers.cloudflare.com) es una plataforma pública de computación sin servidor que ofrece una solución conveniente y simple para ejecutar JavaScript en el [edge](https://en.wikipedia.org/wiki/Edge_computing). | ||
Al tener la capacidad de manejar tráfico HTTP y estar basada en la [Service Worker API](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API), construir bots para Telegram se convierte en algo muy sencillo. | ||
Además, puedes incluso desarrollar [Web Apps](https://core.telegram.org/bots/webapps) en el edge, todo gratis dentro de ciertas cuotas. | ||
|
||
Esta guía te llevará a través del proceso de alojar tus bots de Telegram en Cloudflare Workers. | ||
|
||
::: tip ¿Buscas la versión de Deno? | ||
Este tutorial explica cómo implementar un bot de Telegram en Cloudflare Workers usando Node.js. | ||
Si estás buscando la versión Deno, por favor revisa [este tutorial](./cloudflare-workers) en su lugar. | ||
::: | ||
|
||
## Requisitos previos | ||
|
||
Para seguir adelante, por favor asegúrese de que tiene una [cuenta de Cloudflare](https://dash.cloudflare.com/login) con su subdominio de workers [configurado](https://dash.cloudflare.com/?account=workers). | ||
|
||
## Puesta a punto | ||
|
||
En primer lugar, crea un nuevo proyecto: | ||
|
||
```sh | ||
npx wrangler generate my-bot | ||
``` | ||
|
||
Puedes cambiar `my-bot` por lo que quieras. | ||
Este será el nombre de tu bot y el directorio del proyecto. | ||
|
||
Después de ejecutar el comando anterior, sigue las instrucciones que veas para inicializar el proyecto. | ||
Allí, puedes elegir entre JavaScript o TypeScript. | ||
|
||
Cuando el proyecto esté inicializado, `cd` en `my-bot` o en el directorio en el que hayas inicializado tu proyecto. | ||
Dependiendo de cómo inicializaste el proyecto, deberías ver una estructura de archivos similar a la siguiente: | ||
|
||
```asciiart:no-line-numbers | ||
. | ||
├── node_modules | ||
├── package.json | ||
├── package-lock.json | ||
├── src | ||
│ ├── index.js | ||
│ └── index.test.js | ||
└── wrangler.toml | ||
``` | ||
|
||
A continuación, instala `grammy`, y otros paquetes que puedas necesitar: | ||
|
||
```sh | ||
npm install grammy | ||
``` | ||
|
||
## Creando tu Bot | ||
|
||
Edita `src/index.js` o `src/index.ts`, y escribe este código dentro: | ||
|
||
```ts | ||
// Ten en cuenta que estamos importando desde 'grammy/web', no desde 'grammy'. | ||
import { Bot, webhookCallback } from "grammy/web"; | ||
|
||
// La siguiente línea de código asume que ha configurado los secretos BOT_TOKEN y BOT_INFO. | ||
// Ver https://developers.cloudflare.com/workers/platform/environment-variables/#secrets-on-deployed-workers. | ||
// El BOT_INFO se obtiene de `bot.api.getMe()`. | ||
const bot = new Bot(BOT_TOKEN, { botInfo: BOT_INFO }); | ||
|
||
bot.command("start", async (ctx) => { | ||
await ctx.reply("¡Hola, mundo!"); | ||
}); | ||
|
||
addEventListener("fetch", webhookCallback(bot, "cloudflare")); | ||
``` | ||
|
||
The above example bot replies "¡Hola, mundo!" when it receives `/start`. | ||
|
||
## Desplegando tu Bot | ||
|
||
Antes de desplegar, necesitamos editar `wrangler.toml`: | ||
|
||
```toml | ||
account_id = 'your account_id' # Obtén esto del dashboard de Cloudflare. | ||
name = 'my-bot' # El nombre de tu bot, que aparecerá en la URL del webhook, por ejemplo: https://my-bot.my-subdomain.workers.dev | ||
main = "src/index.js" # El fichero de entrada del worker. | ||
compatibility_date = "2023-01-16" | ||
``` | ||
|
||
A continuación, puede desplegar utilizando el siguiente comando: | ||
|
||
```sh | ||
npm run deploy | ||
``` | ||
|
||
## Configurando tu Webhook | ||
|
||
Necesitamos decirle a Telegram a dónde enviar las actualizaciones. | ||
Abre tu navegador y visita esta URL: | ||
|
||
```text | ||
https://api.telegram.org/bot<BOT_TOKEN>/setWebhook?url=https://<MY_BOT>.<MY_SUBDOMAIN>.workers.dev/ | ||
``` | ||
|
||
Sustituye `<BOT_TOKEN>`, `<MY_BOT>`, y `<MY_SUBDOMAIN>` por tus valores. | ||
Si la configuración se realiza correctamente, verá una respuesta JSON como esta: | ||
|
||
```json | ||
{ | ||
"ok": true, | ||
"result": true, | ||
"description": "Webhook was set" | ||
} | ||
``` | ||
|
||
## Probando tu Bot | ||
|
||
Abre tu aplicación de Telegram, e inicia tu bot. | ||
Si responde, ¡significa que estás listo! | ||
|
||
## Depuración de tu bot | ||
|
||
Para propósitos de prueba y depuración, puedes ejecutar un servidor de desarrollo local o remoto antes de desplegar tu bot en producción. | ||
Simplemente ejecuta el siguiente comando: | ||
|
||
```sh | ||
npm run start | ||
``` | ||
|
||
Una vez iniciado el servidor de desarrollo, puedes probar tu bot enviándole actualizaciones de ejemplo utilizando herramientas como `curl`, [Insomnia](https://insomnia.rest), o [Postman](https://postman.com). | ||
Consulta [aquí](https://core.telegram.org/bots/webhooks#testing-your-bot-with-updates) para ver ejemplos de actualizaciones y [aquí](https://core.telegram.org/bots/api#update) para obtener más información sobre la estructura de actualizaciones. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.