2022-01-24 10:23:06 -05:00
|
|
|
---
|
2022-02-01 16:32:29 -05:00
|
|
|
title: Message Editing and Deletion
|
2022-01-24 10:23:06 -05:00
|
|
|
layout: spec
|
|
|
|
work-in-progress: true
|
|
|
|
copyrights:
|
|
|
|
-
|
|
|
|
name: "Emerson Veenstra"
|
|
|
|
email: "ircv3@emersonveenstra.net"
|
|
|
|
period: "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
|
2022-02-01 16:32:29 -05:00
|
|
|
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
|
2022-01-24 10:23:06 -05:00
|
|
|
software implementing a compatible work-in-progress version.
|
|
|
|
|
|
|
|
The final version of the specification will use an unprefixed capability name.
|
|
|
|
|
|
|
|
|
|
|
|
## Introduction
|
|
|
|
|
2022-02-01 16:32:29 -05:00
|
|
|
This specification describes a standardized way to change or delete messages that have been sent.
|
2022-01-24 10:23:06 -05:00
|
|
|
|
|
|
|
## Implementation
|
|
|
|
|
|
|
|
Servers and clients implementing this spec MUST also implement the `message-tags` capability.
|
|
|
|
|
2022-02-01 16:32:29 -05:00
|
|
|
### 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`, `TAGMSG`, and `PART` 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.
|
|
|
|
|
|
|
|
If the server has any persistent history store for the type of message that is edited,
|
|
|
|
|
|
|
|
To edit a message, clients send an `EDITMSG` tag to the channel or user that the original message was sent to.
|
|
|
|
This message MUST have a `draft/target-msgid` tag with a required value of the `msgid` to edit.
|
2022-01-24 10:23:06 -05:00
|
|
|
To request message deletion, clients send a `DELETEMSG` to the channel or user of the original message.
|
2022-02-01 16:32:29 -05:00
|
|
|
This `DELETEMSG` MUST have the tag `draft/target-msgid` with a required value of the `msgid` of the
|
2022-01-24 10:23:06 -05:00
|
|
|
message to delete. It MAY have an optional second parameter to specify a reason for deletion.
|
|
|
|
|
2022-02-01 16:32:29 -05:00
|
|
|
Clients who receive a `DELETEMSG` with the `draft/target-msgid` tag MUST remove all displayed content from
|
2022-01-24 10:23:06 -05:00
|
|
|
the specified `msgid`. If the original message is ephemeral, clients SHOULD remove it entirely;
|
2022-02-01 16:32:29 -05:00
|
|
|
otherwise they MUST replace the content with the deletion reason or a generic substitute.
|
2022-01-24 10:23:06 -05:00
|
|
|
|
|
|
|
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 a generic deletion message if needed.
|
|
|
|
|
|
|
|
## Examples
|
|
|
|
|