LoginSignup
3

More than 1 year has passed since last update.

posted at

updated at

【GAS×LINE WORKS】湯婆婆 Bot を実装してみた。

湯婆婆 Advent Calendar 2020 の 11 日目。

ふと Advent Calendar を見ていたら湯婆婆が進出していたので参加しました。
大人気ですね!どうぞよろしくお願いいたします。

みなさんご存じでしょうが、元ネタは Nemesis さんの Javaで湯婆婆を実装してみる です。

概要

タイトルの通りなのですが、Google Apps ScriptLINE WORKS トーク Bot API を利用して湯婆婆 Bot を実装しました。

湯婆婆 Bot の利用を開始すると、最初の挨拶メッセージで湯婆婆に
『契約書だよ。そこに名前を書きな。』と言われます

名前を告げるとその名前は奪われ、一文字の新しい名前を与えられます。

1605684451.png

コード

yubaba.gs
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で乱数を使っておみくじプログラムを作る

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
What you can do with signing up
3