托管的自定义机器人能让你在几分钟内拥有以自己名称和头像显示的机器人,服务器、在线时长和更新都由别人负责;在 VPS 上自托管则让你完全掌控并可使用自定义代码,代价是需要自己编写或维护这些代码,并自己保持机器运行。两者都不是普遍更优的选择,它们只是把相同的责任朝相反的方向转移。
在 VPS 上自托管实际涉及什么
- 租用服务器。从任一服务商购买 VPS,无论机器人实际使用多少,都按周期计费。
- 编写或下载机器人代码。要么是你自己的代码,要么是你配置并保持更新的开源项目。
- 保持进程存活。使用 pm2 或 systemd 服务等工具,在崩溃或服务器重启后自动重新启动它。
- 自己打补丁。Discord.js 更新、Node.js 版本升级,以及底层操作系统的安全补丁,全都由你负责。
- 由你来发现它离线了。除非你也专门设置了相关监控,否则没有任何基础设施替你监视机器人。
托管的自定义机器人则涉及什么
你在 Discord 开发者门户中创建应用和 token,这是两种方式都需要的第一步,然后把该 token 粘贴到托管方的仪表盘中。从那时起,托管方的代码和基础设施会以你机器人的身份运行它。无需为服务器打补丁,无需保持进程存活,也无需自己应用任何更新:功能集会随着托管方的改进而提升,而不是等你抽出时间拉取最新代码。
| VPS 自托管 | 托管的自定义机器人 |
|---|---|
| 代码、行为完全由你掌控,没有任何你未编写或未选择的内容 | 托管方提供什么功能集就是什么,不多也不少 |
| 进程需要你自己保持存活并打补丁 | 由托管方的基础设施负责 |
| 持续的服务器账单,无论机器人是否繁忙 | 使用 Noxyr 时,只需一次免费的 Top.gg 投票,无需订阅 |
| 你会发现宕机,或者你不会 | 托管方的监控通常会先于你发现 |
| 对数据及其存放位置拥有完全控制权 | 数据存放在托管方的数据库中,由其访问控制管理 |
成本,坦诚而言
无论某个月机器人使用量多少,VPS 都是按月的持续成本,此外还要加上你保持其补丁更新所花费的时间。托管的自定义机器人成本完全取决于服务商,大多数高级白标机器人正是为此收取订阅费。Noxyr 的自定义机器人是个例外:全部成本只是一次免费的 Top.gg 投票,大约每三天半重复一次,以避免宽限期过期。
何时自托管是正确的选择
当你需要现有功能集都无法提供的行为时,比如自定义命令、与 Discord 之外事物的集成,或者只有你的社区才需要、别人不会去做的专属逻辑,就选择 VPS。如果你已经习惯运行 Node 进程,并且希望把这种掌控作为默认,而非例外,那么这也是正确的选择。
何时托管的自定义机器人是正确的选择
当功能集已经涵盖你的需求,例如 ticket、店铺、安全、抽奖、验证,并且你希望在服务器、补丁或监控上花费零时间时,就选择托管。这涵盖了大多数服务器、大多数店铺,以及以一个身份管理多个客户服务器的大多数代理机构。
人们容易忽视的中间选项:为自己的代码提供免费托管
自托管不一定意味着付费 VPS。有很多免费层可以运行你自己的机器人代码,通常的代价是在线可靠性较差、资源限制更严格,或者免费层在没有太多提前通知的情况下消失。值得知道这一选项的存在,它是这一光谱上的第三个点,更接近 VPS:你仍然在运行和维护自己的代码,只是不需要持续付费。我们的免费机器人托管指南坦诚地介绍了这条路径,包括它通常在哪些地方有所不足。
以后可以切换吗?
可以,而这一点是人们通常没有预料到的:开发者门户中的应用和 token 并不锁定在任何一种方式上。重置机器人的 token 会立即终止当前正在使用它的服务,无论是你自己 VPS 上的进程,还是某个托管方。从 VPS 迁移到托管的自定义机器人,或者反过来,只需重置 token 并粘贴到另一处即可,而不必重新创建整个应用。
常见问题
第一次做机器人的人应该选哪一种?几乎总是托管方式。一旦你确切知道需要什么自定义行为,事后再选择 VPS 就很容易说得通;如果在还不清楚这一点之前就从 VPS 开始,只是在你摸索那些现成功能集已经覆盖的基础内容时,白白付费租用服务器。
VPS 是否比托管的自定义机器人更可靠?不一定。可靠性取决于谁真正在监视进程;一个运行着健康检查基础设施的托管方,可能比一台没有任何监控的独立 VPS 更有韧性。
运行 Noxyr 的自定义机器人需要 VPS 吗?不需要,这正是关键所在。你无需为它配置或维护任何服务器。
我能否从 VPS 迁移到 Noxyr 的自定义机器人,而无需重新开始?可以。保留同一个应用,重置 token,然后把新 token 粘贴到自定义机器人中,替代你自己的代码即可。
我能否同时在 VPS 和托管方运行同一个机器人?不能,使用同一个 token 不行。同一时间只应有一个进程以机器人身份登录;重置 token 来迁移机器人,会断开它之前运行所在的连接。
自托管真的免费吗?代码可以是免费的、开源的,或者是你自己的,但它运行所在的服务器几乎从来不是免费的。
如果你要编写自己的代码,请参阅我们的免费机器人托管指南;如果想完全跳过服务器,则免费添加 Noxyr。