Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apply commits before Chinese was removed #551

Merged
merged 1 commit into from
Nov 27, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 15 additions & 14 deletions site/docs/es/hosting/comparison.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,21 @@ Por lo tanto, le recomendamos que utilice un tipo de alojamiento diferente para

Lo principal que hay que saber sobre ellos es que en las infraestructuras sin servidor se requiere el uso de [webhooks](../guide/deployment-types.md).

| Nombre | Precio mínimo | Precios | Límites | Node.js | Deno | Web | Notas |
| ---------------------- | ------------- | --------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------- | --------------------------- | --- | ----------------------------------------------- |
| Deta | Gratis | Todavía no tiene planes de pago | Sin límites específicos | ✅ | ❓ | ❓ | |
| Deno Deploy | Gratis | Todavía no tiene planes de pago | [100K req/día, 1000 req/minuto, Límite de tiempo de la CPU de 50 ms](https://deno.com/deploy/docs/pricing-and-limits) | ❌ | ✅ | ❌ | |
| DigitalOcean Functions | Free | $1.85/100K GB-s | [90K GB-s/mo](https://docs.digitalocean.com/products/functions/details/pricing/) | ✅ | ❌ | ❓ | |
| Cloudflare Workers | Gratis | $5/10M req | [100K req/día, Límite de tiempo de la CPU de 10 ms](https://workers.cloudflare.com/) | ❌ | [✅](https://denoflare.dev/) | ✅ | |
| Heroku | Gratis | Es complicado | [550-1000 h/mes](https://www.heroku.com/pricing) | ✅ | ❓ | ❓ | |
| Vercel | Gratis | $20/mo suscripción | [Invocaciones ilimitadas, 100 GB-h, Tiempo límite de 10s](https://vercel.com/pricing) | ❓ | ❓ | ❓ | ¿No está pensado para los que no son de la web? |
| Scaleway Functions | Gratis | €0.15/1M req, €1.2/100K GB-s | [1M de req, 400K GB-s/mo](https://www.scaleway.com/en/pricing/#serverless-functions) | | ❓ | ❓ | |
| Scaleway Containers | Gratis | €0.10/100K GB-s, €1.0/100K vCPU-s | [400K GB-s, 200K vCPU-s/mo](https://www.scaleway.com/en/pricing/#serverless-containers) | ❓ | ❓ | ❓ | |
| Vercel Edge Functions | Gratis | $20/mo suscripción por 500K | [100K req/día](https://vercel.com/pricing) | ❓ | ❓ | ❓ | |
| serverless.com | Gratis | | | ❓ | ❓ | ❓ | |
| DigitalOcean Apps | $5 | | | ❓ | ❓ | ❓ | No se ha probado |
| Fastly Compute@Edge | | | | | | | |
| Nombre | Precio mínimo | Precios | Límites | Node.js | Deno | Web | Notas |
| ---------------------- | ------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------- | --------------------------- | --- | ----------------------------------------------- |
| Deta | Gratis | Todavía no tiene planes de pago | Sin límites específicos | ✅ | ❓ | ❓ | |
| Deno Deploy | Gratis | Todavía no tiene planes de pago | [100K req/día, 1000 req/minuto, Límite de tiempo de la CPU de 50 ms](https://deno.com/deploy/docs/pricing-and-limits) | ❌ | ✅ | ❌ | |
| Fly | Gratis | $1.94/mo suscripción por shared-cpu-1x y 256 MB RAM, $0.02/GB network | [3 shared-cpu-1x 256mb VMs, 160GB/mo, 3GB storage](https://fly.io/docs/about/pricing/) | ✅ | ✅ | ❓ | |
| DigitalOcean Functions | Free | $1.85/100K GB-s | [90K GB-s/mo](https://docs.digitalocean.com/products/functions/details/pricing/) | ✅ | ❌ | ❓ | |
| Cloudflare Workers | Gratis | $5/10M req | [100K req/día, Límite de tiempo de la CPU de 10 ms](https://workers.cloudflare.com/) | ❌ | [✅](https://denoflare.dev/) | ✅ | |
| Heroku | Gratis | Es complicado | [550-1000 h/mes](https://www.heroku.com/pricing) | ✅ | ❓ | ❓ | |
| Vercel | Gratis | $20/mo suscripción | [Invocaciones ilimitadas, 100 GB-h, Tiempo límite de 10s](https://vercel.com/pricing) | ❓ | ❓ | ❓ | ¿No está pensado para los que no son de la web? |
| Scaleway Functions | Gratis | €0.15/1M req, €1.2/100K GB-s | [1M de req, 400K GB-s/mo](https://www.scaleway.com/en/pricing/#serverless-functions) | | ❓ | ❓ | |
| Scaleway Containers | Gratis | €0.10/100K GB-s, €1.0/100K vCPU-s | [400K GB-s, 200K vCPU-s/mo](https://www.scaleway.com/en/pricing/#serverless-containers) | ❓ | ❓ | ❓ | |
| Vercel Edge Functions | Gratis | $20/mo suscripción por 500K | [100K req/día](https://vercel.com/pricing) | ❓ | ❓ | ❓ | |
| serverless.com | Gratis | | | ❓ | ❓ | ❓ | |
| DigitalOcean Apps | $5 | | | ❓ | ❓ | ❓ | No se ha probado |
| Fastly Compute@Edge | | | | | | | |

### VPS

Expand Down
66 changes: 60 additions & 6 deletions site/docs/es/plugins/conversations.md
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ Puedes hacer lo mismo para todos los demás adaptadores de almacenamiento, como
## Salir de una conversación

La conversación se ejecutará hasta que su función de construcción de conversación se complete.
Esto significa que puedes simplemente dejar una conversación usando `return`.
Esto significa que puedes salir de una conversación simplemente usando `return` o `throw`.

<CodeGroup>
<CodeGroupItem title="TypeScript" active>
Expand Down Expand Up @@ -391,13 +391,67 @@ async function hiAndBye(conversation, ctx) {

(Sí, poner un `return` al final de la función es un poco inútil, pero se entiende la idea).

También puedes lanzar un error.
Esto también saldrá de la conversación.
Recuerda [instalar un manejador de errores](../guide/errors.md) en tu bot.
Si se produce un error, también se saldrá de la conversación.
Sin embargo, el [plugin de sesión](#instalar-y-entrar-en-una-conversacion) sólo persigue los datos si el middleware se ejecuta con éxito.
Por lo tanto, si lanzas un error dentro de tu conversación y no lo capturas antes de que llegue al plugin de sesión, no se guardará que la conversación fue abandonada.
Como resultado, el siguiente mensaje causará el mismo error.

Si quieres acabar con la conversación mientras espera la entrada del usuario, también puedes usar `await ctx.conversation.exit()`.
Puedes mitigar esto instalando un [límite de error](../guide/errors.md#error-boundaries) entre la sesión y la conversación.
De esta manera, puede evitar que el error se propague por el [árbol de middleware](../advanced/middleware.md) y por lo tanto permitir que el plugin de sesión vuelva a escribir los datos.

> Tenga en cuenta que si está utilizando las sesiones en memoria por defecto, todos los cambios en los datos de la sesión se reflejan inmediatamente, porque no hay un backend de almacenamiento.
> En ese caso, no es necesario utilizar los límites de error para abandonar una conversación lanzando un error.
> Así es como los límites de error y las conversaciones podrían usarse juntos.

<CodeGroup>
<CodeGroupItem title="TypeScript" active>

```ts
bot.use(session({
storage: freeStorage(bot.token), // ajustar
initial: () => ({}),
}));
bot.use(conversations());
async function hiAndBye(conversation: MyConversation, ctx: MyContext) {
await ctx.reply("¡Hola! y ¡Adiós!");
// Abandona la conversación:
throw new Error("¡Atrápame si puedes!");
}
bot.errorBoundary(
(err) => console.error("¡La conversación arrojó un error!", err),
createConversation(greeting),
);
```

</CodeGroupItem>
<CodeGroupItem title="JavaScript">

```js
bot.use(session({
storage: freeStorage(bot.token), // ajustar
initial: () => ({}),
}));
bot.use(conversations());
async function hiAndBye(conversation, ctx) {
await ctx.reply("¡Hola! y ¡Adiós!");
// Abandona la conversación:
throw new Error("¡Atrápame si puedes!");
}
bot.errorBoundary(
(err) => console.error("¡La conversación arrojó un error!", err),
createConversation(greeting),
);
```

</CodeGroupItem>
</CodeGroup>

Hagas lo que hagas, debes recordar [instalar un manejador de errores](../guide/errors.md) en tu bot.

Si quieres acabar con la conversación desde tu middleware habitual mientras espera la entrada del usuario, también puedes usar `await ctx.conversation.exit()`.
Esto simplemente borrará los datos del plugin de conversación de la sesión.
A menudo es mejor quedarse con el simple retorno de la función, pero hay algunos ejemplos en los que el uso de `await ctx.conversation.exit()` es conveniente.
Recuerda que debes `esperar` la llamada.
Recuerda que debes `await` la llamada.

<CodeGroup>
<CodeGroupItem title="TypeScript" active>
Expand Down
4 changes: 4 additions & 0 deletions site/docs/es/plugins/router.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ También puedes revisar [esta sección](../guide/filter-queries.md#combinacion-d
Los enrutadores funcionan bien junto con las [sesiones](./session.md).
A modo de ejemplo, la combinación de ambos conceptos permite recrear formularios en la interfaz del chat.

> Tenga en cuenta que una solución mucho mejor es utilizar el [plugin de conversaciones](./conversations.md).
> El resto de esta página está obsoleta desde que se creó ese plugin.
> Mantendremos esta página como referencia para aquellos que usaban el enrutador para los formularios.

Digamos que quieres construir un bot que le diga a los usuarios cuántos días faltan para su cumpleaños.
Para calcular el número de días, el bot tiene que saber el mes (por ejemplo, junio) y el día del mes (por ejemplo, el 15) del cumpleaños.

Expand Down
Loading