初めに
最近のホスティングサービスを調べてみたら,24時間無料でDiscord Botを動かせそうだったので,動作確認用に簡単なPythonのサンプルを作ってみました.
ホスティングサービスについては,別記事にまとめたので,そちらを参照してください.
なお,この記事ではDiscord Botのコード自体については触れていません.ご注意ください.
使い方については使い方を参照してください.
作った理由
前に個人的に作ったBotはサービス依存が強かったので,サービスへの依存性を減らしたかった.
また,毎回Botを一から構築するのは面倒だったので,雛形が欲しかった.
サンプルBot
サンプルBot
詳しい内容については,リンク先のREADMEに掲載しています.
1.概要
クラウドで動作させることを想定したBotです.
サンプルBotは雛形になっているので,使いまわせるはず.
自由に使ってください.
2.機能
Botとしての機能は,動作確認用の
!ヌルポ→ガッ
というコマンドのみです.
3.特徴
Bot Tokenを直接コードに書かず,環境変数で設定しているため,Bot Tokenが漏れるリスクを減らせて安全です.
また,Dockerを利用してホスティングサービスに簡単に環境を構築できます.
環境変数LOCAL_MODEで,ローカル環境とクラウド環境を切り替えられるため,開発がしやすいです.
個人的には,Botを2つ発行しておいて,ローカル環境でテストする用と,クラウド環境で稼働させる用で分けると便利です.
web_server.pyは,FlaskによるHTTPサーバを構築するためのファイルです.
Discord Bot自体にWebサーバは必要ないのですが,一部のホスティングサービスでの死活監視や外部HTTPアクセスに利用できるように,最低限のFlaskサーバを搭載しています.
4.クラウドの対応
Dockerfileに対応しているホスティングサービスならだいたい利用可能です.
Koyeb,Northflank上で,動作することは確認済みです.
使い方
今回は複雑な設定なしで24時間稼働できるNorthflankで運用する方法を紹介します.
- Discord Developer Portalから新しくBotを作成し,Bot Tokenを発行する.必要な権限とMessage Content Intentも設定しておく.
- リポジトリをcloneまたはforkする.
- ローカル環境で,
.env.exampleをコピーして.envを作り,BOT_TOKENを設定する. - Northflankで,
Secretsから新しくSecret groupを作り,Runtime Variableとして,BOT_TOKENを設定する. - Northflankで新しく
serviceを作り,GitHubリポジトリを選択して,先ほど作ったSecret Groupを設定する. - 実際にbotが参加しているdiscordサーバ上で
!ヌルポと入力して,ガッと返信されたら成功.
注意
- Bot TokenをGitHubに公開しないように注意してください.
-
.envは環境変数を管理するファイルなので,GitHubなどにアップロードしないよう注意してください. -
.env.exampleは,.envの例として作ったものです.間違えてBot Tokenを書き込まないように注意してください. - ホスティングサービスの規約や仕様は,現時点から変化する恐れがあるので,利用時に適宜確認するようにしてください.
最後に
最低限の構成のみなので,これを土台にBot開発に励んでください!!
質問等あればコメントにお願いします.