reflectionircd/docs/specs/delete-message.md

61 lines
2.7 KiB
Markdown
Raw Normal View History

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