send_dm/
send_dm.rs

1use agent_twitter_client::scraper::Scraper;
2use agent_twitter_client::error::Result;
3use dotenv::dotenv;
4
5#[tokio::main]
6async fn main() -> Result<()> {
7    dotenv().ok();
8    let mut scraper = Scraper::new().await?;
9    let cookie_string = std::env::var("TWITTER_COOKIE_STRING")
10        .expect("TWITTER_COOKIE_STRING environment variable not set");
11    scraper.set_from_cookie_string(&cookie_string).await?;
12    let username = std::env::var("TWITTER_USERNAME")
13        .expect("TWITTER_USERNAME environment variable not set");
14    let dm_history = scraper.get_direct_message_conversations(&username, None).await?;
15    
16    let user_id = dm_history.user_id.as_str();
17    
18    for conversation in dm_history.conversations {
19        if let Some(last_message) = conversation.messages.last() {
20            let sender_id = last_message.sender_id.as_str();
21            // Only reply if the last message was not from us
22            if sender_id != user_id {
23                let conversation_id = conversation.conversation_id.as_str();
24                let text = last_message.text.as_str();
25                println!("conversation_id: {}", conversation_id);
26                println!("text: {}", text);
27                scraper.send_direct_message(conversation_id, "2").await?;
28            }
29        }
30    }
31    
32    Ok(())
33}