非エンジニアでも簡単!? ChatGPTでDiscord bot自作&無料で運用できるホスティングサービスの利用方法【Python✕Railwayで24時間稼働】

Web制作・開発
2024.10.23
栗原
Webディレクター

こんにちはディレクターの栗原です。
Chat GPTに頼ると非エンジニアでもGASで使えるスクリプトやら、いわゆるプログラミング言語のコードやらが書けるということに味をしめてしまった結果、先日ノリと勢いだけでDiscord botを自作してみました。
と言っても、bot自体の機能は「自動でボタンを設置して、そのボタンを押下すると、指定したDiscordのチャンネルへそれぞれのボタンに応じたメッセージを送信する」といったシンプルなもの。
ただ、自作のDiscord botなら自由にカスタマイズできて使い勝手もいいうえに、この記事で紹介するサービスを駆使すれば実質無料で使えるという、かなりのメリットがあります。

今回は、「非エンジニアだけどDiscord botを自作したい」「無料でDiscord botを運用できるホスティングサービスが知りたい」という方に向けて、Discord botの自作と24時間運用させるために必要な手順をざっくり紹介できればと思います。
各項目の具体的な設定項目や、botで実現したいコードの内容などはChat GPTと相談しながら決めてください!

ちなみに自分はこれらをほぼすべてChatGPTに聞きながらやりました。
Pythonを使ったコードになっていますが、もちろん非エンジニアなのでPythonが正解なのかはよくわかっていません(でもちゃんと動いています)。

目次

    Discord botを自作するための準備

    そもそもなぜDiscord botを作ることになったのかというと、以前、社内のコミュニケーション施策の一環で「Among Us」という人狼ゲームをDiscordでの通話を介して行った際、専用のbotを入れるとミュートやらなんやらの操作がかなり快適になるという発見がありました。なんとなーくそのときの体験が頭にあったことや、友人とDiscordのサーバーを立てる機会があったため、せっかくだからやってみようという安易な発想が事の始まりです。

    さて本題に移りますが、Discord botを自作して、さらに無料で運用するためにはいくつか作成するものと登録が必要なものがあります。
    思いつく限り列挙したのが以下の5つです。

    非エンジニア的にはまったく馴染みのないサービスばかりを使うことになりますが、使いこなせないにせよ最低限操作ができればなんとかなります。とにかく順を追ってやっていきましょう。

    素人的にはたぶんこんなイメージです。ざっくり。
    図:素人的にはたぶんこんなイメージです。ざっくり。

    ChatGPTでPythonのコードを作成

    これはもうChatGPTに頼りましょう。
    どういうbotが作りたいのかを伝えれば、それらしいコードを書いてくれます。
    例えば、「ボタンを設置して、押すとチャンネルに通知を送るDiscord botを作りたい」とか、さらに具体的な条件を付け足していくようなイメージです。直前のやり取りを忘れてしまうことがあるので、ときどき全体を総括する内容を送ってあげると確実性が増します。

    非エンジニア的には何が正しくて正しくないのか判断できないことばかりだと思いますが、Google Colaboratoryなどのコードが正しく動くかテストできるサービスもあるので、それを利用しながらトライアンドエラーを繰り返すといい感じにできると思います。
    とにかくわからないことがあれば、ChatGPT先生に聞けば大丈夫!

    まずはChatGPTにご相談
    図:まずはChatGPTにご相談

    「Discord Developer Portal」でbotの登録

    bot用を作ろうと思った時点でDiscord自体は登録が済んでいると思うので、Discordアカウントの登録作業およびサーバー作成については割愛します。
    まず一番最初の段階として、Discord Developer Portalにbot用のアプリケーションを登録します。もちろんこれも無料です。
    ここで必要なのは

    • botタブからDiscord botのトークンを取得
    • 同様にbotタブ内のPrivileged Gateway Intentsで必要な権限を設定
    • OAuth2タブから必要な権限を付与した招待URLの生成
    トークンと招待URLはどこかメモ帳にメモしておきましょう。
    上記の各設定はDiscord botで実現したい内容によって変わってくると思うので、それぞれに応じた設定をしてもらえたらと思います。
    またOAuth2のURLは誰かに共有するたびに毎回発行する手間がかかってしまいます。一度作ったらどこかにコピーして置いておくといいかもしれません。
    基本的に身内で使う分には、悩むのが面倒だと思うのでAdministratorの権限でいいと思います。

    右上のNew Applicationから新規作成。Botのアイコン等も設定ページから変更できる
    図:右上のNew Applicationから新規作成。Botのアイコン等も設定ページから変更できる
    トークンは機密情報なので、表示しようとすると毎回リセットされるので注意
    図:トークンは機密情報なので、表示しようとすると毎回リセットされるので注意

    「GitHub」に登録。コード管理とデプロイ、ログインにも使える

    GitHubの登録についても主な導入手順は画面指示に従いながらできると思うので割愛します。
    リポジトリ名は半角英数とハイフンしか使用できないようなので、注意。

    ここで必要な工程は、

    • bot.py
    • requirements.txt
    それぞれのファイルをGitHubのリポジトリに作成することです。

    複数サーバーでの使用を前提とする場合は、Railway上から導入できるSQLサーバーが必要となります。
    bot.pyにはPythonで記述したbot本体のコード、requirements.txtにはbot.pyと必要に応じてSQLサーバーを動かす用のライブラリをイントールするための内容を記述します。
    このへんも細かいことはChatGPTに聞きながら解決しました。
    bot.py自体はいろいろテストを行いながら修正していくことになると思うので、ひとまず最低限動くであろう仮のものでも大丈夫だと思います。

    特殊なツールを導入しなくても、右上のCreate new fileから直接ブラウザ上でファイルを作成できる
    図:特殊なツールを導入しなくても、右上のCreate new fileから直接ブラウザ上でファイルを作成できる
    保存に際しては左上にファイル名(拡張子含む)と、Commit changeのところにそれぞれ何かしらのテキストを入れておく必要があるので忘れずに
    図:保存に際しては左上にファイル名(拡張子含む)と、Commit changeのところにそれぞれ何かしらのテキストを入れておく必要があるので忘れずに
    最終的にこの状態になっていればOK。ReadMeはなくてもいい。
    図:最終的にこの状態になっていればOK。ReadMeはなくてもいい。

    ホスティングサービス「Railway」なら無料で24時間動かせる

    これが今回の記事のキモの部分です。
    実際に自分の場合、コード自体は、ChatGPTに聞きながらGoogle Colaboratoryで何度もテストを繰り返してそれっぽいものを作成できたのですが、どうにも無料で24時間動かせるDiscord botのホスティングサービスが見つからない。というよりも、ネットに転がっている情報だけではよくわからないという状況。
    いろいろ検討してみた結果、「無料」というワードにこだわりすぎて完全無料のものを探してしまっていたのがよくなかったようでした。
    そして少し範囲を広げ、多少お金がかかる可能性を許容しつつ探す中で、最終的にRailWayというサービスにたどり着きました。

    「Railway」への登録作業と環境変数など各種設定

    登録自体は、既に前の工程で作成したGitHubのアカウントと連動させればOK。
    RailWayを最低限まともに利用するためには有償プランに登録する必要があるものの、「Hobby Plan」という最安のプランなら毎月5ドルの無料利用分が付くので、あんまりにもデータを食うようなbotでなければ、実質無料で使えます(おそらくもともと無料だったプランが利用状況によって決済が必要なプランへ変更された模様)。

    あとは右上のプロジェクト作成から「Deploy from GitHub repo」を選択して、GitHubからデプロイできるようにすればOKです。(イメージ的には連動させるみたいな感じです)
    いろいろ確認画面が出てきますが、自分は何も考えずにOKを連打していました。

    あとは

    • Discord botのトークンをSettingタブ内の「Shared Variables」で環境変数に登録
    • GitHubのリポジトリをデプロイ
    • 複数サーバーでの利用を想定する場合はSQLを導入。接続情報を環境変数に登録
    このあたりを設定すれば、bot導入のための設定は完了です。
    環境変数は登録後に「Shared Variables」から各変数の横にあるSHAREボタンで連携が必要なサービスと共有する必要があるので、忘れずに設定しましょう。

    登録後に「Usage」というメニューから使用量を確認できるのですが、1週間ほど利用した現在で0.14$程度。もう余裕で無料です。

    うまくいかないときは

    非エンジニアだと、デプロイに失敗した場合などの対処法がまったくわからず、ドツボにはまってしまう可能性が多々あると思います。 そんなときも、RailwayのプロジェクトのDeploy LogsからログをコピペしてChatGPTに送りつけることで解決してくれるはずです。 あれが足りてない、これが足りてないはたくさんあると思うので、粘り強くAIとコミュニケーションを取っていきましょう。 自分の場合は、デプロイのほかにSQLのテーブルの設定に際して、ChatGPTが教えてくれた情報通りにやる方法が見つけられなかったのですが、スクショをChatGPTに送りつけてどこに何を設定したらいいのか聞いてみると、うまいこと求めていた説明を得ることができました(本来直感的に操作できる部分を接続コードやらSQLコマンドやらを教えてくれたおかげで、かなり意味のわからない状態になっていた)。 ほかにもよくある動作しないパターンとして
    • 環境変数にトークンが正しく設定されていない。
    • Discordサーバー内でbotに必要な権限(Intents)が付与されていない
    • Pythonのライブラリのインストールが正確に行われていない
    などがあります。

    Githubのアカウントと連動しているので、わざわざアカウントの取得は不要。便利
    図:GitHubのアカウントと連動しているので、わざわざアカウントの取得は不要。便利
    画面右上のNewからいろいろと追加できる。かなり直感的な操作画面になっているので、初心者にもわかりやすい
    図:画面右上のNewからいろいろと追加できる。かなり直感的な操作画面になっているので、初心者にもわかりやすい
    環境変数の設定はこの画面から
    図:環境変数の設定はこの画面から

    最後に

    要所のみに絞った内容となりましたが、以上が非エンジニアでもできるDiscord botの作り方と、無料で24時間運用できるホスティングサービスの利用に必要な手順のざっくりとした解説となります。
    実装後も鍵付きのチャンネル等でテストを繰り返し、問題なく動作することを確認。現時点では自分の作成したbotは複数サーバーで途切れることなく24時間ぶっ続けで稼働しているようなので、当初の目的はひとまず達成と言っていい気がしています。

    Python、GitHub、Railwayなど専門的なサービスは少し敷居が高く感じる部分もあるかもしれませんが、ChatGPTを活用することで初心者でもそこそこ簡単にDiscord botの自作ができちゃいます。
    ほぼIT系の知識ゼロからWebディレクターになった自分のような人にとっては、エンジニアの仕事に対する理解が深まる、かなり有意義な経験になるのではないでしょうか。ぜひ興味のある方はお試しください。

    次回また機会があれば、もう少し具体的な内容や細かい手順についても解説できればと思います。

    1週間くらい動かしてみて、今のところまだ0.14$なので、間違いなく5$に達することはなさそう。クレジットカードの決済情報を人質にしたが、無料は無料
    図:1週間くらい動かしてみて、今のところまだ0.14$なので、間違いなく5$に達することはなさそう。クレジットカードの決済情報を人質にしたが、無料は無料