Ubuntu20.04でPythonでDiscordボットを構築する方法
著者は、 Write for DOnations プログラムの一環として、 Free and Open SourceFundを選択して寄付を受け取りました。
序章
Discord は、ゲーマー、オープンソースコミュニティ、会議主催者などが使用する人気のある音声およびテキストメッセージングプラットフォームです。 優れたボイスチャット、さまざまなテキストチャネル、自動アシスタントまたは「ボット」を使用した拡張性などの機能により、人気が高まっています。
このガイドでは、Pythonプログラミング言語を使用してDiscordボットを構築し、Ubuntu20.04サーバーにデプロイします。 ボットをプログラムするには、DiscordPythonライブラリdiscord.pyを使用します。
注: Discordには、チャット/ボイスルームに2つの異なる名前があります。 ドキュメントのどこにいるかに応じて、これらをサーバーとギルドの両方と呼びます。 このチュートリアルでは、ギルドという用語を使用します。 これらの用語は同じ意味で使用でき、多くの場合、Discordの公式ドキュメントに記載されていることを知っておいてください。
前提条件
このチュートリアルを完了するには、次のものが必要です。
- sudo非rootユーザーとファイアウォールを備えた1台のUbuntu20.04サーバー。 これは、Ubuntu20.04初期サーバーセットアップガイドに従ってセットアップできます。
- ローカルマシンにインストールされたPython3。 具体的な手順については、PythonをWindows、 Mac 、またはLinuxにインストールするためのチュートリアルのいずれかに従ってください。
- 管理者権限を持つDiscordアカウントとDiscordギルド。 Discordのスタートガイドページにアクセスして、アプリと無料アカウントを入手してください。 次にギルドを作成します。 独自のDiscordGuildを作成すると、ボットを追加するために必要な権限が与えられます。
-
- Visual Studio Code 、 Atom 、 Sublime 、Nanoなどの任意のテキストエディター。
ステップ1—DiscordGuildのボットユーザーを作成する
コーディングを開始する前に、ボットを作成してDiscord開発者ポータルに登録する必要があります。
開発者ポータルにサインインし、新しいアプリケーションボタンをクリックしてプロセスを開始します。 Discordアプリケーションを使用すると、DiscordAPIを操作できます。 ボットはアプリケーションにバインドされています。 それが彼らの機能です。
次に、モーダルにアプリケーションの名前を追加し、作成ボタンを押します。 このチュートリアルでは、SammySharkBot
という名前を付けます。
Discordがアプリケーションを作成します。 次に、ボットに関する情報が記載されたページに注目します。 ボットのアイコンとして機能する画像を追加することを選択できます。 ページのアプリアイコンセクションにあるすっきりとしたアイコンボタンをクリックします。 これは必須ではありません。
アイコンをアップロードした場合は、変更を保存するように求めるダイアログボックスが表示されます。 変更の保存を押してアイコンを保存します。
アプリケーションをセットアップしたので、次はアプリケーションに関連付けられたボットを作成します。 画面左側の設定ナビゲーションペインのボットリンクに移動します。
次に、ボットの追加ボタンをクリックして、ボットをアプリケーションに追加します。
これを行うと、ボットが表示され、前に設定したオプションのアイコンが表示されます。 このページを覚えておいてください。 APIトークンを取得するには、後で戻ってくる必要があります。
次のようなモーダルが表示されます
次に、画面左側の設定ナビゲーションペインのOAuth2リンクに移動します。 ボットが正しく機能できるように、適切な権限を追加する必要があります。
ボットが機能できるスコープを追加する必要があります。 ボットオプションのみをチェックしてください。これは、このボットに実行させたいのはそれだけだからです。 他のスコープの詳細については、DiscordOAuth2ドキュメントにアクセスしてください。
次に、下にスクロールして、ボットに次の権限を付与します:チャネルの表示、メッセージの送信、メッセージ履歴の読み取り。 これにより、ボットが実行できるアクションのセットが制限されます。 制限なしでボットを作成したい場合は、管理者オプションを選択できます。 これはお勧めしません。
これを行うと、DiscordURLの後にCopyボタンが表示されます。 そのボタンをクリックしてリンクをコピーし、ブラウザの新しいウィンドウで開きます。
ボットがギルドに接続するためのプロンプトが表示されます。 複数のギルドにボットをインストールする権限がある場合があるため、ここで複数のボットに注意することができます。 ボットをインストールするギルドを選択し、承認をクリックします。
ボットがギルドに追加される前に、Discordはボットが持つすべての権限を表示します。 これにより、インストールしているものを確実に認識できます。 ボットに特定の権限を与えたくない場合は、チェックを外すことができます。 ただし、このボットは他の方法では機能しないため、これを行わないでください。 承認をクリックして、ボットを受け入れてギルドに追加します。
ギルドに戻り、新しいメンバーに関する投稿が表示されるチャンネルを確認してください。 ボットがギルドに参加したことに気付くでしょう。 ボットはオフラインで表示されますが、ボットは右側のメンバーリストにも表示されます。 これは、ボットコードを開始した後に変更されます。
ボットがギルドに追加されたので、Pythonコードを使用してボットを実現する準備が整いました。
ステップ2—プロジェクト用のPython仮想環境を作成する
コーディングを開始する前に、Python開発者環境をセットアップする必要があります。 このステップでは、管理を容易にするために、仮想環境内にPython要件をインストールしてアクティブ化します。
まず、すべての仮想環境を保存するために使用できるディレクトリをホームディレクトリに作成します。
- mkdir ~/.venvs
次に、Pythonを使用して仮想環境を作成します。
python3 -m venv ~/.venvs/discord
これにより、.venvs
ディレクトリ内にdiscord
というディレクトリが作成されます。 内部には、Pythonのローカルバージョンとpip
のローカルバージョンがインストールされます。 これを使用して、プロジェクト用の分離されたPython環境をインストールおよび構成できます。
プロジェクトのPython要件をインストールする前に、仮想環境をアクティブ化します。
- source ~/.venvs/discord/bin/activate
プロンプトが変化して、Python仮想環境内で操作していることを示します。 (discord)user@host:~$
のようになります。
仮想環境をアクティブにして、[X43X]