LoginSignup
0
0

Nightbotで「グー」「チョキ」「パー」のじゃんけんをする

Posted at

グー、チョキ、パー…じゃんけん!

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にちゃんと書かれてるって?
英語読めるように頑張ります…。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0