Oddbean new post about | logout

Notes by 3fc5b96b | export

Event not found
 In November 2023, the code required to get this to compile and run was:

use std::{str::FromStr, time::Duration, collections::{HashSet, HashMap}};
use nostr_sdk::prelude::*;
use tokio::time;

const PRIVATE_KEY: &str = "PRIVATE KEY";

#[tokio::main]
async fn main() -> Result<()> {

    let secret_key = SecretKey::from_str(PRIVATE_KEY).unwrap();
    let my_keys = Keys::new(secret_key);

    let client = Client::new(&my_keys);
    client.add_relay("wss://relay.house", None).await?;
    client.add_relay("wss://relay.damus.io", None).await?;
    client.connect().await;

    let message = format!("Hello, nostr! My public key is: {}", my_keys.public_key().to_string());
    println!("{}", message);

    let event = client.publish_text_note(message, &[]).await?;
    println!("{:#?}", event);

    // Retrieve only our last event (from both relays)
    // let filter = Filter::new().id(event);

    // Retrieve all the events that we have posted
    let ids = HashSet::from([event]);
    let authors = HashSet::from([my_keys.public_key()]);
    let kinds = HashSet::new();
    let generic_tags: HashMap<Alphabet, HashSet<String>> = HashMap::new();

    let filter = Filter {
        ids,
        authors,
        kinds,
        generic_tags,
        search: None,
        since: None,
        until: None,
        limit: None,
    };        
    time::sleep(Duration::from_secs(1)).await;

    let events = client.get_events_of(vec![filter], None).await?;
    println!("{:#?}", events);

    Ok(())
}