Skip to content

Instantly share code, notes, and snippets.

@tesaguri
Last active May 13, 2017 06:31
Show Gist options
  • Select an option

  • Save tesaguri/592762e574c150e88d5e5a68e3b5ca0f to your computer and use it in GitHub Desktop.

Select an option

Save tesaguri/592762e574c150e88d5e5a68e3b5ca0f to your computer and use it in GitHub Desktop.
011_BOT-rs
[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"] }
// 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