Skip to content

stringthread/discord_tk_bot

 
 

Repository files navigation

Discord TK Bot for Debate

ディベートの試合において、タイムキーパーの代わりに利用できるBotです。

操作方法は、コマンドメッセージと、リアクション機能を利用したボタン操作に対応しています。

導入方法

環境

  • Python3: Python2では正常に動作しないため、ご注意ください
  • discord.py[voice] 1.3.4: 下記の「インストール方法」でインストールできます
  • libffi: Linux環境の場合に限り、インストールが必要です
  • libnacl: Linux環境の場合に限り、インストールが必要です
  • python3-dev: Linux環境の場合に限り、インストールが必要です

インストール方法

所有マシンの場合

  1. GitHub(このページ)からコードをCloneするかダウンロードしてください。

Clone: git clone https://github.com/stringthread/discord_tk_bot.git

ダウンロード: ページ上部の「Code」より、「Download ZIP」を選択し、ファイルを解凍してください。

  1. 必要なライブラリをインストールしてください。
$ pip install -r requirements.txt
  1. 下記「環境変数の設定」を行ってください。
    (.env ファイルをルートディレクトリに置くことで設定できます)

  2. 実行が可能になります。常駐起動したい場合は、下記「Botの常駐化」を参考に設定を行ってください。

参考:Cloneを行う場合のコマンド例(要git, pip。環境変数は別途設定が必要)

git clone https://github.com/stringthread/discord_tk_bot.git
cd discord_tk_bot
pip install -r requirements.txt

Heroku

  1. このリポジトリを Clone または Fork してください。

  2. Heroku にてアプリケーションを作成してください。

  3. 1.で作成したリポジトリを 2.で作成したHerokuアプリケーションに接続してください。

    ここまでの手順は、こちらのサイト などが参考となります

  4. Herokuダッシュボードの項目「Settings」から、以下の通りBuildpackを設定してください。
    「Add buildpack」ボタンを押すと入力が可能です。

  1. Herokuダッシュボードの項目「Settings」より、Config Varsの設定を行ってください。
    設定内容は、下記「環境変数の設定」を参照してください。

環境変数の設定

環境変数として、Botの個数と、Discord BotのTokenを登録します。

Discord Botは、https://discord.com/developers/applications から作成可能です。

Botを作成した後、作成したBotを選択して「Bot > Build-A-Bot」の項目内からTokenを確認することができます。

環境変数の名前については、以下に記載する.envファイルのサンプルを参考に設定してください。

N_BOTS=3
DISCORD_BOT_TOKEN_1=SzCl+e7hlv3kEX9o8v07P7dDP9sYMvUz
DISCORD_BOT_TOKEN_2=9vcGrJysB0z8f0AOM67VNOiv+ygkMifk
DISCORD_BOT_TOKEN_3=92oLIvv52dlQ+5InbqgUWwRXy4bQLH64

DISCORD_BOT_TOKEN_~ の値には、自分で作成したDiscord BotのTokenを設定してください。 また、Herokuでは、イコールの左側がKey、右側がValueに対応します。 Botの数は、N_BOTの値とTOKENの個数を変えることで自由に変更できます。

Botの常駐化(Linuxの場合・Herokuでは不要)

ディレクトリ /etc/systemd/system に、以下の内容でファイル「discordTKbot.service」を作成してください。

[Unit]
Description=discordTKbot
After=network.service

[Service]
Type=simple
Restart=on-success
ExecStart=ファイルをダウンロードしたディレクトリへのフルパス/discordbot.py
WorkingDirectory=ファイルをダウンロードしたディレクトリへのフルパス

[Install]
WantedBy=multi-user.target

以上の設定を行えば、コマンド

sudo systemctl enable discordTKbot
sudo systemctl start discordTKbot

でBotの実行を行うことができます。

機能・使用方法

タイマー開始

  • !t [時間] [呼出オプション (省略可) ]

  指定時間でタイマーが起動します。時間指定は1~2桁で分、3桁以上の場合、下2桁が秒として認識されます。(10→10分、010→10秒 など)

  呼出オプションは、Y / y が指定でき、指定するとタイマー終了時・停止時に、同じカテゴリ内の全てのボイスチャンネルで終了音が鳴るようになります。準備時間の計測などに利用できます。

例: `!t 130` →1分30秒でタイマーを開始
  • !t [タイマー名] [呼出オプション (省略可) ]

  準備時間タイマーが起動します。標準では8分からスタートし、2回目以降は前回の残り時間からとなります。デフォルトのタイマー名について、詳細は下を参照してください。(時間変更・新タイマーの設定は !r コマンドを使ってください)

  呼出オプションは、Y / y が指定でき、指定するとタイマー終了時・停止時に、同じカテゴリ内の全てのボイスチャンネルで終了音が鳴るようになります。準備時間の計測などに利用できます。

例: `!t aff`  →肯定側の準備時間タイマーを開始

デフォルトのタイマー名

  • Aff:8分( 別名:a, A, aff )

  • Neg:8分( 別名:n, N, neg )

    • 別名を入力してタイマー開始・タイマー時間変更を行った場合、同じタイマーが変更されます。 (「Aff」タイマーと「a」タイマーなどでは残り時間が共有されます)

タイマー停止

  • !s

    タイマーが停止されます。残り時間はテキストチャンネルにメッセージとして表示されます。
    (途中で停止したタイマーは、メッセージの再生ボタンから再開できます)

タイマーの設定

  • !r [タイマー名] [時間]

    タイマー名に対して、時間がセットされます。既存のタイマーをリセットするためにも使えますが、既にあるタイマー名を入力すると上書きされるので注意してください。

    時間指定は !t コマンドと同様に、1~2桁で分、3桁以上の場合、下2桁が秒として認識されます。(10→10分、010→10秒 など)

    例: !r aff 12 →タイマー「aff」の時間を12分に設定

サイド決定

  • !an [チーム名1] [チーム名2]

    各チームのサイドをランダムに決定し、メッセージとして送信します。

    例: !an ABC XYZ
    →「Aff: XYZ
      Neg: ABC」

準備室呼び出し

  • !e [チャンネル名]

    コマンドを入力したのと同じカテゴリー内で、与えられた文字列を名前に含むボイスチャンネルに対して、呼び出し音「資料請求がありました」を再生します。

    例: !e aff → カテゴリー内で「aff」と名前の付くチャンネル( 001-aff など)に対して呼出音を再生します

リアクションによる操作

リアクションによってBotを操作するためのメッセージが送信されます。
(リアクションと操作の対応はメッセージに記載されています)

フレキシブルタイマーを使う場合

  • !c:JUDGEロールを持つ人のみ操作できます

  • !pc:全ての利用者が操作できます

フレキシブルタイマーを使わない場合

  • !d:JUDGEロールを持つ人のみ操作できます

  • !p:全ての利用者が操作できます

    • ロールの変更方法 (開発者向け):
      discordbot.pyの24行目「check_priv_user」関数内の文字列を変更して下さい

Botの退出

1度でもタイマーを使用した(Botがボイスチャンネルに接続中の)場合、接続中のボイスチャンネルから全てのメンバーが退出したときに、自動でBotが退出します。

Botだけを明示的に退出させたいときや、ボイスチャンネルに一度も接続しないまま使用を終了するとき、運営が強制的にBotを退出させるとき(Discordの「切断」機能から強制的にボイスチャンネルを退出させた場合も)、必ず以下のコマンドを実行してください。

  • !l

音声の変更

このアプリケーションで流れる音声は、全てaudioディレクトリに保存されています。
そのため、同名の音声ファイルと差し替えることによって、タイマー開始音、終了音、資料請求音をオリジナルのものに変更することができます。

ライセンス

このアプリケーションは MIT License の下で頒布します。

About

discord.py on Heroku

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%