reflectionircd/docs/specs/edit-message.md
2022-02-02 18:55:09 -05:00

2.8 KiB

title layout work-in-progress copyrights
Message Editing and Deletion spec true
name email period
Emerson Veenstra ircv3@emersonveenstra.net 2022

Notes for implementing work-in-progress version

This is a work-in-progress specification.

Software implementing this work-in-progress specification MUST NOT use the unprefixed edit-message capability name or edit-message and delete-message tags. Instead, implementations SHOULD use draft/edit-message capability and draft/edit-message and draft/delete-message tags to be interoperable with other software implementing a compatible work-in-progress version.

The final version of the specification will use an unprefixed capability name.

Introduction

This specification describes a standardized way to change or delete messages that have been sent to clients.

Implementation

Servers and clients implementing this spec MUST also implement the message-tags capability.

Message editing

To edit a message, clients send the edited message with a tag of edit-message. This tag has a required value of the msgid from the original message. The edited message MUST have the same command and first parameter as the original message, unless it is being changed into a multiline message (see below)

Servers MUST support editing PRIVMSG, NOTICE, and TAGMSG messages, and MAY support editing any other type of message. Servers SHOULD enforce all checks that they normally would for that specific type of message (line length, color stripping, censoring, etc.) and return appropriate numerics if the message fails a check.

Client tags attached to the original message MUST be attached to the edited message to preserve or edit their value. If a client tag in the original message is not included in the edited message, clients must consider it removed and no longer a part of the message.

If the server has any persistent history store for the type of message that is edited,

Message deletion

To delete a message, clients send a DELETEMSG message to the channel or user that the original message was sent to. The message MUST have a draft/delete-message tag with the msgid to delete. The message MAY have a second parameter, which is the reason for deletion.

Clients who receive a DELETEMSG with the draft/delete-message tag MUST remove all displayed content from the specified msgid. If the original message is ephemeral, clients SHOULD remove it entirely; otherwise they MUST replace the content with the deletion reason or a generic substitute.

Servers MUST ensure that the user requesting deletion has sufficient privileges to delete the specified message. Servers MUST remove the content of the original message from all persistent history stores, and MAY replace the content with the deletion reason or a generic deletion message if needed.

Examples