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()); }