グー、チョキ、パー…じゃんけん!
Nightbotで「簡易的でない」おみくじを作るの続きです。
(「おみくじを作る」と言いながらじゃんけんしてますが)
Nightbot のコマンドには引数が使えます。
自作したカスタムコマンドでも、もちろん引数が使えます。
今回は、Nightbotを導入したライブ配信で
「じゃんけん グー」とか「じゃんけん パー」と入力したら
その手を出してくれるコマンドを作ってみましょう。
引数を使ってより複雑なおみくじにする
1. Nightbot 側の設定
Commandos > Custom からコマンドを追加しましょう。
Messageにコマンドを入力。
新たな変数 $(query) を $(urlfetch) の前に挿入します。
(変数Zに入れています)
$(user)の$(eval Z='$(query)';$(urlfetch json https://pastebin.com/raw/QCW1HbC5))
$(query) はコマンドの引数です。
「じゃんけん チョキ」の「チョキ」の部分にあたります。
2.Pastebin のプログラム
/* $(query)によってモードを変える */
M=0;
if(Z=='グー' || Z=='ぐー' || Z==1){M=1;}
else if(Z=='チョキ' || Z=='ちょき' || Z==2){M=2;}
else if(Z=='パー' || Z=='ぱー' || Z==3){M=3;}
var X=[
[19,9,0,0,'グー!【YOU LOSE】俺の勝ち!負けは次につながるチャンスです!ネバーギブアップ!'],
[19,0,9,0,'チョキ!【YOU LOSE】俺の勝ち!たかがじゃんけん、そう思ってないですか?それやったら明日も、俺が勝ちますよ。'],
[18,0,0,8,'パー!【YOU LOSE】俺の勝ち!なんで負けたか、明日まで考えといてください。そしたら何かが見えてくるはずです。'],
[1,0,0,1,'パー!【YOU LOSE】俺の勝ち!1年間何やってたんですか?この結果はじゃんけんに対する意識の差です。'],
[1,1,0,0,'グー!!【YOU WIN】やるやん。明日は俺にリベンジさせて。'],
[1,0,1,0,'チョキ!【YOU WIN】やるやん。明日は俺にリベンジさせて。'],
[1,0,0,1,'パー!!【YOU WIN】やるやん。明日は俺にリベンジさせて。']
];
/* 通常で5%、指定で10%じゃんけん勝利 */
b=0;c=0;for(i=0;i<X.length;i++){b=b+X[i][M];}r=Math.floor(Math.random()*b);
for(i=0;i<X.length;i++){c=c+X[i][M];if(r<c){A=X[i][4];break;}}
「読みやすくなるからObject型にせい!」とか言われそうですが
すみません。今回はArray型です。
上部でモード分岐が書かれていて、
「グー」または「ぐー」なら、左から2番目の数値を使う…となってます。
3.ライブ配信で結果を見る
Nightbotを導入したライブ配信で
チャット欄に「じゃんけん グー」を入力すると、
しっかり「グー」だけの結果が出るはずです。
もちろん、「じゃんけん」だけでも結果が出てきます。
これで、1つのスクリプトで複数のモードがあるおみくじができました。
「グー」「チョキ」「パー」でじゃんけんしたい
「じゃんけん グー」「じゃんけん パー」でじゃんけんできましたが、
いちいち「じゃんけん」入れるの面倒です。私はそう思います。
ワイトもそう思ってるハズです。
なので、「グー」「チョキ」「パー」だけでもOKなコマンド設定も紹介します。
突然だけど、コマンド名「じゃんけん」を辞めることにした
おっと、その前に。
日本語ってひらがな・カタカナ・漢字って色んな種類ありますね。
なので、ひらがなでもカタカナでもヒットするように、
Commandも複数用意が必要です。
そして、たくさんコマンドがあると、管理が面倒くさいです。
なので、適当に作ったコマンド名「じゃんけん」をやめます。
他コマンドに合わせ「!janken」と名前を変更することにします。
「!」を付けるとコマンドっぽく見えますし、
Commandリストのソート時に1ページ目に表示されますからね。
Aliasを使って既存のコマンドを呼び出す
Nightbot > Commandos > Custom > +Add Command を見ると、
「Command」「Message」以外にもいくつか項目があります。
一番下にある「Alias」に、先程作ったカスタムコマンド「!janken」を入れます。
「Message」には「グー」を入れておきましょう。
すると、このCommandは「!janken グー」と入力したものと同じ結果が出ます。
「Comannd」には「グー」と入れます。
「ぐー」で同じものを作りたいときは、面倒ですがコマンドを増やしていきます。
正規表現は使えない…ハズです。
ジャンケンには$(query)を入れる
「Alias」を使う場合、「Message」にはAliasの引数が入ります。
なので、「じゃんけん」「ジャンケン」のMessageには
変数$(query)を入れます。
これで、「!janken グー」のように、
「じゃんけん グー」「ジャンケン グー」と入力しても、
ちゃんとグーの結果が出てくるはずです。
コマンドがいっぱい増えちゃったね
「じゃんけん」「ジャンケン」「グー」「ぐー」「チョキ」「ちょき」「パー」「ぱー」の
8種ものコマンドが必要なときでも、
「Alias」を使えば1種類のプログラムでOKということです。
えっ、それはNightbot Docsにちゃんと書かれてるって?
英語読めるように頑張ります…。