Skip to content

Instantly share code, notes, and snippets.

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

  • Save tesaguri/8e5c2f6719980f43f454dcae39ee7698 to your computer and use it in GitHub Desktop.

Select an option

Save tesaguri/8e5c2f6719980f43f454dcae39ee7698 to your computer and use it in GitHub Desktop.
011_BOT-rs (egg-mode)
[package]
name = "ikeay_011_BOT-rs"
version = "0.1.0"
[dependencies]
egg-mode = "0.8"
futures = "0.1"
serde_json = "1"
tokio-core = "0.1"
twitter-stream = { git = "https://github.com/dmizuk/twitter-stream-rs", features = ["egg-mode"] }
// Original: https://twitter.com/ikeay/status/858990024674557955
#![feature(box_patterns)]
extern crate egg_mode;
extern crate futures;
extern crate serde_json as json;
extern crate tokio_core;
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 token = token.into();
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 {
let body = format!("@{} 本ツイートは数日前に議論が盛り上がり、すでに収束しています。引用ツイートはhogehoge", t.user.screen_name);
egg_mode::tweet::DraftTweet::new(&body).in_reply_to(t.id).send(&token).unwrap();
}
}
Ok(())
});
core.run(fut).unwrap();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment