JavatterAdventCalendarの9日目の記事です。

今回はJavatterのイベントシステムについて解説します。
今回はデモとしてユーザーストリームを取得して、「JavaJava」という発言に対して「@ユーザー名 じゃばっ」とリプライを送るプラグインを作ってみます。

JavatterFX本体はここからダウンロードするかGithubからクローンして自分でビルドしてください。

まずは前回と同じようにロードされた時に動くPluginMainクラスを作りましょう。
Plugin.Initができれば、次にイベントを受け取るリスナクラスを作成します。
今回はMyEventListenerというクラス名にしておきます。
MyEventListenerにはcom.github.orekyuu.javatterfx.event.Listenerを実装する必要があります。

次にイベントを受け取るメソッドを作ります。
今回はユーザーストリームから新しいStatusが来た時のイベントを受け取るメソッドを作ります。

@EventHandler
public void onStatus(EventStatus event){
	
}

メソッドの引数に受け取りたいイベントのクラスを設定し、EventHandlerアノテーションをつけることで引数のイベントに応じて適切なタイミングで呼び出されます。
メソッドの名前は自分の好きな名前で構いません。
あとはツイートの内容がJavaJavaであるかどうかを比較してTweetDispenser#tweetメソッドでつぶやけばリスナは完成です。

最後にこのリスナを登録します。
PluginMainのPlugin.Initが付加されたメソッドで登録しましょう。
EventManager#addEventListener(Listener)を使って登録します。

これで完成です。起動して動作を確認してみましょう。
ソースコードをここに書いておきます。
PluginMain

package com.github.orekyuu.plugin;

import com.github.orekyuu.javatterfx.event.EventManager;
import orekyuu.plugin.loader.Plugin;

@Plugin(name = "じゃばっプラグイン", version = "1.0")
public class PluginMain {

	@Plugin.Init
	public void init(){
		EventManager.INSTANCE.addEventListener(new MyEventListener());
	}
}

MyEventListener

package com.github.orekyuu.plugin;

import com.github.orekyuu.javatterfx.event.EventHandler;
import com.github.orekyuu.javatterfx.event.Listener;
import com.github.orekyuu.javatterfx.event.stream.EventStatus;
import com.github.orekyuu.javatterfx.util.TweetDispenser;

public class MyEventListener implements Listener{

	@EventHandler
	public void onStatus(EventStatus event){
		if(event.getTweetText().equals("JavaJava")){
			TweetDispenser.tweet("@"+event.getAccount()+" じゃばっ");
		}
	}
}