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)
上の日本語部分は「あなた自身をフォローすることはできません!」