TSG slackbot sushibot
てぃーえすじー すらっくぼっと すしぼっと (575)
TSG advent calendar 5日目です。
adventar.org
hakatashiさんがbotの流れを作ろうとしている気がするので、書くことにしました。sushi botというbotを作りました。たった36行です。
「すし」「スシ」「寿司」を含むような寿司発言に対して「🍣:sushi:🍣」 reactionをつけます。
これによって、みんな寿司が食べたくなり、日本の経済がよくなる効果が期待できます。
こういうのをつくると、くろごま氏が「スシ」という文を投稿してきて、『スシにも対応しろ』と圧力をかけてきます。
対応すると、くろごま氏が「すシ」などを投稿してきます。
対応すると、くろごま氏が「壽司」などを投稿してきます。
対応すると、くろごま氏が「鮨」などを投稿してきます。
結局、
rtext = rtext. replace(/鮨/g, 'すし'). replace(/([Ss][Uu]|[Zz][Uu]|ス|ズ|ず|寿|壽)/g, 'す'). replace(/([Ss][Hh]?[Ii]|[Cc][Ii]|し|シ|司)/g, 'し');
とnormalizeしてから「すし」を含むものを寿司発言としました。
当然、逗子は寿司発言ではありません。
さらに、同じような戦略で実装できる追加機能として、擬akouryy発見機能もついています。
akouryy氏のつづりはなかなかむずかしいので、間違える人がよくいるとかいないとか。
そのため、擬akouryyを発見し、矯正するために、reactionをつきます。
擬akouryy発言とは、以下のnormalizeを施した後、akouryyが含まれるものです。
rtext = rtext. replace(/akouryyy/g, 'akkoury'). replace(/akouryy/g, ''). replace(/kk/g, 'k'). replace(/rr/g, 'r'). replace(/y/g, 'yy');
雑実装ですね。
ついでに、僕が凍結された頃、さらなる凍結者を出さないために、「殺」「死」発見、警告機能もついています。
これのお陰で、今のところ僕を除いて凍結者はでていません。
ところで今気づいたんですが、/[Zz]/とかって/z/iでよくないですか。