BCDice-API(Github)がjsonpに対応していた。またDiscordはWebsoket、なら両方ブラウザからアクセスできる。ということでdiscord-bcdicebot(Github)を参考に、ブラウザで動くDiscord用ダイスボットを作成してみた。
BCDice-APIのURLを用意し、Discordで使いたいサーバーを立て、Discord Botを設定する必要があります(Discord自体のアカウントはあるものとする)。
BCDice(Github)(どどんとふで使用されているダイスボット)をWebから利用するAPIです。可能なら自分で用意してもいいですし、他者が用意したものを利用することもできます(独自BCDice-APIサーバーの立て方は、BCDice-APIのドキュメントに解説が用意されています)。
おもに試験用に
https://nana-bcdice-api.herokuapp.com/
を設置しています。
また公開のBCDice-APIサーバーとして大ちゃんさんが設置してくださっているものがあります(Twitter)(2019/04/21現在、http版がNot Found)。
- 開発者ページにアクセスし、「New App」をクリック
- APP NAME(とアイコンが欲しければAPP ICON)を入力して「Create App」をクリック
- 無事Great Success!できたらApp Details欄のClient IDをコピペしてどこかに控えておく
- 「Create a Bot User」をクリック、Add a Bot to this App?と聞かれたらYes, do it!
- App Bot User欄が出てくるのでTokenの横の「click to reveal」をクリック(Public BotとRequire OAuth2 Code Grantのチェックは入れない)
- 出てきたTokenをローカルファイルにコピペして控えておく、この値は人に教えてはいけないルール
https://discordapp.com/oauth2/authorize?client_id=[Client IDの数字]&scope=bot&permissions=0
にアクセス- Botを使いたいサーバーに追加。reCHAPTCHAが出てくる、あなたはロボットではありませんね
- 認証しましたと表示され、選択したサーバーにオフライン状態のBotがいればOK
- bcdiscord.htmlをモダンなブラウザで開く
- Discord Bot Tokenに先ほど控えたToken、BCDice-API URLにBCDice-APIのURLを入力
- 「Discordに接続」をクリック、成功すればBotがオンラインになる
そのままでも標準DiceBotのダイスが振れます、特定のダイスボットを使用したい場合は
bcdice set [ダイスボット名]
と打ってエンター。
例: bcdice set Cthulhu
どんなダイスボット名が使えるか知りたい場合は
bcdice list
と打ってください。
なくても動きますがコンソールに読み込み失敗のエラーが出るのがイヤな場合、添付の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)についてはそちらのディレクトリやプロジェクト参照。