HTTPS SSH

BCDiscord for Browser

BCDice-API(Github)がjsonpに対応していた。またDiscordはWebsoket、なら両方ブラウザからアクセスできる。ということでdiscord-bcdicebot(Github)を参考に、ブラウザで動くDiscord用ダイスボットを作成してみた。

使い方

BCDice-APIのURLを用意し、Discordで使いたいサーバーを立て、Discord Botを設定する必要があります(Discord自体のアカウントはあるものとする)。

BCDice-API URLの用意

BCDice(Github)(どどんとふで使用されているダイスボット)をWebから利用するAPIです。可能なら自分で用意してもいいですし、他者が用意したものを利用することもできます(独自BCDice-APIサーバーの立て方は、BCDice-APIのドキュメント解説が用意されています)。

おもに試験用に

https://nana-bcdice-api.herokuapp.com/

を設置しています。

また公開のBCDice-APIサーバーとして大ちゃんさんが設置してくださっているものがあります(Twitter)(2019/04/21現在、http版がNot Found)。

Discord Botの作成

  1. 開発者ページにアクセスし、「New App」をクリック
  2. APP NAME(とアイコンが欲しければAPP ICON)を入力して「Create App」をクリック
  3. 無事Great Success!できたらApp Details欄のClient IDをコピペしてどこかに控えておく
  4. 「Create a Bot User」をクリック、Add a Bot to this App?と聞かれたらYes, do it!
  5. App Bot User欄が出てくるのでTokenの横の「click to reveal」をクリック(Public BotとRequire OAuth2 Code Grantのチェックは入れない)
  6. 出てきたTokenをローカルファイルにコピペして控えておく、この値は人に教えてはいけないルール
  7. https://discordapp.com/oauth2/authorize?client_id=[Client IDの数字]&scope=bot&permissions=0 にアクセス
  8. Botを使いたいサーバーに追加。reCHAPTCHAが出てくる、あなたはロボットではありませんね
  9. 認証しましたと表示され、選択したサーバーにオフライン状態のBotがいればOK

BCDiscordの設定

  1. bcdiscord.htmlをモダンなブラウザで開く
  2. Discord Bot Tokenに先ほど控えたToken、BCDice-API URLにBCDice-APIのURLを入力
  3. 「Discordに接続」をクリック、成功すればBotがオンラインになる

ダイスを振る

そのままでも標準DiceBotのダイスが振れます、特定のダイスボットを使用したい場合は

bcdice set [ダイスボット名]

と打ってエンター。

例: bcdice set Cthulhu

どんなダイスボット名が使えるか知りたい場合は

bcdice list

と打ってください。

config.js

なくても動きますがコンソールに読み込み失敗のエラーが出るのがイヤな場合、添付のconfig.js.emptyをリネームするなどして、configディレクトリにconfig.jsファイルを作ってください。またconfig.js.exampleはconfig.jsでできることの実例になります。

謝辞

discord-bcdicebotを作成されたしゅんしゅんひよこ(Twitter)さん、Botの仕様、コマンド体系やメッセージなどはほぼそのまま参考にしています。
「ボーンズ&カーズ」を作成されたFacelessさん、
どどんとふ組み込み用にRubyに移植された、たいたい竹流(Twitter)さん、
BCDice-APIを作成し、jsonpに対応された酒田シンジさんがいらっしゃらなければこのアプリケーション自体なかったでしょう。
どどんとふ公式鯖やBCDice-APIサーバーなどを公開してくださっている大ちゃんさん、テストなどにも利用させていただいています。

その他

  • シークレットダイスは平文で保存されているのでBCDiscord for Browserを起動している人が見るのは簡単です。どうせ難読化してもちょっとスクリプト書き換えれば外せるし、本質的にBot用意する人はBotでできることはなんでもできるし、ということでそのまま。
  • 「BCDice」は「ボーンズ&カーズ」のダイス部分ってコトでいいのかな?

ライセンス

libディレクトリの外部についてはGPLv3でライセンスします。
libディレクトリ内添付のdiscord.io(Github)についてはそちらのディレクトリやプロジェクト参照。

プロジェクトURL