NodeJS bindings of the nostr-sdk
crate.
npm i @rust-nostr/nostr-sdk
const { Keys, Client, Options, Metadata, EventId, PublicKey, EventBuilder } = require("@rust-nostr/nostr-sdk");
async function main() {
let keys = Keys.generate();
// Hex keys
console.log("Public key (hex): ", keys.publicKey().toHex());
console.log("Secret key (hex): ", keys.secretKey().toHex());
// Bech32 keys
console.log("Public key (bech32): ", keys.publicKey().toBech32());
console.log("Secret key (bech32): ", keys.secretKey().toBech32());
let opts = new Options().waitForSend(true);
let client = Client.withOpts(keys, opts);
await client.addRelay("wss://relay.damus.io");
await client.addRelay("wss://nostr.oxtr.dev");
await client.addRelay("wss://nostr.bitcoiner.social");
await client.addRelay("wss://nostr.openchain.fr");
await client.addRelay("ws://jgqaglhautb4k6e6i2g34jakxiemqp6z4wynlirltuukgkft2xuglmqd.onion", "127.0.0.1:9050");
await client.connect();
let metadata = new Metadata()
.name("username")
.displayName("My Username")
.about("Description")
.picture("https://example.com/avatar.png")
.banner("https://example.com/banner.png")
.nip05("[email protected]")
.lud16("[email protected]");
await client.setMetadata(metadata);
await client.publishTextNote("My first text note from Nostr SDK!", []);
// Send custom event
let event_id = EventId.fromBech32("note1z3lwphdc7gdf6n0y4vaaa0x7ck778kg638lk0nqv2yd343qda78sf69t6r");
let public_key = PublicKey.fromBech32("npub14rnkcwkw0q5lnmjye7ffxvy7yxscyjl3u4mrr5qxsks76zctmz3qvuftjz");
let event = EventBuilder.newReaction(event_id, public_key, "🧡").toEvent(keys);
// Send custom event to all relays
// await client.send_event(event);
// Send custom event to a specific previously added relay
await client.sendEventTo("wss://relay.damus.io", event);
}
main();
Look at https://github.com/rust-nostr/nostr/tree/master/crates/nostr#supported-nips
This library is in an ALPHA state, things that are implemented generally work but the API will change in breaking ways.
This project is distributed under the MIT software license - see the LICENSE file for details
⚡ Tips: https://getalby.com/p/yuki
⚡ Lightning Address: [email protected]