読者です 読者をやめる 読者になる 読者になる

IRCで擬似的な複数行送信 with LimeChat & PircBot

IRCの仕様上、改行を含む複数行の送信はできないのですが、
LimeChatというIRCクライアントで「複数行送信」という機能がありなぜ実現できるか謎でした。
ログを見てもIRCサーバにprivmsgコマンド自体は複数回飛んでるけど、表示は一瞬で終わる。
色々試したところ、以下の方法で同じような機能を実装できました。

// これだと改行が反映されない
// privmsg #(チャンネル名) (メッセージ1)(改行コード)(メッセージ2)


// これならOK
privmsg #(チャンネル名) (メッセージ1)(改行コード)privmsg #(チャンネル名) (メッセージ2)

下の例だとコマンドがひとまとまりで送信されるので
キューにメッセージが連続で格納されて処理される・・・ってことなのかな?
詳細はまだよくわかっていないです。。
IRCサーバを自分で立てて挙動をチェックしたいところ。


PircBotのsendNotice()がfinal指定でオーバーロードできなかったので
擬似的な複数行送信が可能な拡張版sendNotice()を作りました。

void sendNoticeEx(String target, String notice) {
	sendNotice(target, notice);
}

void sendNoticeEx(String target, String[] noticeArray) {
	StringBuilder msg = new StringBuilder();
	for(String str : noticeArray) {
		msg.append(msg.length() == 0 ? str : "\r\nNOTICE " + target + " :" + str);
	}
	sendNotice(target, msg.toString());
}

PircBot http://www.jibble.org/pircbot.php