TwitterスライムBot少し改良しました。(PHP・正規表現技術メモ)

Apr 13, 2011

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公式サイトから、呪文をとなえられるような誘導が、

TwitterスライムBot少し改良しました。(PHP・正規表現技術メモ)
ここをクリックすると

TwitterスライムBot少し改良しました。(PHP・正規表現技術メモ)
こんな画面にジャンプという流れになってました。

でもこれだと、「@dq_jumon メラ」みたいな形のツイートになってしまい、周りから見たら意味不明なものになってしまうので、「なんかうまい方法ないかなぁ。」と思っていました。

改良するためにスクリプトを追加したい、けど、PHPビギナーな僕はすぐつまずいてしまいました。そこで発動するのが、他力本願術!

TwitterスライムBot少し改良しました。(PHP・正規表現技術メモ)
Facebook上で、@wokamotoさんに教えていただきました。
をかもとさん、改めて、ありがとうございました!

そんなかんじで出来たのがこのコード。

if (preg_match(‘/【([^】]*)】/u’, $enemy_jumon, $matches)) {
$enemy_jumon = $matches[1];
}

これで何がどう改良になったのかと言いますと……、

TwitterスライムBot少し改良しました。(PHP・正規表現技術メモ)
ここクリックすると、

TwitterスライムBot少し改良しました。(PHP・正規表現技術メモ)
この画面に!

スミカッコ【】の中の文字列だけを呪文として抽出してくれる、というわけです。
今までのバージョンだと、このやり方でつぶやかれてしまうと、『【メラ】をとなえたをとなえた!』のような残念仕様だったのですが、ちゃんとカッコ内の文字のみを呪文として認識できるようになったのです。

というわけで、ちょっと改良したスライムBot、ぜひ遊んでみてください!
スライムBotと戦う!

白坂翔
白坂翔

1984年生まれ。ボードゲームカフェJELLY JELLY CAFEオーナー、将棋カフェCOBINオーナー、マーダーミステリー専門店Rabbitholeプロデューサー、株式会社人狼の代表取締役。ポーカーとゴルフが好きです。MORE

あわせてどうぞ

【3月29日(土)】お花見します