Twitter botが作りたい。

Twitter4jから出力されるエラーメッセージの日本語部分がユニコード変換されてくるのでとりあえずメモ。

ダイレクトメッセージは同一ユーザーに同じメッセージを行ってはいけないらしい。

 これは、BOTだけじゃなく、普通にTwitter上から同じダイレクトメッセージをしようとすると「何か問題が発生しました。しばらく待ってから、再度、メッセージを送信してください。」と言われる。

403:The request is understood, but it has been refused.  An accompanying error message will explain why.
{"error":"There was an error sending your message: Whoops! You already said that.","request":"\/1\/direct_messages\/new.json"}
TwitterException{exceptionCode=[1e0fc430-9cb39bf7], statusCode=403, retryAfter=0, rateLimitStatus=null, version=2.1.8}
	at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:310)
	at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:72)
	at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:103)
	at twitter4j.Twitter.sendDirectMessage(Twitter.java:1035)
	at jp.arcanum.textrpg.twitter.TwitterStreamManager.onStatus(TwitterStreamManager.java:124)
	at twitter4j.UserStreamImpl.onText(UserStreamImpl.java:82)
	at twitter4j.AbstractStreamImplementation.handleNextElement(AbstractStreamImplementation.java:87)
	at twitter4j.UserStreamImpl.next(UserStreamImpl.java:63)
	at twitter4j.TwitterStream$TwitterStreamConsumer.run(TwitterStream.java:621)
フォローしていないユーザーにダイレクトメッセージは送れない

 まぁ、当たり前って言えば当たり前ですが。

403:The request is understood, but it has been refused.  An accompanying error message will explain why.
{"error":"\u3042\u306a\u305f\u3092\u30d5\u30a9\u30ed\u30fc\u3057\u3066\u3044\u306a\u3044\u30e6\u30fc\u30b6\u30fc\u306b\u30c0\u30a4\u30ec\u30af\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002","request":"\/1\/direct_messages\/new.json"}
TwitterException{exceptionCode=[1e0fc430-9cb39bf7], statusCode=403, retryAfter=0, rateLimitStatus=null, version=2.1.8}
	at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:310)
	at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:72)
	at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:103)
	at twitter4j.Twitter.sendDirectMessage(Twitter.java:1035)
	at jp.arcanum.textrpg.twitter.TwitterStreamManager.process(TwitterStreamManager.java:155)
	at jp.arcanum.textrpg.twitter.TwitterStreamManager.onStatus(TwitterStreamManager.java:112)
	at twitter4j.UserStreamImpl.onText(UserStreamImpl.java:82)
	at twitter4j.AbstractStreamImplementation.handleNextElement(AbstractStreamImplementation.java:87)
	at twitter4j.UserStreamImpl.next(UserStreamImpl.java:63)
	at twitter4j.TwitterStream$TwitterStreamConsumer.run(TwitterStream.java:621)


 上の、変換された日本語は、「あなたをフォローしていないユーザーにダイレクトメッセージを送ることができません。」

既にフォローしたユーザーを再度フォローしようとすると怒られる
403:The request is understood, but it has been refused.  An accompanying error message will explain why.
{"error":"Could not follow user: ****\u306f\u65e2\u306b\u3042\u306a\u305f\u306e\u30ea\u30b9\u30c8\u306b\u767b\u9332\u3055\u308c\u3066\u3044\u307e\u3059\u3002","request":"\/1\/friendships\/create.json?include_entities=true&screen_name=****"}
TwitterException{exceptionCode=[ed901634-ca27228b], statusCode=403, retryAfter=0, rateLimitStatus=null, version=2.1.8}
	at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:310)
	at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:72)
	at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:119)
	at twitter4j.Twitter.createFriendship(Twitter.java:1056)
	at jp.arcanum.textrpg.twitter.TwitterStreamManager.onFollow(TwitterStreamManager.java:175)
	at twitter4j.UserStreamImpl.onFollow(UserStreamImpl.java:132)
	at twitter4j.AbstractStreamImplementation.handleNextElement(AbstractStreamImplementation.java:112)
	at twitter4j.UserStreamImpl.next(UserStreamImpl.java:63)
	at twitter4j.TwitterStream$TwitterStreamConsumer.run(TwitterStream.java:621)

上の日本語部分は「は既にあなたのリストに登録されています。」

自分自身をフォローしようとすると怒られる

 しかも'!'付きで大変怒ってらっしゃる。(笑)

403:The request is understood, but it has been refused.  An accompanying error message will explain why.
{"error":"Could not follow user: \u3042\u306a\u305f\u81ea\u8eab\u3092\u30d5\u30a9\u30ed\u30fc\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\uff01","request":"\/1\/friendships\/create.json?include_entities=true&screen_name=rpgcommand"}
TwitterException{exceptionCode=[ed901634-ca27228b], statusCode=403, retryAfter=0, rateLimitStatus=null, version=2.1.8}
	at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:310)
	at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:72)
	at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:119)
	at twitter4j.Twitter.createFriendship(Twitter.java:1056)
	at jp.arcanum.textrpg.twitter.TwitterStreamManager.onFollow(TwitterStreamManager.java:186)
	at twitter4j.UserStreamImpl.onFollow(UserStreamImpl.java:132)
	at twitter4j.AbstractStreamImplementation.handleNextElement(AbstractStreamImplementation.java:112)
	at twitter4j.UserStreamImpl.next(UserStreamImpl.java:63)
	at twitter4j.TwitterStream$TwitterStreamConsumer.run(TwitterStream.java:621)

上の日本語部分は「あなた自身をフォローすることはできません!」