Discord Botを簡単お手軽開発する方法

こんにちは、時雨風です。
開発環境の作成から、Botの導入やプロジェクトの作成まで紹介します。
テンプレートもありますので、作成後はソースコードを改変して、オリジナルのボットを作成してみてください。テンプレートプロジェクトでは、discordのチャンネルにて/nekoと発言するとにゃーんとbotが投稿します。
pythonに触れたことがない初心者でも、開発ができるようと思いこの記事をかきました。 開発環境の構築に主眼をおいています。運用については触れていません。
discord.pyについて
Discord Botは、Discord APIと複雑なやりとりをします。 このやりとりを簡単にしてくれるのが、discordpyです。
Discord開発運営とライブラリ開発者との不和discordによって開発がストップしたことが話題になりましたが、現在では開発が再開されているそうです。
公式のページです。
ここを参考にテンプレートを作成しました。
githubリポジトリはこちら
Rapptz/discord.py: An API wrapper for Discord written in Python.
Codespacesのベータに申し込む
Codespacesは、githubが提供するオンライン開発環境です。 使用してるパソコンに影響されることなく、開発環境を自動で構築できます。
Bot開発ではCodespacesを使用するため、利用申請を行います。2022/7/2現在、ベータ版のためパブリックリポジトリでの個人利用は無料です。
もし、Codespcacesが使えない/使いたくないという方はローカルでの開発になります。 これにはDockerが必要になります。中級者向けとはなりますが、記事の後ろにあるDockerを使用して開発を行うをご覧ください。
申し込み手順
申し込みページにアクセスし、「ベータ版に申込む」から申し込みができます。
https://github.co.jp/features/codespaces

「Sign in to sign up for the beta」を選択

Visual Studio CodeとPythonを選択します。

アンケートに答える「Sgin up for the beta」を選択します。
完了画面が表示されます。

githubから、CodeSpaceの案内メールが届いたら登録完了です。1時間ほどで届くようです。 先にvscodeの設定をやってしまいましょう。
Visual Studio Codeのインストール
下記のURLからダウンロードもできますが、できればパッケージマネージャーを使用する方法をお勧めします。
ダウンロードする場合
Visual Studio Code - Code Editing. Redefined
パッケージマネージャーを使用してインストールする場合(中級者向け)
パッケージマネージャを利用してインストールするとコマンドによって環境が構築できるため、管理が楽になります。windowsとmacの方法を紹介します。
windowsの場合
公式パッケージマネージャーwingetを使用します。wingetは最新のwindowsであれば、インストール済みです。 ターミナルを使用しますので、Windows Terminalをインストールしてください。こちらは標準でバンドルされていませんが、公式から出ているターミナルソフトで、コマンドプロンプトより便利です。
vscordのインストール
ターミナルにコマンドを入力します。
winget install -q vscode
macの場合
Homebrewがインストールされていることが条件です。 インストールされていない場合は、公式ページのインストールスクリプトをターミナルより実行してください。Launchpad > その他 > ターミナルよりターミナルが開けます。
vscordのインストール
brew install --cask visual-studio-code
ターミナルでcodeコマンドが使用できることを確認する
ターミナル上でcode --versionを打ちこんで動作する場合はこの項目を飛ばしてください。
% code --version
1.68.1
30d9c6cd9483b2cc586687151bcbcd635f373630
arm64
使用できない場合は、codeのインストールを行います。
vscordでcmd + shift + Pでコマンドパレットを開き、>shell commandと入力します。候補のinstall 'code' command in PATHを選択します。

ターミナルでcode --versionと打ち込み、バージョンなどが表示されたら完了です。
vscodeの設定
拡張機能のインストール
vscordと拡張機能がいくつか必要になりますので全てインストールしてください。
ターミナルからインストールする場合
ターミナルにコマンドを入力します。
code --install-extension MS-CEINTL.vscode-language-pack-ja
code --install-extension GitHub.codespaces
手動インストールする場合
「ターミナルからインストール」がうまくいかない場合は、下記のリンクからインストールを行なってください。
Japanese Language Pack for Visual Studio Code - Visual Studio Marketplace
GitHub Codespaces - Visual Studio Marketplace
ログイン
vscodeを起動し、左下のアカウントマークからgithubアカウントでログインを行なってください。
botの作成
開発環境が整ったので、Botの開発にうつります。 Discord Developer Portalにて、botの登録を行います。
必要なもの
- discordアカウント
- 管理者権限を持つDiscord サーバー
なければ作成してください。
手順
右上のNew Applicationを選択します。

- botの名前を入力します。
作成するBotの名前を入力し、Createを選択します。

- アイコンを設定します。
必須設定項目ではありませんが、わかりやすさのため 設定してください。 下記は素材配布サイトです。
アイコンの設定が終わったら、Save Changesを選択してください。

- Botを追加する
左のメニューからBotを選択。
Add Botを選択

yes, do it!

- トークンを発行する
Reset Tokenを選択します。2回目以降は、現在のトークンが無効になります。

yes, do it!

トークンをコピーしてメモ帳などに控えます。コピーできるのは今だけなので、かならずコピーしておきましょう。

- Intentsの設定
Intentsの設定を有効にします。設定を変更したら、Save Changesを押します。

- botの権限設定
OAuth2 > URL Generatorから``botとSend Messagesにチェックを入れ、生成されたURLにアクセスします。

botをインストールするサーバーの選択画面が表示されます。

権限を確認し、認証します。

discordからサーバーにbotが入ったことを確認してください。
テンプレートからリポジトリを作成
下記にアクセスします。
https://github.com/tokiukaze/discordpy-template
Use this templateを選択します。

リポジトリの名前を入力し、パブリック(公開設定)で作成します。 リポジトリの名前は、半角英数で決めてください。

しばらくするとリポジトリが作成されます。

ブラウザで開発する場合は、作成されるまでしばらく待ちます。
vscodeで開発を行う場合には、Open this codespace in VS Code Desktopを選択します。
ブラウザでも開発が可能ですが、vscodeによる開発をお勧めします。
なお、vscodeには下記がインストールされ、githubアカウントでログインしていることを再度確認してください。
GitHub Codespaces - Visual Studio Marketplace
2回目以降の接続の仕方
vscodeを開き、リモートエクスプローラー > Codespaces > リポジトリの順番に選択し、Codespaesを起動します。

スクリプトの実行方法
codespacesが開いたら、いよいよソースコードの編集になります。
discord.pyのテンプレートを実行する方法です。
.envファイルの作成
.envファイルをプロジェクトルートに作成します。 エクスプローラーで右クリックから新しいファイルを選択します。

ファイル名は.envにします。ファイルの内容は下記の通りです。<アクセストークン>には、discord botのアクセストークンに置き換えます。
BOT_TOKEN=<アクセストークン>
ファイルの編集が終わったら、保存します。
ctrl + s(windows)または、cmd + s(mac)にて保存できます。
- スクリプトの実行
ターミナルが表示されているかを確認します。

ターミナルが表示されていない場合は、メニューバーからターミナル > 新しいターミナルを選択します。

ターミナルに下記のコマンドを入力するとbotが実行されます。
python ./discord_bot/main.py
成功するとbotのログインがターミナル上で通知されます。

- discordから確認
botをインストールしたdiscordサーバーにて、/nekoとコマンドを入力します。
botから返信があれば成功です。
記事作成時のcodespaces環境は下記の通りです。
# python --version
Python 3.10.5
# which python
/usr/local/bin/python
開発に関するTips
ここより下は、開発で知っていると便利な知識などを紹介しています。
困ったら
discordpyについて困ったらqiitaの記事をみると何かヒントがあるかもしれません。
エラーについて
mypy,isort,black,flake8といったツールはvscodeの保存時に動作します。 エラーが出ていても、保存するとエラーが消えることがあります。
Dockerを使用して、ローカルで開発を行う
codespacesを使用しない場合は、Dockerを使用できます。
Dockerのインストール
仮想環境を作成するため、Dockerをインストールします。
windowsの場合
こちらのリンクを参考にしてください。
VisualStudioCodeリモート開発を使用したコンテナー内での開発
インストールが終わったら設定に入ります。
macの場合
homebrewをインストールしているのであれば、homeberwでインストールするのが良いです。
homebrewを使用する場合
homebrewがインストール済みであることが条件です。
brew install --cask docker
DockerをLaunchpadから起動します。

公式ドキュメントにしたがう場合
VisualStudioCodeリモート開発を使用したコンテナー内での開発
Dockerを使用して開発を行う
Dockerの設定を行います。
Dcokerの設定
Use Docker COmpose V2にチェックマークを入れてください。
