この記事は、N高等学校 (1) Advent Calendar 2020 13日目の記事です。
どうも、N高生5期のゆういちさんです。
SNS → GitHub,Twitter
アドベントカレンダーは初投稿です!
何を書こうか正直迷いましたが、昨日思いついたやつでいきたいと思います!
タイトルの通りですが、こんなbotがあると面白いかなと作ってみました。
デモ
作った理由
- Slackのbotで開発してみたい
- 正規表現の学習もそうだけど、もう少し馴染めるようになりたい
- 日本人謝りすぎを解消
この猿はだれ??
gomes(ゴメス)っていうチンパンジーです。
一昔前にフジテレビで放送された「CHIMPAN NEWS CHANNEL」の報道系のバラエティ番組をよく見てて、
このゴメスが番組の司会進行役で、チンパンジーが番組スタッフの謝罪に対してツッコミをするというシーンを思い出したことからこのbotを実現してみました。
(実際は違うチンパンジーが突っ込んでたかもです。)
書いてみた
'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回繰り返してメッセージが返ってきたり、文字列が重複してそれぞれ違うメッセージがいくつか出てきたこともあったりしました。
正規表現を可視化してみる
ただ文面だけみても正直なんて書いてあるのか分かりません。
僕もbot作るときに調べる時間はかなり要しました。
そこで、正規表現を可視化できるツールregex-railroad-diagramを導入しました。
あとはその正規表現にカーソルを合わせれば自動的にダイヤグラム図が表示されます。
簡単に扱えそうですね!!
やり方はhttps://kita-note.com/atom-package-regex-railroad-diagramにありますので是非ご興味ある方はやってみてください!
最後に
正規表現に苦手意識ある方はぜひダイヤグラムを使ったり分かりやすい記事を読んで少しずつ身につけていただけたらと思います!
bot開発は他にもLINEとGASとの連携でbot作るのもあるので、時間あったら手を付けてみたいですね。
ではまた。