4
0

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.

N高等学校 (1)Advent Calendar 2020

Day 13

Hubotで様々な謝り方に警察は要らないとツッコまれるbot作ってみた

Posted at

この記事は、N高等学校 (1) Advent Calendar 2020 13日目の記事です。

どうも、N高生5期のゆういちさんです。
SNS → GitHub,Twitter

アドベントカレンダーは初投稿です!
何を書こうか正直迷いましたが、昨日思いついたやつでいきたいと思います!
タイトルの通りですが、こんなbotがあると面白いかなと作ってみました。

デモ

Screenshot from Gyazo

作った理由

  • Slackのbotで開発してみたい
  • 正規表現の学習もそうだけど、もう少し馴染めるようになりたい
  • 日本人謝りすぎを解消

この猿はだれ??

gomes(ゴメス)っていうチンパンジーです。
一昔前にフジテレビで放送された「CHIMPAN NEWS CHANNEL」の報道系のバラエティ番組をよく見てて、
このゴメスが番組の司会進行役で、チンパンジーが番組スタッフの謝罪に対してツッコミをするというシーンを思い出したことからこのbotを実現してみました。
(実際は違うチンパンジーが突っ込んでたかもです。)

書いてみた

police.js
'use strict';
module.exports = (robot) => {
  robot.hear(/(申し訳(ありません|ございません|ない))/i, msg => {
    msg.send(` < ${msg.match[0]}ですむならPoliceはいらねんだよ!!`);
  });
  robot.hear(/(ごめん(ね|な|なさい|ねごめんねー)|ごめん)/i, msg => {
    msg.send(` < ${msg.match[0]}ですむならPoliceはいらねんだよ!!`);
  });
  robot.hear(/(sorry)/i, msg => {
    msg.send(` < ${msg.match[0]}ですむならPoliceはいらねんだよ!!`);
  });
  robot.hear(/((いません|みません|まない|まなかった|まねぇ|まん|まぬ|まんのう))/i, msg => {
    msg.send(` < ${msg.match[0]}ですむならPoliceはいらねんだよ!!`);
  });
  robot.hear(/(お詫び(申し上げます|申しあげます|致します|いたします))/i, msg => {
    msg.send(` < ${msg.match[0]}ですむならPoliceはいらねんだよ!!`);
  });
  robot.hear(/(失礼(しました|致します|致しました|いたします|いたしました)|失礼)/i, msg => {
    msg.send(` < ${msg.match[0]}ですむならPoliceはいらねんだよ!!`);
  });
  robot.hear(/(めんご|メンゴ|スマソ|さーせん|サーセン|サーセン)/i, msg => {
    msg.send(` < ${msg.match[0]}ですむならPoliceはいらねんだよ!!`);
  })
  robot.hear(/(反省して(おります|います|ます|ま+[ー〜~]+す))/i, msg => {
    msg.send(` < ${msg.match[0]}ですむならPoliceはいらねんだよ!!`);
  })
};

特定の「すいません」とか「お詫び致します」の文字列だけ取得させるのに時間かかりましたが、
たまに2回繰り返してメッセージが返ってきたり、文字列が重複してそれぞれ違うメッセージがいくつか出てきたこともあったりしました。

image.png

正規表現を可視化してみる

ただ文面だけみても正直なんて書いてあるのか分かりません。
僕もbot作るときに調べる時間はかなり要しました。

そこで、正規表現を可視化できるツールregex-railroad-diagramを導入しました。

あとはその正規表現にカーソルを合わせれば自動的にダイヤグラム図が表示されます。

image.png

簡単に扱えそうですね!!

やり方はhttps://kita-note.com/atom-package-regex-railroad-diagramにありますので是非ご興味ある方はやってみてください!

最後に

正規表現に苦手意識ある方はぜひダイヤグラムを使ったり分かりやすい記事を読んで少しずつ身につけていただけたらと思います!
bot開発は他にもLINEとGASとの連携でbot作るのもあるので、時間あったら手を付けてみたいですね。

ではまた。

参考記事

基本的な正規表現一覧 | murashun.jp
Hubotの正規表現を可視化する - Qiita

4
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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?