自動翻訳このページは自動翻訳されました。英語の原文が正式な情報源です。このページを英語で読む

独自のボットをホストする

Disbandは、あなたのボットをホストしたり実行したりしません。 クライアントは好きな場所から実行でき、ボットトークンを使用して、ロングポーリングゲートウェイを介してDisbandと通信します。 このページでは、ボットを生き続けることの実際的な側面について説明します。

どこで実行するか

出向HTTPSリクエストを実行できるすべてのマシンが動作します。ゲートウェイはロングポーリングであるため(コードは接続を保持し、Disbandはイベントが到着するとイベントを返します)、パブリックアドレス、インバウンドポート、またはwebsocketは必要ありません。

良いオプション、一番安いから先:

ホスト メモ
ラップトップ/デスクトップ あなたがオンラインのときにオンラインになるパーソナルボットには最適です。
小さなVPS(1 GB RAM) ~$4–6/月; JavaScript クライアントはほとんど何も必要ありません。
クラウド機能/ワーカー プラットフォームが永続的なプロセスを許可する場合、サーバーレスは機能します。クライアントは安価に再起動できるほど状態レスです。
コンテナ/プテロダクトル クライアントにはランタイム依存関係がゼロなので、任意のイメージが動作します。

あなたが実際に必要なもの

データベースもキューもフレームワークもインストールする必要はありません。

それを生き続ける

ゲートウェイは自分で永遠にループします。自動的に再接続して再試行されます。3つのことが実際のボットを殺す傾向があります。

  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で分岐できます。

さらに進む