fbpx

メニュー

WordPressプラグインGianismでTwitterのボットを作れるようにした

高橋文樹 高橋文樹

この投稿は 10年 前に公開されました。いまではもう無効になった内容を含んでいるかもしれないことをご了承ください。

さて、先ほど拙作WordPressプラグインGianismを2.2にアップデートいたしました。バグフィックスはなしで、新機能追加です。その新機能はTwitterボット作成機能!

設定 > Gianism設定からこの機能をオンにすると、Twitterボットという新しい投稿タイプが表示されます。このボットは次のような機能を持ちます。

  1. Gianismで利用しているTwitterアプリ用アカウントで
  2. 指定した時間と曜日に
  3. 指定した内容を呟き
  4. 指定した日時が訪れると終了する

定期的に同じような内容を呟くなら、各種のボット作成サービスというのがあるのでそれを使えばいいのですが、WordPressで管理しているコンテンツについて何らかのつぶやきをしたい場合なんかに使えるかと。

そもそもこの機能を作ったのは、あなたが読めなくなった作家を教えてくださいのようなキャンペーンのためなんですけどね。

モンゴル皇帝時報botを作ってみる

ぼくがtwiterのタイムラインでたまに目にする「モンゴル皇帝時報bot」みたいなのを作ってみましょう。特定の時間が来ると、「◯ジ・ハーン」と呟くヤツですね。

https://twitter.com/Mongoljihou_bot/status/342712651157213184

さて、まずは新規twitterボットを作成して、こんな感じで投稿を作ります。twitterボットの場合、同じことを何度も呟くだけでは面白くないので、時間帯によってつぶやく内容を変えたりしたいですよね。

投稿編集画面で時間帯とつぶやきを指定
投稿編集画面で時間帯とつぶやきを指定

基本は時間帯を追加して曜日ごとにオン/オフを切り替えていく感じです。「毎時n分」とかそういう設定をできるようにしようと思ったのですが、めんどくさかったので今回はやっていません。

動的な部分に関してはショートコードを使います。デフォルトでは特定の日付まで「あと◯日」と表示するgianism_limitというショートコードを用意してあるのですが、今回はnanji_hanという独自ショートコードを作ります。テーマのfunctions.phpとかに書いておきます。

// ショートコードを追加

add_shortcode('nanji_han', function($atts = array()){
     // 現在時を取得
     $now = current_time('mysql’);
     // 月日を取得
     $date = mysql2date('m-d', $now);
     // 時間を取得。ちなみに、WordPressのdate_i18nは
     // Gが使えない(GMTとして解釈)します。
     $hour = intval(mysql2date('H', $now));
     switch( $hour ){
          case 15:
               // 15時台だったらおやつ食べる
               return 'オヤツ・アーン';
               break;
          default:
               // クリスマスイブの16時以降なら……
               if( '12-24' == $date && 16 < $hour ){
                    return 'アンアン・アーン';
                    break;
               }
               // 大晦日なら鐘が鳴る
               if( '12-31' == $date && 22 < $hour ){
                    return 'ジョヤノカネ・ゴーン';
                    break;
               }
               // それ以外は時報
               $time_str = '';
               $hour_str = array('レイ', 'イチ', 'ニ', 'サン', 'ヨ', 'ゴ', 'ロク', 'シチ', 'ハチ', 'キュウ', 'ジュウ', 'ジュウイチ', 'ジュウニ');
               if( isset($hour_str[$hour]) ){
                    $time_str = $hour_str[$hour];
               }elseif( isset($hour_str[$hour - 12]) ){
                    $time_str = $hour_str[$hour - 12];
               }
               if( $time_str ){
                    return $time_str.'ジ・ハーン';
               }else{
                    return '';
               }
               break;
     }
});

で、試しにやってみたところ動きました。

こんな使い方があるよ

この機能は定期的に何かを呟くだけならあまり意味がない(ボット作成サービスの方が楽)のですが、なにか動的な要素と組み合せると価値があるんじゃないでしょうか。

ちなみに、Gianismにはupdate_twitter_statusという関数があり、設定をきちんとすませておけばtwitterで自動で呟くことができます。この関数、我ながらとても便利だと思うのですが、誰にも褒められたことがありません。使ってる人いるんですかね。

思いつく利用方法としては、以前紹介したGoogle Analyticsの Real Time Reporting API などを利用して、「現在人気急上昇のコンテンツ」を自動で告知するなどがあるんですが。

あとは他のイベントを検知して呟くようなプル型の告知方法があると便利かもしれませんね。終わり。

[429] [429] Client error: `POST https://webservices.amazon.co.jp/paapi5/getitems` resulted in a `429 Too Many Requests` response: {"__type":"com.amazon.paapi5#TooManyRequestsException","Errors":[{"Code":"TooManyRequests","Message":"The request was de (truncated...)

すべての投稿を見る

高橋文樹ニュースレター

高橋文樹が最近の活動報告、サイトでパブリックにできない情報などをお伝えするメーリングリストです。 滅多に送りませんので、ぜひご登録お願いいたします。 お得なダウンロードコンテンツなども計画中です。