7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

湯婆婆Advent Calendar 2020

Day 11

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

Last updated at Posted at 2020-12-10

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

7
3
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
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?