自动翻译本页面为自动翻译,英文原文为最终版本。阅读此页的英文版

托管你自己的机器人

Disband不托管或执行你的机器人。你可以在任何地方运行客户端,它使用机器人令牌通过长期调用网关与Disband通信。本页面涵盖了保持机器人在活着的实际方面。

在哪里运行它

任何可以发送HTTPS出站请求的机器都可用。由于网关是长时延迟(你的代码保持连接开放,Disband在事件到达时返回事件),你不需要公共地址、入站端口或websocket。

好的选择,最便宜的先:

主机 备注
笔记本电脑/台式机 非常适合当你在线时在线的个人机器人。
一个小型VPS(1 GB RAM) ~4-6美元/月;JavaScript客户端几乎不需要任何东西。
云函数/工作者 如果平台允许持久进程,无服务器工作即可;客户端足够无状态,可以廉价地重新启动。
一个容器/翼龙 客户端没有运行时依赖项,因此任何映像都可用。

你实际上需要什么

没有数据库、没有队列,也没有框架需要安装。

让它保持活力

网关会永远独自循环;它会自动重新连接并重试。三种东西往往会杀死真正的机器人:

  1. **崩溃循环。**将客户端包裹在监督器中,并在失败时重新启动:

    # systemd
    [Unit]
    Description=disband-bot
    After=network-online.target
    
    [Service]
    ExecStart=/usr/local/bin/node /opt/my-bot/index.js
    Restart=always
    RestartSec=3
    Environment=DISBAND_BOT_TOKEN=…
    
    [Install]
    WantedBy=multi-user.target
    
  2. **过期的代币。**如果机器人被撤销(或邀请在被撤销之前过期 批准),网关API返回401。处理它:清楚地记录并停止, 而不是永远重试。两个客户端都将此作为error事件呈现出来—— JavaScript的AuthError / Python的AuthError——反之,循环会停止 敲打的。

  3. **静默配置漂移。**将令牌保存在环境变量或秘密中 存储,而不是在源中。如果你旋转代币,请重新启动进程 新的价值。

读取和写入数据

机器人只与作用域内的HTTP API交谈。要查询或持久化状态,请使用你已经运行的任何存储——文件、数据库、Redis——客户端并不在乎。

多服务器机器人

机器人可以被邀请到许多服务器。已批准的作用域是按服务器分开的,因此一个可以在任何地方读取消息的机器人,也只能在所有者授予messages.write的地方写入。如果行为需要根据服务器不同而有所不同,你的代码可以在message.server_id上分支。

进一步前进