0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

24時間無料で稼働するDiscord Botのサンプルを作ってみた

0
Posted at

初めに

最近のホスティングサービスを調べてみたら,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に対応しているホスティングサービスならだいたい利用可能です.
KoyebNorthflank上で,動作することは確認済みです.

使い方

今回は複雑な設定なしで24時間稼働できるNorthflankで運用する方法を紹介します.

  1. Discord Developer Portalから新しくBotを作成し,Bot Tokenを発行する.必要な権限とMessage Content Intentも設定しておく.
  2. リポジトリをcloneまたはforkする.
  3. ローカル環境で, .env.exampleをコピーして.envを作り,BOT_TOKENを設定する.
  4. Northflankで,Secretsから新しくSecret groupを作り,Runtime Variableとして,BOT_TOKENを設定する.
  5. Northflankで新しくserviceを作り,GitHubリポジトリを選択して,先ほど作ったSecret Groupを設定する.
  6. 実際にbotが参加しているdiscordサーバ上で!ヌルポと入力して,ガッと返信されたら成功.

注意

  • Bot TokenをGitHubに公開しないように注意してください.
  • .envは環境変数を管理するファイルなので,GitHubなどにアップロードしないよう注意してください.
  • .env.exampleは,.envの例として作ったものです.間違えてBot Tokenを書き込まないように注意してください.
  • ホスティングサービスの規約や仕様は,現時点から変化する恐れがあるので,利用時に適宜確認するようにしてください.

最後に

最低限の構成のみなので,これを土台にBot開発に励んでください!!
質問等あればコメントにお願いします.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?