discord-bcdicebot

概要

Discord で BCDice を使うための bot です。各サーバに対して、ユーザが導入して利用します。

DOWNLOAD

必要なもの

このアプリは Discord のチャットに参加するユーザのうち、1人の環境で動かす必要があります。動かす人には以下の準備が求められます

Java 8 ないしそれ以降の実行環境

Java 実行環境 のインストール方法は Javaをインストールするには をご覧ください。

BCDice-API サーバ

BCDice-API が動作しているサーバを用意してください。ローカルでも構いませんし、貸してくれる人から借りてもかまいません。

BCDice-API サーバを自分で構築するのは一定の専門知識が必要です。 独自のダイスボットを追加するのでなければ以下のような公開サーバを利用する方が良いでしょう。 各公開サーバには利用ルールがあるため、利用前に事前にご確認ください。

また、中級者向けに Heroku を用いての自分用 BCDice-API サーバの設置手順も共有されています。
https://github.com/ysakasin/bcdice-api/blob/master/docs/heroku.md

使い方

ダイスボットを登録する

Discord に新規の Bot を作成します。サーバ1つにつき代表者1人がいれれば大丈夫です

  1. 開発者ページ にアクセスし、New APP をクリックします
  2. 最低限 APP NAME と APP ICON を入力し、 Create App をクリックします
  3. Create Bot User というボタンをクリックし、このダイスボット用のユーザを作成します
  4. Bot の Username の下に "Token:click to reveal" というのがあるのでクリックし、出てくるランダムな文字列をメモします
    この文字列は他の人に教えないこと
  5. 画面上部の APP DETAILS のところに書かれた Client ID の数字をメモします
  6. 次の URL にアクセスします
    https://discordapp.com/oauth2/authorize?client_id=[Client Id の数字]&scope=bot&permissions=0

アプリケーションを起動する

Bot を起動し、 Discord 上で BCDice を利用可能にします。サーバ1つにつき代表者1人がアプリを起動すれば大丈夫です

  1. Windows を使っている方は start.bat をメモ帳で開きます (ほとんどの方はこちら!)。
    Linux/macOS を使っている方は start.sh を適当なテキストエディタで開きます
  2. DISCORD_BOT_TOKEN= の末尾に先の 4. でメモした Token を貼り付けます
  3. BCDICE_API_URL= の末尾に利用する BCDice-API サーバの URL を貼り付けます
  4. Windows を使っている方は メモ帳を閉じ、 start.bat をダブルクリックします
    Linux/macOS を使っている方は編集を保存・完了し start.sh を実行します
  5. Bot が起動します。Discord の参加者一覧に Bot がオンラインの状態で存在すれば成功です
  6. 終了はキーボードの Ctrl + C を押してください

利用する

チャットにただただ 2d6 等と打ち込めばダイスが振られます。

各システム向けの機能を使いたい場合、ダイスボットを切り替えましょう。
bcdice set [利用するダイスボットの名前] とチャット上で発言してください。
例えば bcdice set SwordWorld2.0 等です。

どんなダイスボットが利用できるのかは bcdice list と発言すれば確認できます。

各ダイスボットでどんな機能が利用できるのかを確認する際は bcdice help [ダイスボットの名前] と発言すれば表示できます。
例えば bcdice help SwordWorld2.0 等です。

チャットに bcdice help と打てば何ができるのかが一覧されるので困ったときは実行してみてください。

管理コマンドを使う

チャットに bcdice admin [パスワード] help と打てば管理者として利用できるコマンドの一覧が出力されます

接続する BCDice-API サーバを変更する場合は bcdice admin [パスワード] [BCDice-APIサーバのURL]

各部屋ごとに設定されたダイスボットの一覧を取得する場合は bcdice admin [パスワード] export
以下のような結果が得られます

331084010098917376:SwordWorld2.0
551310555730673666:DoubleCross
541477835299356673:Cthulhu

複数の部屋に対してダイスボットを設定する場合は以下のようにします。
アプリを再起動した際は全部屋のダイスボット設定がリセットされますので、import と組み合わせると原状復帰が容易です

bcdice admin [パスワード] import
331084010098917376:SwordWorld2.0
551310555730673666:DoubleCross
541477835299356673:Cthulhu

連絡先

バグ報告など

Twitter アカウントは@Shunshun94。ないしはリポジトリに issue を追加してください。

寄付先

Amazon のウィッシュリスト

ライセンス

使用しているライブラリ

javacord
Discord との通信で使用。LGPLv3 でライセンスされています。
Logback Classic Module
ロガー。LGPLv2.1 でライセンスされています。
RESTEasy
HTTP クライアント。Aapche 2.0 でライセンスされています。
Apache Commons Lang
java.lang の拡張。Aapche 2.0 でライセンスされています。

利用しているサービス

ゲーム設定型ダイスボット「ボーンズ&カーズ」
どどんとふを初めとする多くのオンセツールで採用されているダイスボット。略称は BCDice。修正BSDライセンスでライセンスされています。
BCDice-API
BCDice に HTTP による API を付与するラッパ。MIT ライセンスでライセンスされています。
Discord
ボイスチャットアプリ。パソコンからでも携帯からでも利用可能。

本アプリのライセンス

このアプリ (ソースコードなどを含む) は GPLv3 でライセンスします。
ソースコードはhttps://github.com/Shunshun94/discord-bcdicebotから入手可能です。

Q&A

質問・バグ報告はどこに

@Shunshun94 ないしは github の issues に。

どんな出力が出たのか、出力をコピペして頂けると調査が捗ります。

なんで Java なの。Ruby とか○○とかじゃないの

一般ユーザの PC に Ruby や○○の実行環境が導入されているとは思えなかった

じゃあ単体実行できるバイナリでいいじゃん

Mac ユーザやら Linux ユーザやらごとにバイナリを作るのが面倒だった。 Linux はともかく Mac ユーザはいる気がしたから

ダイスを振るコマンド以外を入力すると [ERROR][500] ~ って出る。設定は合っているはずなのに

start.bat の IGNORE_ERROR=0 の 0 を 1 と書き入れてみてください。治るかもしれません

管理用のパスワードはどこ?

起動直後に Admin Password: SGO7C0XYtBJouE75 みたいな文字列がでます。この英数字ランダム16桁の文字列がパスワードです。起動するたびに変わるので注意してください

謝辞

お世話になった方々

BCDice を作成・公開してくださったFacelessさんと、 Ruby 移植をしてくださったたいたい竹流さん。 さらにメンテを引き継いでくださっている酒田 シンジさん。 そもそも、BCDice が無ければこのアプリは着想すらありませんでした。 BCDice が多機能である点、2017年現在、国内オンラインセッションツールのデファクトスタンダードであるどどんとふが採用しているダイスボットであるため、 国内におけるダイスボットのデファクトスタンダードが BCDice となっていたことが実装の必要を感じたそもそもの理由でした。

BCDice-API を実装・公開してくださった酒田 シンジさん。 BCDice-API が無ければ本アプリの実装は気が遠くなるものだったに違いありません。

発表前の動作確認に付き合ってくださったかし*さんと離凛さん。 色々な想定漏れについて指摘していただき、公開前にアプリが大幅に改善されました。

関連アプリの紹介

Nanasu さんが作ってくださったBCDiscord for Browser のコマンドは本アプリの物を参考にしてくださいました。 ブラウザのみで動くため、大変に便利です。

更新履歴

v1.10
Linux/macOS 環境向けの起動スクリプトを追加。スクリプトを共有くださったおちゃさん、ありがとうございます!
v1.9
ダイスボットのスペルが間違えている時に警告が出ない問題を解消
v1.8.1(2019/07/24)
本ドキュメントの軽微な修正を実施。
v1.8(2019/07/23)
ダイスコマンドに関するバグを修正 (詳細)。
管理用コマンドとして BCDice-API の接続先を変更する機能を追加
管理用コマンドとして全部屋に設定されたダイスボット一覧を取得する機能を追加
管理用コマンドとして全部屋にダイスボットを設定する機能を追加
v1.7(2019/06/10)
bcdice list でダイスボットの一覧が表示されないことがある問題を修正した
v1.6(2018/11/11)
一部のエラーを無視する機能を追加。詳しくは上述の ダイスを振るコマンド以外を入力すると [ERROR][500] ~ って出る。設定は合っているはずなのに 参照
設定用コマンドを一部修正した
v1.5(2018/03/24)
ダイスコマンドに関するバグを修正 (詳細)。問題の指摘と修正手法の共有をしてくださったcardinal さん、ありがとうございます!
v1.4(2017/10/07)
利用しているライブラリ起因の問題に対してライブラリをバージョンアップして対応。問題の指摘をくださったシーラさん、ありがとうございます!
アプリ終了後に待機するように start.bat を変更。ログの収集が容易になった
v1.3(2017/07/13)
Channel 毎に異なるダイスボットを利用できるように変更。特に設定していない場合は general のものを利用
v1.2(2017/07/06)
BCDice-API v0.4.0 に対応。問題の指摘をくださった酒田 シンジさん、ありがとうございます!
v1.1.1(2017/06/30)
本ドキュメントの権利的な問題に対応
v1.1(2017/06/30)
いくらかの内部的な問題を修正。機能への変更はなし
v1.0 (2017/06/26)
公開