diff --git a/site/docs/es/README.md b/site/docs/es/README.md
index 91c135f92..684c7ec56 100644
--- a/site/docs/es/README.md
+++ b/site/docs/es/README.md
@@ -100,8 +100,8 @@ bot.start();
-© 2021-2024 · grammY soporta Telegram Bot API 7.3 que fue [liberada](https://core.telegram.org/bots/api#may-6-2024) el 6 de Mayo del 2024.
-(Última novedad: Teclados en línea en los chats de negocios)
+© 2021-2024 · grammY soporta Telegram Bot API 7.4 que fue [liberada](https://core.telegram.org/bots/api#may-28-2024) el 28 de Mayo del 2024.
+(Última novedad: Estrellas de Telegram)
diff --git a/site/docs/es/guide/filter-queries.md b/site/docs/es/guide/filter-queries.md
index 3a9f4c3cd..86f5bcfc3 100644
--- a/site/docs/es/guide/filter-queries.md
+++ b/site/docs/es/guide/filter-queries.md
@@ -198,10 +198,10 @@ Algunas de ellas son un poco avanzadas, así que no dudes en pasar a la [siguien
Puedes utilizar la siguiente consulta de filtro para recibir actualizaciones de estado sobre tu bot.
```ts
-bot.on("my_chat_member"); // iniciar, detener, unirse o abandonar
+bot.on("my_chat_member"); // bloquear, desbloquear, unirse o abandonar
```
-En los chats privados, esto se activa cuando el bot se inicia o se detiene.
+En los chats privados, se activa cuando el bot es bloqueado o desbloqueado.
En los grupos, esto se dispara cuando el bot es añadido o eliminado.
Ahora puedes inspeccionar `ctx.myChatMember` para saber qué ha pasado exactamente.
diff --git a/site/docs/es/hosting/comparison.md b/site/docs/es/hosting/comparison.md
index 2c1abba21..d92c23f7b 100644
--- a/site/docs/es/hosting/comparison.md
+++ b/site/docs/es/hosting/comparison.md
@@ -73,6 +73,7 @@ Consulta el [tutorial](./vps) sobre cómo alojar bots de grammY en un VPS.
| Hetzner Cloud | €4.15 | ~42 ms :de: | 1 vCPU, 2 GB RAM, 20 GB SSD, 20 TB |
| IONOS VPS | €1 o $2 | 15 ms :de: Baden-Baden | 1 vCPU, 0.5 GB RAM, 8 GB SSD |
| Scaleway | €~7 | | 2 cores, 2 GB RAM, 20 GB SSD |
+| MVPS | €4 | 6-9 ms :de: Germany | 1 core, 2 GB RAM, 25 GB SSD, 2 TB |
## Explicaciones sobre las unidades
diff --git a/site/docs/es/plugins/i18n.md b/site/docs/es/plugins/i18n.md
index a656487e4..753f797ee 100644
--- a/site/docs/es/plugins/i18n.md
+++ b/site/docs/es/plugins/i18n.md
@@ -626,6 +626,21 @@ bot.command("start", async (ctx) => {
});
```
+::: warning Posibles problemas de formato
+Por defecto, Fluent utiliza marcas de aislamiento Unicode para las interpolaciones.
+
+Si utiliza variables de posición dentro de etiquetas o entidades, tener las marcas de aislamiento puede dar lugar a un formato incorrecto (por ejemplo, texto sin formato en lugar del enlace esperado o una etiqueta).
+
+Para solucionarlo, utilice las siguientes opciones:
+
+```ts
+const i18n = new I18n({
+ fluentBundleOptions: { useIsolating: false },
+});
+```
+
+:::
+
## Añadir traducciones
Hay tres métodos principales para cargar traducciones.
diff --git a/site/docs/es/plugins/menu.md b/site/docs/es/plugins/menu.md
index f1d418559..6d6e7dad0 100644
--- a/site/docs/es/plugins/menu.md
+++ b/site/docs/es/plugins/menu.md
@@ -91,6 +91,7 @@ bot.start();
:::
> Asegúrese de instalar todos los menús antes de otros middleware, especialmente antes de los middleware que utilizan datos de consulta de devolución de llamada.
+> Además, si utiliza una configuración personalizada para `allowed_updates`, recuerde incluir actualizaciones `callback_query`.
Naturalmente, si está utilizando un [tipo de contexto personalizado](../guide/context#personalizacion-del-objeto-de-contexto), puede pasarlo a `Menu` también.
diff --git a/site/docs/guide/filter-queries.md b/site/docs/guide/filter-queries.md
index 277be2a0d..692c04943 100644
--- a/site/docs/guide/filter-queries.md
+++ b/site/docs/guide/filter-queries.md
@@ -198,10 +198,10 @@ Some of them are a little advanced, so feel free to move on to the [next section
You can use the following filter query to receive status updates about your bot.
```ts
-bot.on("my_chat_member"); // start, stop, join, or leave
+bot.on("my_chat_member"); // block, unblock, join, or leave
```
-In private chats, this triggers when the bot is started or stopped.
+In private chats, this triggers when the bot is blocked or unblocked.
In groups, this triggers when the bot is added or removed.
You can now inspect `ctx.myChatMember` to figure out what exactly happened.
diff --git a/site/docs/guide/introduction.md b/site/docs/guide/introduction.md
index a4d192a58..cbc7572c1 100644
--- a/site/docs/guide/introduction.md
+++ b/site/docs/guide/introduction.md
@@ -3,7 +3,7 @@
A Telegram bot is a special user account that is automated by a program.
Anyone can create a Telegram bot, the only prerequisite is that you know a little bit of coding.
-> If you already know how create bots, head over to [Getting Started](./getting-started)!
+> If you already know how to create bots, head over to [Getting Started](./getting-started)!
grammY is a library that makes it super simple to write such a bot.
diff --git a/site/docs/hosting/comparison.md b/site/docs/hosting/comparison.md
index ce99cb5d6..4499648b5 100644
--- a/site/docs/hosting/comparison.md
+++ b/site/docs/hosting/comparison.md
@@ -73,6 +73,7 @@ Check out the [tutorial](./vps) on how to host grammY bots on a VPS.
| Hetzner Cloud | €4.15 | ~42 ms :de: | 1 vCPU, 2 GB RAM, 20 GB SSD, 20 TB |
| IONOS VPS | €1 or $2 | 15 ms :de: Baden-Baden | 1 vCPU, 0.5 GB RAM, 8 GB SSD |
| Scaleway | €~7 | | 2 cores, 2 GB RAM, 20 GB SSD |
+| MVPS | €4 | 6-9 ms :de: Germany | 1 core, 2 GB RAM, 25 GB SSD, 2 TB |
## Unit Explanations
diff --git a/site/docs/id/README.md b/site/docs/id/README.md
index 52e470f6b..13a6930ee 100644
--- a/site/docs/id/README.md
+++ b/site/docs/id/README.md
@@ -102,8 +102,8 @@ Berhasil! :tada:
-© 2021-2024 · grammY mendukung API Bot Telegram versi 7.3 yang [dirilis](https://core.telegram.org/bots/api#may-6-2024) pada tanggal 6 Mei 2024.
-(Fitur yang disorot: Keyboard Inline di Chat Bisnis)
+© 2021-2024 · grammY mendukung API Bot Telegram versi 7.4 yang [dirilis](https://core.telegram.org/bots/api#may-28-2024) pada tanggal 28 Mei 2024.
+(Fitur yang disorot: Telegram Stars)
diff --git a/site/docs/id/guide/filter-queries.md b/site/docs/id/guide/filter-queries.md
index 80947828f..919870874 100644
--- a/site/docs/id/guide/filter-queries.md
+++ b/site/docs/id/guide/filter-queries.md
@@ -200,11 +200,11 @@ Beberapa diantaranya merupakan fitur tingkat lanjut, silahkan baca [materi berik
Kamu bisa menggunakan filter query berikut untuk menerima status update mengenai bot-mu.
```ts
-bot.on("my_chat_member"); // start, stop, join, atau leave
+bot.on("my_chat_member"); // diblokir, blokir dibuka, bergabung, atau keluar
```
-Filter tadi akan terpicu saat bot dimulai atau distop di chat pribadi.
-Kalau di grup, ia akan terpicu saat bot ditambahkan atau dikeluarkan.
+Filter di atas akan terpicu di chat pribadi, baik saat bot diblokir maupun saat blokirnya dibuka.
+Jika di grup, ia akan terpicu saat bot ditambahkan atau dikeluarkan.
Kamu bisa memeriksa `ctx.myChatMember` untuk mencari tahu apa yang sebenarnya terjadi.
Hati-hati!
diff --git a/site/docs/id/hosting/comparison.md b/site/docs/id/hosting/comparison.md
index 7142516ed..0924f7d4d 100644
--- a/site/docs/id/hosting/comparison.md
+++ b/site/docs/id/hosting/comparison.md
@@ -73,6 +73,7 @@ Lihat tutorial pemasangan bot ke sebuah VPS [berikut](./vps).
| Hetzner Cloud | €4.15 | ~42 ms :de: | 1 vCPU, 2 GB RAM, 20 GB SSD, 20 TB |
| IONOS VPS | €1 atau $2 | 15 ms :de: Baden-Baden | 1 vCPU, 0.5 GB RAM, 8 GB SSD |
| Scaleway | €~7 | | 2 core, 2 GB RAM, 20 GB SSD |
+| MVPS | €4 | 6-9 ms :de: Jerman | 1 core, 2 GB RAM, 25 GB SSD, 2 TB |
## Penjelasan Satuan
diff --git a/site/docs/id/plugins/i18n.md b/site/docs/id/plugins/i18n.md
index 843e7389d..f49dcc9d3 100644
--- a/site/docs/id/plugins/i18n.md
+++ b/site/docs/id/plugins/i18n.md
@@ -620,6 +620,21 @@ bot.command("start", async (ctx) => {
});
```
+::: warning Potensi Masalah Pemformatan
+Umumnya, Fluent menggunakan penanda [_Unicode Isolation_](https://github.com/projectfluent/fluent.js/wiki/Unicode-Isolation) untuk proses interpolasi.
+
+Penanda tersebut dapat menghasilkan masalah pemformatan jika kamu menggunakan placeables di dalam suatu tag atau entity (contohnya, placeables akan di-render menjadi text biasa, alih-alih menjadi link atau cashtag seperti yang kita inginkan).
+
+Untuk mengatasinya, matikan opsi `useIsolating` melalui cara ini:
+
+```ts
+const i18n = new I18n({
+ fluentBundleOptions: { useIsolating: false },
+});
+```
+
+:::
+
## Menambahkan Terjemahan
Kita bisa memuat terjemahan dengan tiga cara.
diff --git a/site/docs/id/plugins/menu.md b/site/docs/id/plugins/menu.md
index 1f7398a3e..c8b312783 100644
--- a/site/docs/id/plugins/menu.md
+++ b/site/docs/id/plugins/menu.md
@@ -90,6 +90,7 @@ bot.start();
:::
> Pastikan semua menu dipasang sebelum middleware, khususnya sebelum middleware yang menggunakan data callback query.
+> Selain itu, jika kamu menggunakan pengaturan khusus untuk `allowed_updates`, jangan lupa untuk menyertakan update `callback_query`-nya.
Jika kamu menggunakan [custom context type](../guide/context#memodifikasi-object-context), kamu juga bisa memasangnya ke `Menu`.
diff --git a/site/docs/plugins/i18n.md b/site/docs/plugins/i18n.md
index e7a71ce0c..f58db5c66 100644
--- a/site/docs/plugins/i18n.md
+++ b/site/docs/plugins/i18n.md
@@ -617,6 +617,21 @@ bot.command("start", async (ctx) => {
});
```
+::: warning Potential Formatting Issues
+By default, Fluent uses Unicode isolation marks for interpolations.
+
+If you use placeables inside tags or entities, having the isolation marks might result in incorrect formatting (e.g., plain text instead of an expected link or a cashtag).
+
+To fix this, use the following options:
+
+```ts
+const i18n = new I18n({
+ fluentBundleOptions: { useIsolating: false },
+});
+```
+
+:::
+
## Adding Translations
There are three main methods to load translations.
diff --git a/site/docs/plugins/menu.md b/site/docs/plugins/menu.md
index d3afe0cee..1e86682e8 100644
--- a/site/docs/plugins/menu.md
+++ b/site/docs/plugins/menu.md
@@ -91,6 +91,7 @@ bot.start();
:::
> Make sure that you install all menus before other middleware, especially before middleware that uses callback query data.
+> Also, if you use a custom configuration for `allowed_updates`, remember to include `callback_query` updates.
Naturally, if you are using a [custom context type](../guide/context#customizing-the-context-object), you can pass it to `Menu` too.
diff --git a/site/docs/uk/README.md b/site/docs/uk/README.md
index 897200916..9b76b6995 100644
--- a/site/docs/uk/README.md
+++ b/site/docs/uk/README.md
@@ -99,8 +99,8 @@ bot.start();
-© 2021-2024 · grammY підтримує Telegram Bot API 7.3, який був [випущений](https://core.telegram.org/bots/api#may-6-2024) 6-го травня 2024 року.
-Остання зміна: вбудовані клавіатури в бізнес-чатах.
+© 2021-2024 · grammY підтримує Telegram Bot API 7.4, який був [випущений](https://core.telegram.org/bots/api#may-28-2024) 28-го травня 2024 року.
+Остання зміна: Telegram Stars.
diff --git a/site/docs/uk/guide/filter-queries.md b/site/docs/uk/guide/filter-queries.md
index 60dcc5011..4c3e419cd 100644
--- a/site/docs/uk/guide/filter-queries.md
+++ b/site/docs/uk/guide/filter-queries.md
@@ -198,10 +198,10 @@ bot
Ви можете використовувати наступний запит фільтрування, щоб отримувати оновлення статусу свого бота.
```ts
-bot.on("my_chat_member"); // запущений, зупинений, доданий або видалений
+bot.on("my_chat_member"); // заблокований, розблокований, доданий або видалений
```
-У приватних чатах це спрацьовує, коли бот запускається або зупиняється.
+У приватних чатах це спрацьовує, коли бот блокується або розблоковується.
У групах це спрацьовує, коли бот додається або видаляється.
Тепер ви можете перевірити `ctx.myChatMember`, щоб визначити, що саме сталося.
diff --git a/site/docs/uk/hosting/comparison.md b/site/docs/uk/hosting/comparison.md
index 698e15300..e92e93419 100644
--- a/site/docs/uk/hosting/comparison.md
+++ b/site/docs/uk/hosting/comparison.md
@@ -73,6 +73,7 @@ next: false
| Hetzner Cloud | 4.15 € | ~42 мс :de: | 1 vCPU, 2 ГБ RAM, 20 ГБ SSD, 20 ТБ |
| IONOS VPS | 1 € або 2 $ | 15 мс :de: Баден-Баден | 1 vCPU, 0.5 ГБ RAM, 8 ГБ SSD |
| Scaleway | ~7 € | | 2 ядра, 2 ГБ RAM, 20 ГБ SSD |
+| MVPS | 4 € | 6-9 ms :de: Німеччина | 1 ядро, 2 ГБ RAM, 25 ГБ SSD, 2 ТБ |
## Одиниці вимірювання
diff --git a/site/docs/uk/plugins/i18n.md b/site/docs/uk/plugins/i18n.md
index dad3a97ab..f18e82fe4 100644
--- a/site/docs/uk/plugins/i18n.md
+++ b/site/docs/uk/plugins/i18n.md
@@ -617,6 +617,21 @@ bot.command("start", async (ctx) => {
});
```
+::: warning Потенційні проблеми з форматуванням
+Типово Fluent використовує для інтерполяції розділові знаки Unicode.
+
+Якщо ви використовуєте змінні підстановки всередині тегів або сутностей, наявність ізоляційних знаків може призвести до неправильного форматування, наприклад, звичайний текст замість очікуваного посилання або кештега.
+
+Щоб виправити це, скористайтеся наступними налаштуваннями:
+
+```ts
+const i18n = new I18n({
+ fluentBundleOptions: { useIsolating: false },
+});
+```
+
+:::
+
## Додавання перекладів
Існує три основні способи завантаження перекладів.
diff --git a/site/docs/uk/plugins/menu.md b/site/docs/uk/plugins/menu.md
index bf3136a23..505d72cd8 100644
--- a/site/docs/uk/plugins/menu.md
+++ b/site/docs/uk/plugins/menu.md
@@ -91,6 +91,7 @@ bot.start();
:::
> Переконайтеся, що ви встановили всі меню перед іншими проміжними обробниками, особливо перед проміжними обробниками, які використовують дані запиту зворотного виклику.
+> Крім того, якщо ви використовуєте власну конфігурацію для `allowed_updates`, не забудьте включити оновлення `callback_query`.
Звісно, якщо ви використовуєте [власний тип контексту](../guide/context#налаштування-обʼєкта-контексту), ви можете передати його до `Menu`.
diff --git a/site/docs/zh/README.md b/site/docs/zh/README.md
index bc9dba500..9bb226a6b 100644
--- a/site/docs/zh/README.md
+++ b/site/docs/zh/README.md
@@ -100,8 +100,8 @@ bot.start();
-© 2021-2024 · grammY 支持 Telegram Bot API 7.3,该 API 于 2024 年 5 月 6 日 [发布](https://core.telegram.org/bots/api#may-6-2024)。
-(新增: 商务聊天中的 inline keyboard)
+© 2021-2024 · grammY 支持 Telegram Bot API 7.4,该 API 于 2024 年 5 月 28 日 [发布](https://core.telegram.org/bots/api#may-28-2024)。
+(最新亮点: Telegram Stars)
diff --git a/site/docs/zh/guide/filter-queries.md b/site/docs/zh/guide/filter-queries.md
index a12388e61..108d23b18 100644
--- a/site/docs/zh/guide/filter-queries.md
+++ b/site/docs/zh/guide/filter-queries.md
@@ -198,10 +198,10 @@ bot
你可以使用下面的过滤查询来接收你的 bot 的状态更新。
```ts
-bot.on("my_chat_member"); // 开始, 停止, 加入, 或者离开
+bot.on("my_chat_member"); // 封禁,取消封禁,加入,或者离开
```
-在私人聊天中,这将在 bot 开始或停止时触发。
+在私人聊天中,这将在 bot 封禁或取消封禁时触发。
在群组中,这将在 bot 加入或移除时触发。
你可以检查 `ctx.myChatMember` 来确定到底发生了什么。
diff --git a/site/docs/zh/hosting/comparison.md b/site/docs/zh/hosting/comparison.md
index d5ce5b8a3..2ef772b98 100644
--- a/site/docs/zh/hosting/comparison.md
+++ b/site/docs/zh/hosting/comparison.md
@@ -38,22 +38,22 @@ Serverless 意味着你不控制运行 bot 的单个机器。
Serverless 和 PaaS 有一个缺点,默认情况下不会为你提供持久存储,例如本地文件系统。
相反,如果你需要永久存储数据,你通常必须单独拥有一个数据库并连接到它。
-| 名字 | 最低价格 | 价格 | 限制 | Node.js | Deno | Web | 备注 |
-| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
-| Deta | 免费 | 暂时没有付费计划 | 没有特别的限制 | ✅ | ✅ | ✅ | Deno 由 [自定义应用](https://deta.space/docs/en/build/quick-starts/custom) 支持 ([示例](https://github.com/deta/starters/tree/main/deno-app))。 |
-| Deno Deploy | 免费 | $20/月,包含 5M req 和 100 GB 网络流量; $2/1M req, $0.5/GB 网络流量 | [1M req/mo, 100 GB/mo, 10 ms CPU-time limit](https://deno.com/deploy/pricing) | ❌ | ✅ | ❌ | |
-| Fly | 免费 | $1.94/月订阅,包含一个共享 CPU 和 256 MB 内存, $0.02/GB 网络流量 | [3 shared-cpu-1x 256mb VMs, 160GB/mo, 3GB storage](https://fly.io/docs/about/pricing/) | ✅ | ✅ | ❓ | |
-| DigitalOcean Functions | 免费 | $1.85/100K GB-s | [90K GB-s/mo](https://docs.digitalocean.com/products/functions/details/pricing/) | ✅ | ❌ | ❓ | |
-| Cloudflare Workers | 免费 | $5/10M req | [100K req/day, 10 ms CPU-time limit](https://workers.cloudflare.com/) | ❌ | [✅](https://denoflare.dev/) | ✅ | |
-| Vercel | 免费 | $20/月的订阅 | [Unlimited invocations, 100 GB-h, 10 s time limit](https://vercel.com/pricing) | [✅](https://vercel.com/docs/functions/serverless-functions/runtimes/node-js) | [✅](https://github.com/vercel-community/deno) | [✅](https://vercel.com/docs/frameworks) | 不适用于非网站建设? |
-| Scaleway Functions | 免费 | €0.15/1M req, €1.2/100K GB-s | [1M requests, 400K GB-s/mo](https://www.scaleway.com/en/pricing/?tags=serverless-functions-serverlessfunctions) | ❓ | ❓ | ❓ | |
-| Scaleway Containers | 免费 | €0.10/100K GB-s, €1.0/100K vCPU-s | [400K GB-s, 200K vCPU-s/mo](https://www.scaleway.com/en/pricing/?tags=serverless-containers-serverlesscontainers) | ❓ | ❓ | ❓ | |
-| Vercel Edge Functions | 免费 | $20/月的订阅, 包含 500K 请求 | [100K req/day](https://vercel.com/pricing) | [✅](https://vercel.com/docs/functions/edge-functions/edge-runtime#compatible-node.js-modules) | ❓ | [✅](https://vercel.com/templates/edge-functions) | |
-| Cyclic.sh | 免费 | 每个 app $1/月,$0.50/100K | [10K req/mo](https://docs.cyclic.sh/overview/limits) | ✅ | ❓ | ❓ | |
-| serverless.com | 免费 | | | ❓ | ❓ | ❓ | |
-| Heroku | $5 | $5 for 1,000 [dyno hours](https://devcenter.heroku.com/articles/usage-and-billing#dyno-usage-and-costs)/mo | [512MB RAM, 30分钟不活跃后休眠](https://www.heroku.com/pricing) | ✅ | ✅ | ❓ | Deno is supported by a [third-party buildpack](https://github.com/chibat/heroku-buildpack-deno). |
-| DigitalOcean Apps | $5 | | | ❓ | ❓ | ❓ | 未测试 |
-| Fastly Compute@Edge | | | | ❓ | ❓ | ❓ | |
+| 名字 | 最低价格 | 价格 | 限制 | Node.js | Deno | Web | 备注 |
+| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
+| Deta | 免费 | 暂时没有付费计划 | 没有特别的限制 | ✅ | ✅ | ✅ | Deno 由 [自定义应用](https://deta.space/docs/en/build/quick-starts/custom) 支持 ([示例](https://github.com/deta/starters/tree/main/deno-app))。 |
+| Deno Deploy | 免费 | $20/月,包含 5M req 和 100 GB 网络流量;$2/1M req, $0.5/GB 网络流量 | [1M req/mo, 100 GB/mo, 10ms CPU 时间限制](https://deno.com/deploy/pricing) | ❌ | ✅ | ❌ | |
+| Fly | 免费 | $1.94/月订阅,包含一个共享 CPU 和 256 MB 内存, $0.02/GB 网络流量 | [3 shared-cpu-1x 256MB VMs, 160GB/mo, 3GB 存储](https://fly.io/docs/about/pricing/) | ✅ | ✅ | ❓ | |
+| DigitalOcean Functions | 免费 | $1.85/100K GB-s | [90K GB-s/mo](https://docs.digitalocean.com/products/functions/details/pricing/) | ✅ | ❌ | ❓ | |
+| Cloudflare Workers | 免费 | $5/10M req | [100K req/day, 10ms CPU 时间限制](https://workers.cloudflare.com/) | ❌ | [✅](https://denoflare.dev/) | ✅ | |
+| Vercel | 免费 | $20/月的订阅 | [无限次调用, 100 GB-h, 10s 时间限制](https://vercel.com/pricing) | [✅](https://vercel.com/docs/functions/serverless-functions/runtimes/node-js) | [✅](https://github.com/vercel-community/deno) | [✅](https://vercel.com/docs/frameworks) | 不适用于非网站建设? |
+| Scaleway Functions | 免费 | €0.15/1M req, €1.2/100K GB-s | [1M req, 400K GB-s/mo](https://www.scaleway.com/en/pricing/?tags=serverless-functions-serverlessfunctions) | ❓ | ❓ | ❓ | |
+| Scaleway Containers | 免费 | €0.10/100K GB-s, €1.0/100K vCPU-s | [400K GB-s, 200K vCPU-s/mo](https://www.scaleway.com/en/pricing/?tags=serverless-containers-serverlesscontainers) | ❓ | ❓ | ❓ | |
+| Vercel Edge Functions | 免费 | $20/月的订阅, 包含 500K 请求 | [100K req/day](https://vercel.com/pricing) | [✅](https://vercel.com/docs/functions/edge-functions/edge-runtime#compatible-node.js-modules) | ❓ | [✅](https://vercel.com/templates/edge-functions) | |
+| Cyclic.sh | 免费 | 每个 app $1/月,$0.50/100K | [10K req/mo](https://docs.cyclic.sh/overview/limits) | ✅ | ❓ | ❓ | |
+| serverless.com | 免费 | | | ❓ | ❓ | ❓ | |
+| Heroku | $5 | $5,包含 1,000 [dyno hours](https://devcenter.heroku.com/articles/usage-and-billing#dyno-usage-and-costs)/mo | [512MB RAM, 30分钟不活跃后休眠](https://www.heroku.com/pricing) | ✅ | ✅ | ❓ | Deno 由 [第三方构建包](https://github.com/chibat/heroku-buildpack-deno) 支持。 |
+| DigitalOcean Apps | $5 | | | ❓ | ❓ | ❓ | 未测试 |
+| Fastly Compute@Edge | | | | ❓ | ❓ | ❓ | |
### VPS
@@ -73,6 +73,7 @@ Serverless 和 PaaS 有一个缺点,默认情况下不会为你提供持久存
| Hetzner Cloud | €4.15 | ~42 ms :de: | 1 vCPU, 2 GB RAM, 20 GB SSD, 20 TB |
| IONOS VPS | €1 or $2 | 15 ms :de: Baden-Baden | 1 vCPU, 0.5 GB RAM, 8 GB SSD |
| Scaleway | €~7 | | 2 cores, 2 GB RAM, 20 GB SSD |
+| MVPS | €4 | 6-9 ms :de: 德国 | 1 core, 2 GB RAM, 25 GB SSD, 2 TB |
## 单位解释
diff --git a/site/docs/zh/plugins/i18n.md b/site/docs/zh/plugins/i18n.md
index b38c9e8c3..efe8f0d2b 100644
--- a/site/docs/zh/plugins/i18n.md
+++ b/site/docs/zh/plugins/i18n.md
@@ -560,7 +560,8 @@ bot.command("start", async (ctx) => {
});
```
-现在你可以使用 `/start` 来启动你的 bot,它应该呈现以下消息:
+现在你可以使用 `/start` 来启动你的 bot。
+它应该呈现以下消息:
```:no-line-numbers
Hi there!
@@ -606,13 +607,30 @@ const i18n = new I18n({
return { name: ctx.from?.first_name ?? "" };
},
});
+
bot.use(i18n);
+
bot.command("start", async (ctx) => {
// 可以不需要指定,直接使用 `name`
await ctx.reply(ctx.t("welcome"));
});
```
+::: warning 潜在的格式问题
+默认情况下,Fluent 使用 Unicode 隔离标记进行插值。
+
+如果你在标签或实体内使用 placeable,则有隔离标记就可能会导致格式不正确(例如,纯文本而不是预期的链接或 cashtag)。
+
+要解决此问题,请使用以下选项:
+
+```ts
+const i18n = new I18n({
+ fluentBundleOptions: { useIsolating: false },
+});
+```
+
+:::
+
## 添加翻译
这里有三中主要的方法来加载翻译。
diff --git a/site/docs/zh/plugins/menu.md b/site/docs/zh/plugins/menu.md
index 55c8847a6..943964f99 100644
--- a/site/docs/zh/plugins/menu.md
+++ b/site/docs/zh/plugins/menu.md
@@ -91,6 +91,7 @@ bot.start();
:::
> 请确保在其他中间件之前安装所有菜单,特别是在使用回调查询数据的中间件之前。
+> 另外,如果你对 `allowed_updates` 使用自定义配置,请记得加上 `callback_query` update。
当然,如果你使用 [自定义的上下文类型](../guide/context#定制你的上下文对象),你也可以传递给 `Menu`。