湯婆婆 Advent Calendar 2020 の 11 日目。
ふと Advent Calendar を見ていたら湯婆婆が進出していたので参加しました。
大人気ですね!どうぞよろしくお願いいたします。
みなさんご存じでしょうが、元ネタは Nemesis さんの Javaで湯婆婆を実装してみる です。
概要
タイトルの通りなのですが、Google Apps Script と LINE WORKS トーク Bot API を利用して湯婆婆 Bot を実装しました。
湯婆婆 Bot の利用を開始すると、最初の挨拶メッセージで湯婆婆に
『契約書だよ。そこに名前を書きな。』と言われます
名前を告げるとその名前は奪われ、一文字の新しい名前を与えられます。
コード
const options = {
"apiId" : "xxxxxxx",
"consumerKey" : "xxxxxxxxxx",
"serverId" : "xxxxxxxxxxxxx",
"privateKey" : "-----BEGIN PRIVATE KEY-----\nxxxxxx\n-----END PRIVATE KEY-----",
"botNo" : xxxxxxx
}
function doPost(e) {
if (e == null || e.postData == null || e.postData.contents == null) return;
const requestJSON = e.postData.contents;
const requestObj = JSON.parse(requestJSON);
const accountId = requestObj.source.accountId;
const userProperties = PropertiesService.getUserProperties();
if(!userProperties.getProperty(accountId)){
LINEWORKS.sendMsg(options, accountId, "契約書だよ。そこに名前を書きな。");
userProperties.setProperty(accountId, "true");
} else {
const name = requestObj.content.text;
LINEWORKS.sendMsg(options, accountId, "フン。" + name + "というのかい。贅沢な名だねぇ。");
const randomNum = Math.floor(Math.random() * name.length);
const newName = name.slice(randomNum, randomNum + 1);
LINEWORKS.sendMsg(options, accountId, "今からお前の名前は" + newName + "だ。いいかい、" + newName + "だよ。分かったら返事をするんだ、" + newName + "!!");
userProperties.deleteProperty(accountId);
}
}
コード解説
const options
は LINE WORKS API の認証情報です。
認証情報の取得方法は下記記事を参考にしてください。
【LINE WORKS】API 認証情報の取得方法まとめ
function doPost(e)
で湯婆婆 Bot が受信したメッセージを受け取っています。
Google Apps Script の PropertiesService
を使って、契約書を渡した人物かどうかを判別しています。
渡していなければ湯婆婆 Bot は 契約書だよ。そこに名前を書きな。
というメッセージを送り、PropertiesService
に登録します。
契約書を渡した人物からのメッセージであれば、湯婆婆 Bot は即座に名前を奪いにかかります。
メッセージの length
を取得し、その範囲内で乱数をひとつ生成します。
乱数の位置で文字を取り出したいので、.slice
して取り出します。
新しい名前が出来上がったら、湯婆婆 Bot は無慈悲に新しい名を告げます。
名を奪い終わったので PropertiesService
から登録情報を削除します。
これで湯婆婆の一連の動きを再現することができました!
やったね( ゚Д゚)?
GAS の設定などなど
もし、自分も作ってみよーなんて思った方がいらっしゃったら、Google Apps Script の設定や LINE WORKS Bot の設定なんかは下記記事を参考にしてください。
GoogleAppsScript で LINEWORKS のチャット BOT を作る
おわりに
ここまでお付き合いいただきありがとうございました。
LINE Bot と違って LINE WORKS はビジネスユーザがほとんどなので、こういったお遊び系は需要ないんですが、たまには息抜きも良いですよね!
むしろ、こういうの増えていって欲しい。
忘年会ネタとか。
リモート忘年会とかも多いみたいだし、ビジネス利用でもお遊び系 Bot が活躍する場もありそうなんだけどなー。
ではまた!(^^)/
参考にさせていただきましたm(_ _)m
Javaで湯婆婆を実装してみる
GoogleAppsScript 公式サイト
LINE WORKS Developers
Google Apps Scriptで乱数を使っておみくじプログラムを作る