Отправка и чтение личных сообщений
Отправка и чтение личных сообщений
@nostr-wot/dm создаёт сообщения NIP-17 и проверяет их раскрытие. Обоим участникам нужен подписант с NIP-44. Пример создаёт обёртку и читает её с помощью подписанта получателя.
терминал
$npm install @nostr-wot/dm@2.0.0 nostr-wot-sdk@3.0.0 nostr-tools
Пример
typescript
import { buildChatMessage, sealAndGiftWrap, unwrapGiftWrap } from "@nostr-wot/dm";
import type { NostrSigner } from "nostr-wot-sdk/signers";
export async function prepareMessage(signer: NostrSigner, recipient: string, text: string) {
const me = await signer.getPublicKey();
const message = buildChatMessage(me, recipient, text);
return sealAndGiftWrap(signer, recipient, message);
}
// Run with the recipient's signer after receiving a kind-1059 event.
export async function readMessage(signer: NostrSigner, wrap: Parameters<typeof unwrapGiftWrap>[1]) {
const { message, senderPubkey } = await unwrapGiftWrap(signer, wrap);
return { from: senderPubkey, text: message.content };
}Примечания по интеграции
Публикуйте события типа 1059 на входящих реле получателя из события типа 10050. Для истории отправителя создайте отдельную обёртку. Не публикуйте внутреннее сообщение или печать напрямую. Внешний тег получателя остаётся видимым. /cache и /react предоставляют историю и интерфейс; закрывайте подписки при выходе.