托管:Deno Deploy
这个指南告诉你如何将你的 grammY bots 托管到 Deno Deploy.
请注意,这个指南只适用于 Deno 用户,你需要一个 Git
Deno Deploy 是大多数简单 bot 的理想选择,并且你应该注意,Deno Deploy 上运行的应用程序不一定完整支持 Deno 的所有功能。 例如,平台仅支持 Deno 中可用的文件系统 API 的 有限集。 它就像其他许多 serverless 平台一样,但专门用于 Deno 应用程序。
这个教程的结果 可以在我们的示例 bot 仓库中看到。
准备你的代码
请注意,你需要 在 webhooks 上运行你的 bot,所以你应该调用
webhook
,而不是Callback bot
。.start()
- 确保你有一个文件可以导出你的
Bot
对象,这样你就可以在以后导入它来运行它。 - 创建一个名为
mod
或.ts mod
的文件,或任何你喜欢的名字(但你应该记住并使用这个文件作为部署的主要文件),其内容如下:.js
import { webhookCallback } from "https://deno.land/x/grammy@v1.19.2/mod.ts";
// 你可以将其修改为正确的方式来导入你的 `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
我们建议你将你的处理程序放在一个相对隐蔽的路径而不是根路径(/
)。 这里,我们使用 bot token 作为路径(/<bot token>
)。
部署
方法 1:使用 GitHub
这是推荐的方法,也是最容易操作的方法。 使用这种方法的主要优势是,Deno Deploy 将会自动监视你的仓库变化,其中包括你的代码,并自动部署新版本。
在 GitHub 上创建一个新的仓库,它可以是私有的或公开的。
将你的代码推送到这个仓库。
建议你有一个单一且稳定的分支,然后在其他分支中进行测试,这样你就不会发送一些意外的事情。
访问你的 Deno Deploy 仪表台。
点击 “New Project”,然后进入 “Deploy from GitHub repository” 部分
安装 GitHub 应用程序到你的账户或组织,并选择你的仓库。
选择你想部署的分支,然后选择你要部署的
mod
文件.ts
方法 2: 使用 deployctl
这是一个更高级的方法,它允许你通过命令行或 Github Actions 来部署项目。
访问你的 Deno Deploy 仪表台.
点击 “New Project”,然后再选择 “Empty Project”.
安装
deployctl
.执行以下命令:
shdeployctl deploy --project <project> ./mod.ts --prod --token <token>
1配置 GitHub Action,请参考 这里.
方法 3:使用 URL
按照这个方法部署你的 grammY bot,你只需要一个到你的
mod
的公开 URL。.ts
- 在 Deno Deploy 上创建一个新的项目。
- 点击 “Deploy URL”。
- 输入你的
mod
文件的公开 URL,然后点击 “Deploy”。.ts
注意
在部署完成后,你需要配置你的 bot 的 webhook 设置来指向你的 app。 为了配置 webhook,发送一个请求到
https://api.telegram.org/bot<token>/setWebhook?url=<url>
将 <token>
替换为你的 bot 的 token,并将 <url>
替换为你的 app 的完整的 URL 以及 webhook 处理程序的路径。