Discordのボットを作って、Herokuで稼働させてみる。(discord.py)
こんにちは。みなみんです。
筆者は先月から2週間程、Discordのボット開発に取り組んでいました。
ある程度完成して来たので、Herokuでそのボットを稼働させてみようと思い、記事にしました。
目次
筆者のDiscordボットについて
名称
- Dispy
GitHub
API
- discord.py
- すでに、開発終了ではあるが...
プログラミング言語
- Python(3.7)
機能
- コマンド機能
- 標準モジュール
- 入力したテキストをそのまま返信
- コマンド一覧
- 数学モジュール
- 基本的な数学関数 等
- コマンド一覧
- 開発者用モジュール
- 特定のチャンネルにテキストを送信
- 全てのチャンネルにテキストを送信
- ボットの停止処理 等
- 標準モジュール
他にも機能は追加予定。
ファイル配置
- Dispy
- Dispy.py
- Compy.py
- main.py
必要な環境
Visual Studio(IDE)の仮想Python環境 → requirements.txtから。
実際に使われているのは数点だと思われる。
- aiohttp==3.7.4.post0
- async-timeout==3.0.1
- attrs==21.2.0
- chardet==4.0.0
- discord.py==1.7.3
- gunicorn==20.1.0
- idna==3.2
- install==1.3.5
- multidict==5.1.0
- pip==21.3.1
- setuptools==47.1.0
- typing-extensions==3.10.0.2
- yarl==1.6.3
Herokuで動かす準備
Herokuでのデプロイ(ここでは、ボットをHerokuに配置する事)には、
の二つの方法があるが、今回は
- GitHubによるデプロイ
を採用した。
(とても簡単)
Herokuの登録
公式サイトに従って登録します。
必要なファイルを作成
Herokuにデプロイするにあたって、必要なファイルは以下の三つです。
- requirements.txt
- Procfile
- runtime.txt
- requirements.txt
- 必要な環境とそのバージョンを記述します※1
- Procfile
- 拡張子無しでファイルを作成。
- 中身には以下のコードを記述
worker: python [エントリファイル]
[エントリファイル]には最初に稼働させたい.pyファイルを指定します。
筆者の場合は以下のように記述しました。
worker: python main.py
- runtime.txt
- ここではPythonで動かすので、
python-[バージョン]
で[バージョン]にはPython環境のバージョンを入力します。
筆者の場合は以下のように記述しました。
python-3.8.5
※1 requirements.txtの作成
Visual Studio(IDE)をお使いの方で、仮想Python環境のお使いの方は以下の写真のようにプロジェクトの Python環境 → Python[バージョン] の部分を右クリックから作成できます。
GitHubに作ったボットをアップロードする。
Discordのトークンも含まれるので当然、Privateでリポジトリを作成します。
(ここでの、GitHubの使い方は割愛)
そこで、リポジトリに入れるべきファイルは以下のものです。
(筆者が作成したボットの場合)
先ほどの項目でも示したが、最初の3つは必須ファイルです。
- requirements.txt
- Procfile
- runtime.txt
- main.py
- Dispy.py
- Compy.py
Herokuで新規にアプリを作成
右上の「New」で「Create new app」をクリック。
「App name」は特に決めてなければ、空白でもOK。
(適当に名前が当てられます)
「Choose a region」はアメリカのままで構いません。
「Create app」をクリック。
「GitHub」をクリック。
※初めての方は、GitHubとの連携を求められるので連携しておきましょう。
先ほど作ったリポジトリを選択します。
下の「Manual deploy」にて、ブランチを選んで「Deploy Brunch」をクリック。
デプロイが始まります。
結果
実際にDiscordでコマンドを入力してボットの反応をみる
きちんと作動していますね.
ログ
デプロイ後の「View」からログを見ようとしても,見れない...
これはWebアプリケーションとしてデプロイした訳ではなく,単にHeroku上で作動するアプリケーションとしてデプロイしたので,見れないようです.
ログを見るには,Heroku CLIを使います.
公式からHeroku CLIをインストールしましょう.
細かい話
ログを見たい
CMDで,
heroku logs --app [アプリ名]
と入力すれば,出てきます.
さらに,--tailを付加すればリアルタイムで見ることができます.
heroku logs --app [アプリ名] --tail
ログに何か,エラーらしき表示がある...
これも同様にWebアプリケーションがデプロイされていないのでエラーが出ているようです.
筆者の環境でも今のところ,ボット自体には何も影響はなさそうです.
この記事に誤りがあるかもしれません。その辺はご了承ください。
本記事で紹介されている方法・手法はあくまでも個人的なものです。