Rubyプログラミング不要!mikutterでBotを作ろう
明けましておめでとうございます。
これは「あー正月ってテレビもつまんないしマジすることないよねー」カレンダー (なにそれ?)2日目の記事です。
今回は拙作プラグインmikutter-extract-fire-commandを使って、コードを一切書かずにTwitter Botを作る方法をご紹介したいと思います。
mikutter-extract-fire-commandについて
mikutter-extract-fire-commandは抽出タブの抽出結果にmikutterコマンドを適用するプラグインです。このプラグインを使うとPlaggerの様に他のWebサービスと連携を取ったり、特定のツイートに反応してちょっとしたマクロ処理が出来るようになります。
mikutter-extract-fire-commandの詳細は、過去に書いた記事を参照してもらえればと思います。
# またえっらい自画自賛だな当時の俺・・・。
定刻につぶやくBotを作ろう
さて、ここからが今回の本題です。
まずは一定時間ごとにメッセージをつぶやくシンプルなBotを作ってみましょう。
例として僕のTLで流しているマイクラサーバの宣伝Botをご紹介します。
(1) プラグインの導入
まず初めに、次のプラグインを導入します。
- mikutter-extract-fire-command
前述の抽出タブの抽出結果にコマンドを適用するプラグインです。
- mikutter-kopipe
あらかじめ定義したメッセージをツイートするコマンドが作れるプラグインです。
- mikutter-datasource-clock
みくったーちゃんが時刻を教えてくれるプラグインです。
(2)投稿するメッセージを作成する。
プラグインの導入が終わったら、mikutter-kopipeに定期的につぶやきたいメッセージを登録していきます。
~/.mikutter/の下にkopipeディレクトリを作成して、下記のYAMLファイルを作成してください。
title: AQUA Craftの宣伝 text: - | Minecraftサーバ"AQUA Craft"やってます。 araaraufufu.xyz マップ:http://araaraufufu.xyz シングルが寂しくなったくらいの人におすすめです。 駅近未開拓地多数。自由に開拓してください!
ファイル名は拡張子が.yamlであれば任意です。
ここではkopipe_aqua_craft.yamlとでもしておきましょう。
一度mikutterを再起動して、右クリックメニューに「AQUA Craftの宣伝」が追加されていることを確認してください。
(3)抽出タブの設定
(a)データソース
1分周期で現在時刻をつぶやくデータソース「時計」を選択します。
(b)絞り込み条件
今回は1時間ごとに通知させたいので、毎時00分のメッセージのみを取り出します。
(c)適用するコマンド
さっき作った「AQUA Craftの宣伝」を適用させます。
これで毎時00分が来るたびに「AQUA Craftの宣伝」コマンドが実行され、宣伝メッセージが自動ツイートされます。時間を呟くだけの存在意義不明なデータソースが、Botのタイミング生成の要になっているところが面白いですね。
特定の言葉に反応するBotを作ろう
続いて、ホームタイムラインの特定のメッセージに反応する愉快なBotを作っていきます。
ここでは「あひる焼き」に反応して火に油を注ぐメッセージを返してみます。
(1)プラグインの導入
今回はmikutter-extract-fire-commandとmikutter-kopipeのみを利用します。
(2)投稿メッセージの作成
ここでもmikutter-kopipe用のメッセージを定義するのですが、mikutter-kopipeのサンプルにあひる焼きを応援するメッセージ(4種)をランダムにつぶやく奴があるので、今回はそれを使います。
~/.mikutter/の下にkopipeディレクトリを作成して、mikutter-kopipe/sample/kopipe_ahiru_yaki.yamlをコピーしてください。
(3)抽出タブの設定
(a)データソース
ホームタイムラインを選択します。
(b)絞り込み条件
次の条件を定義します。
本文に「あひる焼き」を含み、 自分の投稿でなく、 本文に自分の名前を含まない。(あひる焼くなプラグインのリプライを対象外にする)
(c)適用するコマンド
サンプルのあひるを焼く(ランダム返信)を適用させます。
これで、誰かが「あひる焼き」と呟くたびにいちいち茶々ツイートを嚙ますことができるようになります。
あひる焼きゲームよ永遠なれ!
おわりに
今回のBotやmikutterの薄い本 vol.7(もうすぐ通販も始まるよ!)に掲載の「SlideShareのスライドをはてなブックマークに転送する芸」など、mikutter-extract-fire-commandは様々な用途に応用が効く物と思います。
ぜひぜひ皆さんなりの面白い使い方を編み出してください!
では、本年もよろしくお願いします。
みくったーちゃんが時刻を教えてくれるデータソースプラグインを作ったよ
何これ?
みくったーちゃんが1分周期で現在時刻を教えてくれるデータソースです。
シンプルかわいいいです。
インストール
GitHubからzipファイルをダウンロードして適当なディレクトリに展開して下さい。
moguno/mikutter-datasource-clock · GitHub
※mikutterプラグインマネージャ"Packaged"で"moguno"を検索してインストールするのもおすすめです。
使い方
抽出タブを作って「時計」データソースを設定しましょう。至ってシンプルですね。
しばらく放っておくと現在時刻がどんどん呟かれて愉快です。
フォーマット
時刻のフォーマットは下記となります。
現在の時刻は YYYY/mm/dd (aaa) HH:MM だよ
記号やスペースをうまく使うと各要素のパターンマッチも可能です。
例えば、下のような絞り込み条件を組めば時報になったりします。
MacPortsをアップデートしたらmikutterがぽんぽん落ちるようになった件
mikutter3.2 alpha 1が来たので早速遊ぼうとインストールしたんですが、nokogiriがコンパイルエラーになってしまいました。
なのでMacPortsのupgrade outdatedとgem updateを掛けたところ、nokogiriはOKになるもmikutterさんが挙動不審に。(まるでそれはIngress中の私のような。)
SEGV時のスタックトレースを見るとcairoで死んでるっぽいので、MacPortsのアップデートが原因かなとバージョンを調べてみました。
Alicia:mikutter moguno$ port installed cairo The following ports are currently installed: cairo @1.12.16_2+x11 cairo @1.14.0_0+quartz+x11(active) Alicia:mikutter moguno$ port installed pango The following ports are currently installed: pango @1.36.6_0+x11 pango @1.36.8_0+x11 pango @1.36.8_1+quartz+x11(active)
どうも今回のアップデートでquartzサポートが付いて調子が悪くなったような・・・?
update to 1.14.0 (#45391) and make Quartz support always enabled (#44414)
あー・・・(いらんことしやがって)。
アップデートでおかしくなった人
とりあえず元にもどします。
Alicia:mikutter moguno$ port activate cairo @1.12.16_2+x11 Alicia:mikutter moguno$ port activate pango @1.36.8_0+x11
新しくMacPortsをインストールした人 or 誤ってcairo@1.12.16_2+x11とpango@1.36.8_0+x11を消しちゃった人(私)
svnから古いPortfileを取ってきてインストールします。
Alicia:~ moguno$ cd /tmp Alicia:tmp moguno$ svn co http://svn.macports.org/repository/macports/trunk/dports/graphics/cairo --revision 115019 Alicia:tmp moguno$ cd cairo/ Alicia:cairo moguno$ sudo port install Alicia:cairo moguno$ cd /tmp Alicia:tmp moguno$ svn co http://svn.macports.org/repository/macports/trunk/dports/x11/pango --revision 125628 Alicia:tmp moguno$ cd pango/ Alicia:pango moguno$ sudo port install
なお、port install cairo -quartzで行けるかなとも思ったんですがオプションが無視されました・・・。mikutter on OS X受難の時代になりそうです。