名前は適当です。 プライベートマッチの戦績を元に、ガチマッチやリーグマッチのようにガチパワーを計算して、Discordに投稿するbotです。 (original repository: https://github.com/kinmemodoki/private-bot)
最近のNode.jsが動くPCでならきっと動く
$ npm install
- https://discordapp.com/developers/applications/ でDiscord上のbotアカウントを作成し、サーバーにbotアカウントを招待する
このとき、
CLIENT ID
とTOKEN
をコピーして, 以下の箇所にペーストしてください
{
"discord_token": TOKEN,
"discord_bot_id": CLIENT ID,
iksm_session
を何かしらの手段で手に入れて、config.json
に追記してください。iksm_session
に関する質問はいかなる内容であっても答えられません。
$ node judge.js
コンソール側で Discordへ接続しました。
と表示されれば、Discordへのログインには成功している。
その後、Discord側で @botアカウントのID start
とメッセージを送ってbotから返答が返ってきたら正常に動いているはず。
あらかじめ、
$ node judge.js
しておく。
プライベートマッチを開始し、1戦目が終了したら、Discordで
@botアカウントのID start
とメッセージを送り、botによる戦績の監視を開始する。このタイミングで、1戦目の情報を収集して初戦のレート算出が行われるはず。
その後は自動で戦績の収集とレートの算出、Discordへのメッセージの投稿が行われる。
終了するときは、
@botアカウントのID end
とメッセージを送ってから、スクリプトの実行そのものを中断すればよい。
その他いくつかコマンドが存在するが,
@botアカウントのID
とメンションだけ送るとヘルプをDiscordに投稿してくれる.
Glickoレーティング の亜種であるGlicko2レーティングを計算に用いてレートを計算します。 噂によれば、本家でも使用されているレーティングアルゴリズムらしいので、使用しています。
パラメータとか全然調整していないので、本家とは数値の変動が全然違うかもしれません。(多分ちがう)
1バトル集計するごとに,記録している個人のパワーなどをsaveディレクトリ中にautosave.json
という名前で保存する。
また,
@botアカウントのID end
で集計を終了したときに,同じくsaveディレクトリ中にlog-(その時の日時).json
という名前で保存する。
データを復元する際は、
$ node judge.js save/xxx.json
と引数に復元したいデータのパスを指定すればよい。
calculating_count
(default: 7) 本家にも存在する【計測中】扱いにする回数。calculating_visible
(default: false) 計測中の不安定なガチパワーをbotのメッセージに表示するかどうかglicko_setting
: Glickoレーティングの設定値。各パラメータの詳しくて正しい意味は調べてください。tau
: 0.3~1.2の値で良さげなものを選ぶ (default: 0.5)rating
: 初期値 (default: 2100)rd
: 初期レーティング偏差 (default: 200)vol
: 初期レーティング変動率 (default: 0.06)
iksm_session
の持ち主が観戦した場合、戦績がそもそも残らないので、その試合のレート算出ができません。(仕様)