Last active
May 13, 2017 06:31
-
-
Save tesaguri/592762e574c150e88d5e5a68e3b5ca0f to your computer and use it in GitHub Desktop.
011_BOT-rs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [package] | |
| name = "ikeay_011_BOT-rs" | |
| version = "0.1.0" | |
| [dependencies] | |
| futures = "0.1" | |
| serde_json = "1" | |
| tokio-core = "0.1" | |
| tweetust = "0.7" | |
| twitter-stream = { git = "https://github.com/dmizuk/twitter-stream-rs", features = ["tweetust"] } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Original: https://twitter.com/ikeay/status/858990024674557955 | |
| #![feature(box_patterns)] | |
| extern crate futures; | |
| extern crate serde_json as json; | |
| extern crate tokio_core; | |
| extern crate tweetust; | |
| extern crate twitter_stream; | |
| use futures::{Future, Stream}; | |
| use std::fs::File; | |
| use std::io::BufReader; | |
| use twitter_stream::message::message::{Event, EventKind, StreamMessage}; | |
| const ID: u64 = 857893534120026112; | |
| fn main() { | |
| let mut core = tokio_core::reactor::Core::new().unwrap(); | |
| let handle = core.handle(); | |
| let token = json::from_reader(BufReader::new(File::open("credential.json").unwrap())).unwrap(); | |
| let stream = twitter_stream::TwitterStream::user(&token, &handle).flatten_stream(); | |
| let rest = tweetust::TwitterClient::new(token, tweetust::DefaultHttpHandler::with_https_connector().unwrap()); | |
| let fut = stream.for_each(|json| { | |
| if let Ok(StreamMessage::Event(box Event { event: EventKind::QuotedTweet(ref t), .. })) = json::from_str(&json) { | |
| if Some(ID) == t.quoted_status_id { | |
| rest.statuses() | |
| .update(format!("@{} 本ツイートは数日前に議論が盛り上がり、すでに収束しています。引用ツイートはhogehoge", t.user.screen_name)) | |
| .in_reply_to_status_id(t.id as _).execute().unwrap(); | |
| } | |
| } | |
| Ok(()) | |
| }); | |
| core.run(fut).unwrap(); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment