TwitterスライムBot少し改良しました。(PHP・正規表現技術メモ)
2年近く前に、スライムBotというものを作りました。
スライム (dq_jumon) on Twitter
リリース当時の記事はこちら。
スライムTwitter Bot作りました。 | しらさかブログ
リリースしてから2年弱の間、ほぼ放置してたのですが、いろんな方に遊んでいただきまして、おかげさまでTwitter投稿数ランキングで日本1位になってしまいました! 本当にありがたいことです。ありがとう!
Twitter 日本語 ランキング > 投稿数(1-50)
表題の件ですが、今回、かなり久しぶりに改良を加えました。今までは、@dq_jumon 宛へのリプライを定期的に解析して、そのツイートから「@dq_jumon」という文字列だけを排除して、残りのテキストを呪文名として解釈していたのです。
こんなふうに。
$enemy_jumon= str_replace(‘@dq_jumon’, ”, $text);
そんな仕組みだったので、スライムBot公式サイトから、呪文をとなえられるような誘導が、
ここをクリックすると
こんな画面にジャンプという流れになってました。
でもこれだと、「@dq_jumon メラ」みたいな形のツイートになってしまい、周りから見たら意味不明なものになってしまうので、「なんかうまい方法ないかなぁ。」と思っていました。
改良するためにスクリプトを追加したい、けど、PHPビギナーな僕はすぐつまずいてしまいました。そこで発動するのが、他力本願術!
Facebook上で、@wokamotoさんに教えていただきました。
をかもとさん、改めて、ありがとうございました!
そんなかんじで出来たのがこのコード。
if (preg_match(‘/【([^】]*)】/u’, $enemy_jumon, $matches)) {
$enemy_jumon = $matches[1];
}
これで何がどう改良になったのかと言いますと……、
ここクリックすると、
この画面に!
スミカッコ【】の中の文字列だけを呪文として抽出してくれる、というわけです。
今までのバージョンだと、このやり方でつぶやかれてしまうと、『【メラ】をとなえたをとなえた!』のような残念仕様だったのですが、ちゃんとカッコ内の文字のみを呪文として認識できるようになったのです。
というわけで、ちょっと改良したスライムBot、ぜひ遊んでみてください!
スライムBotと戦う!