TwitterAPI(Twitter4J)を利用してダイレクトメッセージに来た特定のコメントに対してリアルタイムで
応答できるプログラムを作ろうとしています。
Twitter4JのサンプルにあったプログラムPrintUserStreamを拡張して作成しようとしていますが、
かなり初歩的なところで躓いています。アドバイスいただけると助かります。
下のプログラムではonDirectMessage内でsendDirectMessageメソッドを呼び出そうとしていますが、
twitterオブジェクトが参照できずエラーになってしまいます。
代わりにcb2の認証定義をonDirectMessage内に宣言すると随時onDirectMessageイベントが発生するたび認証してしまいよろしくありません。
どのようなソースコードを書けば問題が解決されるでしょうか。
----------ソースサンプル----------------------------------------------
class PrintUserStream {
public static void main(String[] args) throws TwitterException {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey("xxx")
.setOAuthConsumerSecret("xxx")
.setOAuthAccessToken("xxx")
.setOAuthAccessTokenSecret("xxx");
ConfigurationBuilder cb2 = new ConfigurationBuilder();
cb2.setDebugEnabled(true)
.setOAuthConsumerKey("xxx")
.setOAuthConsumerSecret("xxx")
.setOAuthAccessToken("xxx")
.setOAuthAccessTokenSecret("xxx");
Twitter twitter = new TwitterFactory(cb2.build()).getInstance();
TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();
twitterStream.addListener(listener);
// user() method internally creates a thread which manipulates TwitterStream and calls these adequate listener methods continuously.
twitterStream.user();
}
public static UserStreamListener listener = new UserStreamListener() {
// private DirectMessagesResources twitter;
@Override
public void onStatus(Status status) {
System.out.println("onStatus @" + status.getUser().getScreenName() + " - " + status.getText());
}
@Override
public void onDirectMessage(DirectMessage directMessage) {
System.out.println("onDirectMessage text:"
+ directMessage.getText());
System.out.println(directMessage.getSenderId());
if(directMessage.getText().contains("xxx")){
System.out.println(directMessage.getText());
twitter.sendDirectMessage(ID, "コメント");
}
}
};
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java java final 1 2022/06/10 22:49
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Ruby vscode 文字化け 1 2022/05/21 19:17
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- X(旧Twitter) Twitterで拾った拾い画ですが教えてgooのユーザー様ならここになんと入れますか? https: 3 2023/03/15 11:02
- X(旧Twitter) 9歳の女の子が整形 みなさんならどう思いますか? ↓Twitterからです https://twit 2 2022/04/06 14:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数を動的に利用するには?
-
中カッコ{}だけの記述について
-
プログラミングの問題です。大...
-
NoSuchMethodErrorが解決できま...
-
じゃんけん プログラミング
-
コマンドライン引数の*(アフ...
-
【初心者です】javaで平均値を...
-
System.exit()の値を取得したい
-
javaで特定の文字列から特定の...
-
randomで
-
HTTPでPOSTしてgooメールにログ...
-
【正規表現】< と > に囲まれた...
-
C言語のポインターに関する警告
-
大量のデータを読み込んで表示...
-
[JAVA]try 内の変数を外で!?
-
ダブルクォーテーションのrepla...
-
ボタンの複数割り当てについて
-
ループ処理の際、最後だけ","を...
-
C#で、あるクラスのメンバーす...
-
IF関数でEmpty値を設定する方法。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングの問題です。大...
-
変数を動的に利用するには?
-
中カッコ{}だけの記述について
-
Java プログラム public class ...
-
System.exit()の値を取得したい
-
Javaでlog4jを使ってログ出力を...
-
javaのプログラミングで作るRPG...
-
Socketの接続のタイムアウトを...
-
NoSuchMethodErrorが解決できま...
-
JSP/Servletのパラメータの受け...
-
コンストラクタの引数の中のnew?
-
バッチファイルごしのシステム...
-
Javaで日本語の出力が文字化けする
-
javaのudp通信について
-
日本語が文字コードによっては...
-
(大至急)JavaでATMもどきを作成
-
【java】同ディレクトリ別ファ...
-
javaで特定の文字列から特定の...
-
(1)を表示するには
-
Processing :指定フォルダ内の...
おすすめ情報