discord-bcdicebot

概要

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

DOWNLOAD

必要なもの

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

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

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

BCDice-API サーバ

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

(推奨) Windows

現時点では簡易起動スクリプト (後述の start.bat) は Windows 向けの物しか用意していません。 start.bat の中身を読み解いていただければ Mac でも Linux でも動作は可能です。

使い方

ダイスボットを登録する

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. start.bat をメモ帳で開きます
  2. set DISCORD_BOT_TOKEN= の末尾に先の 4. でメモした Token を貼り付けます
  3. set BCDICE_API_URL= の末尾に利用する BCDice-API サーバの URL を貼り付けます
  4. メモ帳を閉じ、 start.bat をダブルクリックします
  5. Discord の参加者一覧に Bot がオンラインの状態で存在すれば成功です
  6. 終了はキーボードの Ctrl + C を押してください

BCDice-API サーバとして大ちゃんさんが公開してくださっているものがあります。自分で BCDice-API サーバを構築するのが難しいようであればそこを借りるのも手でしょう。

詳しい話は bcdice-api | 大ちゃんのいろいろ雑記 をご確認ください。

コマンドを利用する

チャットに bcdice help と打てば使えるコマンドの一覧が出力されます

まずは利用するダイスボットにダイスボットを切り替えましょう。
bcdice set [利用するダイスボットの名前]
例えば bcdice set SwordWorld2.0

ダイスボットの切り替えが終わったらダイスを振るコマンドを打ってみましょう。振れます

管理コマンドを使う

チャットに 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.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)
公開