Skip to content

Commit

Permalink
Add generic comment
Browse files Browse the repository at this point in the history
  • Loading branch information
arthurfranca committed May 12, 2024
1 parent 0acdf57 commit 6a40f31
Showing 1 changed file with 82 additions and 0 deletions.
82 changes: 82 additions & 0 deletions 22.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
NIP-22
======

Comment
-------

`draft` `optional`

A comment is meant to be used to comment on
or reply to anything except [NIP-01](01.md) `kind:1` events
and other event kinds whose specifications have already defined other
ways to comment on or reply to them.

For example, it can be used to comment on a [NIP-23](23.md) `kind:30023` nostr blog post
or on an off-nostr news article or to reply to another comment.

## Structure

A comment is an event of `kind:1111` with plaintext `.content`
(no HTML, no Markdown nor other formatting).

It must have a `k` tag pointing to the kind of the subject being commented on.
For example, when commenting on a `kind:30023`, the `k` tag is set to "30023".
When replying to another `kind:1111`, the `k` tag is set to "1111".
If commenting on an `https://abc.com/articles/1` artcile the `k` tag is set to "https://abc.com" (its domain).

### Threads

There is always an `o` tag pointing to the original post that started the thread.
It can be an event id (with an "i:<event-pubkey>:" prefix),
an event address ("a:" prefix) or an url ("<protocol>" prefix). The second value
is the optional recommended relay url where the referenced event may be found.
This tag is useful to load all messages of a thread at once.

Note that if commenting on a replaceable event, one can choose to add both id and address references.

Examples:

- `["o", "i:<event-pubkey>:<event-id>", "<relay-url, optional>"]`
- `["o", "a:<event-address>", "<relay-url, optional>"]`
- `["o", "https://abc.com/articles/1/"]`

Also, there is always an `r` tag pointing to the subject being directly commented on or replied to, using the
same structure of the `o` tag.
This tag is useful to lazily load a thread.

### Event Examples

```js
{
kind: 1111,
content: 'Agree with your comment.',
tags: [
// referencing the OP
["o", "https://abc.com/articles/1/"],
// replying to a parent kind:1111 comment
["r", "i:f7234bd4c1394dda46d09f35bd384dd30cc552ad5541990f98844fb06676e9ca:5c83da77af1dec6d7289834998ad7aafbd9e2191396d75ec3cc27f5a77226f36"],
// the parent kind
["k", "1111"]
]
// other fields
}
```

```js
{
kind: 1111,
content: 'Great blog post! Check this out nostr:npub1sn0wdenkukak0d9dfczzeacvhkrgz92ak56egt7vdgzn8pv2wfqqhrjdv9.',
tags: [
// top-level comments have the same o and r tags
["o", "a:30023:3c9849383bdea883b0bd16fece1ed36d37e37cdde3ce43b17ea4e9192ec11289:f9347ca7"],
["r", "a:30023:3c9849383bdea883b0bd16fece1ed36d37e37cdde3ce43b17ea4e9192ec11289:f9347ca7"],
// the parent kind
["k", "30023"],
// the nostr:npub1... mentioned on .content
["p", "84dee6e676e5bb67b4ad4e042cf70cbd8681155db535942fcc6a0533858a7240"]
]
// other fields
}
```

Note that ideally there are no `p` tags unless the pubkey is being mentioned on the `.content`.

0 comments on commit 6a40f31

Please sign in to comment.