NIP-25
NIP-25
Reactions
draft optional
A reaction is a kind 7 event that is used to react to other events.
The generic reaction, represented by the content set to a + string, SHOULD
be interpreted as a “like” or “upvote”.
A reaction with content set to - SHOULD be interpreted as a “dislike” or
“downvote”. It SHOULD NOT be counted as a “like”, and MAY be displayed as a
downvote or dislike on a post. A client MAY also choose to tally likes against
dislikes in a reddit-like system of upvotes and downvotes, or display them as
separate tallies.
The content MAY be an emoji, or NIP-30 custom emoji in this case it MAY be interpreted as a “like” or “dislike”,
or the client MAY display this emoji reaction on the post. If the content is an empty string then the client should
consider it a “+”.
Tags
The reaction event SHOULD include a, e and p tags pointing to the note the user is
reacting to. The p tag allows authors to be notified. The e tags enables clients
to pull all the reactions to individual events and a tags enables clients to seek reactions
for all versions of a replaceable event.
The e tag MUST be the id of the note that is being reacted to.
The a tag MUST contain the coordinates (kind:pubkey:d-tag) of the replaceable being reacted to.
The p tag MUST be the pubkey of the event being reacted to.
The reaction event MAY include a k tag with the stringified kind number
of the reacted event as its value.
Example code
func make_like_event(pubkey: String, privkey: String, liked: NostrEvent) -> NostrEvent {
tags.append(["e", liked.id])
tags.append(["p", liked.pubkey])
tags.append(["k", liked.kind])
let ev = NostrEvent(content: "+", pubkey: pubkey, kind: 7, tags: tags)
ev.calculate_id()
ev.sign(privkey: privkey)
return ev
}
Custom Emoji Reaction
The client may specify a custom emoji (NIP-30) :shortcode: in the
reaction content. The client should refer to the emoji tag and render the
content as an emoji if shortcode is specified.
{
"kind": 7,
"content": ":soapbox:",
"tags": [
["emoji", "soapbox", "https://gleasonator.com/emoji/Gleasonator/soapbox.png"]
],
"pubkey": "79c2cae114ea28a981e7559b4fe7854a473521a8d22a66bbab9fa248eb820ff6",
"created_at": 1682790000
}
The content can be set only one :shortcode:. And emoji tag should be one.
Comments
Public conversation about this article.
No comments yet.
Article metadata
About this entry
Event Id
Raw event
Other authors
No one else has published this topic yet.