メインコンテンツへスキップ

はじめに

Square Cloud で Discord ボット を開発してホストするには、構成と前提条件の体系的な手順に従うことが不可欠です。この技術ガイドでは、初期セットアップから本番環境へのデプロイまで、プロセス全体を解説します。

前提条件

  • Square Cloud アカウント: 登録ページからメールアドレスを使って登録します。
  • 有効なプラン: アプリケーションに専用リソースと最適化されたパフォーマンスを提供します。利用可能なプランを確認し、ニーズに最も適したものを選択してください。
このガイドは Node.js ランタイムまたは Python ランタイムで動作します。

プロジェクトの作成

ボットを作成・管理するには Discord のアカウントが必要です。まだお持ちでない場合は、Discord 公式サイトで作成してください。

Discord でのボットアプリケーション

アプリケーションを作成する

Developer Portal にアクセスし、「New Application」をクリックします。ボットの名前を決めて「Create」をクリックし、アプリケーションを作成します。
Developer Portal で Discord アプリケーションを作成する

トークンを生成する

アプリケーションを作成した後、「Bot」タブに移動し、「Reset Token」をクリックして認証トークンを生成します。トークンをコピーしてください。これはコードではなく、Square Cloud の環境変数として設定します。
Discord ボットの認証トークンを生成する

特権インテントを有効にする

サンプルのボットはメッセージの本文を読み取るため、Message Content Intent が必要です。「Bot」タブに留まり、下にスクロールして「Privileged Gateway Intents」で Message Content Intent を有効にします。この例では、他の 2 つの特権インテント (Presence と Server Members) は必要ありません。
Discord の特権ゲートウェイインテントを有効化する
トークンは秘密に: このトークンはボットの完全な制御権を与えます。コードに書いたり ZIP に入れたりしないでください。以下の例では、環境変数 DISCORD_TOKEN から読み込みます。

ボットの開発

discord.js (Node.js) または discord.py (Python) でボットを書きます。
  1. システムに Node.js がインストールされていることを確認してください。まだの場合は、Node.js 公式サイト からダウンロードしてください。
  2. 新しい Node.js プロジェクトを初期化します。
Terminal
  1. discord.js ライブラリをインストールします。
Terminal
  1. JavaScript ファイル (例: index.js) を作成し、基本的な Discord ボットを作成するために次のコードを追加します。
index.js
このコードは discord.js v14 を使っており、ready イベントは Events.ClientReady ("clientReady") です。以前の "ready" という名前は非推奨です。

Square Cloud の設定

プロジェクトのルートに、メインファイルと並べて squarecloud.app ファイルを作成します。このファイルは、ボットの実行方法を Square Cloud に伝えます。
  • MAIN は Square Cloud が実行するファイル、MEMORY はボットの RAM (MB) です。ボットには最低 256 MB が必要で、512 MB あれば成長の余地があります。
  • AUTORESTART=true を指定すると、ボットがクラッシュしたときに再起動します。自動再起動の仕組みを参照してください。
  • SUBDOMAIN はありません。ボットはウェブページを配信しないためです。
ダッシュボードからアップロードする場合は、アップロードフォームでこれらの設定を入力できます。すべてのフィールドについては設定ファイルのリファレンスを参照してください。

ボットトークンの設定

コードはトークンを環境変数 DISCORD_TOKEN から読み込むため、トークンがファイルに入ることはありません。次のいずれかの方法で設定します。
  • ダッシュボード: アップロードページで 詳細設定 を開き、DISCORD_TOKEN という名前の変数を追加して、値にトークンを入力します。すでにデプロイ済みのボットの場合は、アプリケーションの 環境変数 ページで追加し、ボットを再起動します。
  • CLI: ボットをアップロードした直後に (デプロイと動作確認を参照)、squarecloud app env set で設定し、ボットを再起動します。
ボットは起動時に環境変数を読み込むため、変更のたびに再起動してください。その他の管理方法については環境変数を参照してください。
先に手元のコンピューターでボットを実行するには、ターミナルで変数を設定します。macOS と Linux では export DISCORD_TOKEN=your_token_here、PowerShell では $env:DISCORD_TOKEN="your_token_here" です。

ZIP に含めるもの

  • メインファイル (index.js または main.py) と、その他のソースファイル。
  • package.json または requirements.txt。
  • squarecloud.app。
node_modules、.venv、__pycache__ は含めないでください。依存関係はボットの起動時に Square Cloud がインストールします。

デプロイと動作確認

上で説明した ZIP を作成し、アップロードします。

ダッシュボード経由

1

アップロードページにアクセス

アップロードページにアクセスし、プロジェクトの zip ファイルをアップロードします。
2

環境を設定

zip をアップロードした後、プロジェクトの名前、メインファイルまたはランタイム環境、その他の設定を構成する必要があります。
ウェブプロジェクトをアップロードする場合は、必ず「Web Publication」を選択し、プロジェクトにサブドメインを設定してください。
3

プロジェクトをデプロイ

最後に「Deploy」ボタンをクリックして、プロジェクトを Square Cloud にホストします。
デプロイ後、ダッシュボードからプロジェクトのステータスとログを監視できます。
Square Cloud へのアプリケーションのアップロード
4

アプリが稼働していることを確認

最初のデプロイは、通常 1 分もかからずに完了します。ダッシュボードでアプリケーションのステータスが running になるのを待ち、起動時のエラーがないかログを確認してください。
ウェブサイトや API をデプロイした場合は、ブラウザで https://<your-subdomain>.squareweb.app を開き、アプリケーションが応答することを確認してください。ボットをデプロイした場合は、コマンドを送信してオンラインになっていることを確認してください。
アプリが起動しませんか?よくある原因と修正方法はトラブルシューティングガイドを参照してください。

CLI 経由

この方法を使用するには、プロジェクトのルートに squarecloud.app という名前の設定ファイルが必要です。このファイルは、アプリケーションの実行方法を Square Cloud に伝えます。

設定ファイルガイド

アプリケーションの環境を定義する squarecloud.app 設定ファイルの作成方法を学びます。
1

CLI をインストール

Square Cloud CLI をインストールします。すでにお持ちの場合は、同じコマンドを実行すると更新されます:
2

ログイン

次のコマンドを実行します。ブラウザが開くので、そこでログインを承認すれば CLI の準備は完了です。API キーをコピーする必要はありません。スクリプトや CI については、CLI の認証を参照してください。
3

プロジェクトをアップロード

プロジェクトのフォルダで次のコマンドを実行します。CLI は squarecloud.ignore に記載されたものを除いて現在のフォルダを zip にし、アップロードします:
自分で作成した zip をアップロードするには、--file で指定します:
4

アプリが稼働していることを確認

最初のデプロイは、通常 1 分もかからずに完了します。ターミナルから直接、アプリケーションのステータスとログを確認してください。
ウェブサイトや API をデプロイした場合は、ブラウザで https://<your-subdomain>.squareweb.app を開き、アプリケーションが応答することを確認してください。ボットをデプロイした場合は、コマンドを送信してオンラインになっていることを確認してください。
アプリが起動しませんか?よくある原因と修正方法はトラブルシューティングガイドを参照してください。

ボットをサーバーに招待する

ボットにコマンドを送るには、ボットを Discord サーバーに追加します。
  1. Developer Portal にアクセスし、ボットを選択します。
  2. 「OAuth2」タブに移動し、「OAuth2 URL Generator」に進みます。
  3. 「Scopes」で「bot」オプションにチェックを入れます。
  4. 「Bot Permissions」では、サンプルに必要なものだけにチェックを入れます: View Channels、Send Messages、Read Message History。Administrator は避けてください。ボットに必要になることはまれで、トークンが漏洩した場合にサーバー全体を制御されてしまいます。
  5. 生成された URL をコピーしてブラウザで開き、ボットをサーバーに追加します。URL は次のようになります。
68608 はこの 3 つの権限の合計です。YOUR_CLIENT_ID は、「General Information」タブに表示されるアプリケーションの ID に置き換えてください。より多くの権限が必要なコマンドを追加した場合は、それらにチェックを入れて新しい URL を生成してください。 次に、ボットが見えるチャンネルで !hello を送信します。ボットは Hello! と返信します。
デプロイ後に Discord ボットをテストする

よくあるエラー

An invalid token was provided

ログに Error [TokenInvalid]: An invalid token was provided. (discord.js) または discord.errors.LoginFailure: Improper token has been passed. (discord.py) が表示されます。変数 DISCORD_TOKEN がないか、古いトークンが入っています。「Bot」タブから現在のトークンをコピーして設定し直し、ボットを再起動してください。discord.py で KeyError: 'DISCORD_TOKEN' が出る場合は、変数がまったく設定されていません。

Used disallowed intents

ログに Error [DisallowedIntents]: Privileged intent provided is not enabled or whitelisted. (discord.js) または discord.errors.PrivilegedIntentsRequired (discord.py) が表示されます。コードは Message Content Intent を要求していますが、Developer Portal でオフになっています。Discord でのボットアプリケーションのとおり「Bot」タブで有効にしてから、ボットを再起動してください。

ボットはオンラインなのに !hello に応答しない

そのチャンネルでボットがメッセージを閲覧・送信できること、そして Message Content Intent が有効になっていることを確認してください。このインテントがないと、ボットが受け取るメッセージの本文は空になります。 その他のメッセージと対処法については、Discord ボットのエラーを参照してください。

次のステップ

Discord ボットのエラー

無効なトークン、インテントの不足などのよくあるエラーを修正します。

環境変数

ボットのトークンやその他のシークレットを管理します。

Lavalink サーバー

Lavalink サーバーをホストして、ボットで音楽を再生します。
これらのライブラリの詳細は、discord.py 公式ドキュメントと discord.js 公式ガイドを参照してください。

お問い合わせ

技術的な問題が解決しない場合は、専門のサポートチームがお手伝いします。お問い合わせいただければ、どのような問題でも喜んで解決をサポートいたします。サポートの質の高さも、開発者が Google と Trustpilot で Square Cloud に402 件のレビューで 4.9/5という評価をつけている理由の 1 つです。