package main import ( "fmt" "github.com/nbd-wtf/go-nostr" "io/ioutil" "log" ) func main() { // Generate a new private key sk = "private key" // Derive the public key from the private key pk, _ := nostr.DerivePublicKey(sk) // Encode the private key into NIP-19 format nsec, _ := nostr.EncodePrivateKey(sk) // Encode the public key into NIP-19 format npub, _ := nostr.EncodePublicKey(pk) filePath := "path/to/your/file.txt" // Read the file into a byte slice content, err := ioutil.ReadFile(filePath) if err!= nil { log.Fatalf("Failed to read file: %v", err) } // Convert the byte slice to a string dmcontent := string(content) // Create a new event to represent the DM event := &nostr.Event{ Type: "dm", Payload: map[string]interface{}{ "recipient": npub, "content": dmcontent, }, Timestamp: nostr.Now(), Signature: sk.Sign([]byte(fmt.Sprintf("%s %s", nsec, npub))), } // Publish the event to a relay relayURL := "wss://your-relay-url-here" err = nostr.Publish(event, relayURL) if err!= nil { fmt.Println("Error publishing event:", err) return } fmt.Println("Direct message sent successfully!") }