Struct ruma_common::events::room::message::RoomMessageEventContent
source · pub struct RoomMessageEventContent {
pub msgtype: MessageType,
pub relates_to: Option<Relation<MessageType>>,
}events only.Expand description
The content of an m.room.message event.
This event is used when sending messages in a room.
Messages are not limited to be text.
Fields§
§msgtype: MessageTypeA key which identifies the type of message being sent.
This also holds the specific content of each message.
relates_to: Option<Relation<MessageType>>Information about related messages for rich replies.
Implementations§
source§impl RoomMessageEventContent
impl RoomMessageEventContent
sourcepub fn new(msgtype: MessageType) -> Self
pub fn new(msgtype: MessageType) -> Self
Create a RoomMessageEventContent with the given MessageType.
sourcepub fn text_plain(body: impl Into<String>) -> Self
pub fn text_plain(body: impl Into<String>) -> Self
A constructor to create a plain text message.
sourcepub fn text_html(body: impl Into<String>, html_body: impl Into<String>) -> Self
pub fn text_html(body: impl Into<String>, html_body: impl Into<String>) -> Self
A constructor to create an html message.
sourcepub fn text_markdown(body: impl AsRef<str> + Into<String>) -> Self
Available on crate feature markdown only.
pub fn text_markdown(body: impl AsRef<str> + Into<String>) -> Self
markdown only.A constructor to create a markdown message.
sourcepub fn notice_plain(body: impl Into<String>) -> Self
pub fn notice_plain(body: impl Into<String>) -> Self
A constructor to create a plain text notice.
sourcepub fn notice_html(body: impl Into<String>, html_body: impl Into<String>) -> Self
pub fn notice_html(body: impl Into<String>, html_body: impl Into<String>) -> Self
A constructor to create an html notice.
sourcepub fn notice_markdown(body: impl AsRef<str> + Into<String>) -> Self
Available on crate feature markdown only.
pub fn notice_markdown(body: impl AsRef<str> + Into<String>) -> Self
markdown only.A constructor to create a markdown notice.
sourcepub fn make_reply_to(
self,
original_message: &OriginalRoomMessageEvent,
forward_thread: ForwardThread
) -> Self
pub fn make_reply_to(
self,
original_message: &OriginalRoomMessageEvent,
forward_thread: ForwardThread
) -> Self
Turns self into a reply to the given message.
Takes the body / formatted_body (if any) in self for the main text and prepends a
quoted version of original_message. Also sets the in_reply_to field inside relates_to,
and optionally the rel_type to m.thread if the `original_message is in a thread and
thread forwarding is enabled.
This function requires an OriginalRoomMessageEvent since it creates a permalink to
the previous message, for which the room ID is required. If you want to reply to an
OriginalSyncRoomMessageEvent, you have to convert it first by calling
.into_full_event().
If the message was edited, the previous message should be the original message that was edited, with the content of its replacement, to allow the fallback to be accurate at the time it is added.
It is recommended to enable the unstable-sanitize feature when using this method as this will
clean up nested rich reply fallbacks in chains of replies. This uses sanitize_html()
internally, with RemoveReplyFallback::Yes.
Panics
Panics if self has a formatted_body with a format other than HTML.
sourcepub fn make_for_thread(
self,
previous_message: &OriginalRoomMessageEvent,
is_reply: ReplyWithinThread
) -> Self
pub fn make_for_thread(
self,
previous_message: &OriginalRoomMessageEvent,
is_reply: ReplyWithinThread
) -> Self
Turns self into a new message for a thread, that is optionally a reply.
Looks for a Relation::Thread in previous_message. If it exists, this message will be
in the same thread. If it doesn’t, a new thread with previous_message as the root is
created.
If this is a reply within the thread, takes the body / formatted_body (if any) in self
for the main text and prepends a quoted version of previous_message. Also sets the
in_reply_to field inside relates_to.
This function requires an OriginalRoomMessageEvent since it creates a permalink to
the previous message, for which the room ID is required. If you want to reply to an
OriginalSyncRoomMessageEvent, you have to convert it first by calling
.into_full_event().
If the message was edited, the previous message should be the original message that was edited, with the content of its replacement, to allow the fallback to be accurate at the time it is added.
It is recommended to enable the unstable-sanitize feature when using this method as this will
clean up nested rich reply fallbacks in chains of replies. This uses sanitize_html()
internally, with RemoveReplyFallback::Yes.
Panics
Panics if this is a reply within the thread and self has a formatted_body with a format
other than HTML.
sourcepub fn make_replacement(
self,
original_message_id: OwnedEventId,
replied_to_message: Option<&OriginalRoomMessageEvent>
) -> Self
pub fn make_replacement(
self,
original_message_id: OwnedEventId,
replied_to_message: Option<&OriginalRoomMessageEvent>
) -> Self
Turns self into a replacement (or edit) for the message with the given event ID.
This takes the content and sets it in m.new_content, and modifies the content to include
a fallback.
If the message that is replaced is a reply to another message, the latter should also be
provided to be able to generate a rich reply fallback that takes the body /
formatted_body (if any) in self for the main text and prepends a quoted version of
original_message.
This function requires an OriginalRoomMessageEvent since it creates a permalink to
the previous message, for which the room ID is required. If you want to reply to an
OriginalSyncRoomMessageEvent, you have to convert it first by calling
.into_full_event().
If the message was edited, the previous message should be the original message that was edited, with the content of its replacement, to allow the fallback to be accurate at the time it is added.
It is recommended to enable the unstable-sanitize feature when using this method as this will
clean up nested rich reply fallbacks in chains of replies. This uses sanitize_html()
internally, with RemoveReplyFallback::Yes.
Panics
Panics if self has a formatted_body with a format other than HTML.
sourcepub fn msgtype(&self) -> &str
pub fn msgtype(&self) -> &str
Returns a reference to the msgtype string.
If you want to access the message type-specific data rather than the message type itself,
use the msgtype field, not this method.
sourcepub fn sanitize(
&mut self,
mode: HtmlSanitizerMode,
remove_reply_fallback: RemoveReplyFallback
)
Available on crate feature unstable-sanitize only.
pub fn sanitize(
&mut self,
mode: HtmlSanitizerMode,
remove_reply_fallback: RemoveReplyFallback
)
unstable-sanitize only.Sanitize this message.
If this message contains HTML, this removes the tags and attributes that are not listed in the Matrix specification.
It can also optionally remove the rich reply fallback from the plain text and HTML message.
This method is only effective on text, notice and emote messages.
Trait Implementations§
source§impl Clone for RoomMessageEventContent
impl Clone for RoomMessageEventContent
source§fn clone(&self) -> RoomMessageEventContent
fn clone(&self) -> RoomMessageEventContent
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for RoomMessageEventContent
impl Debug for RoomMessageEventContent
source§impl<'de> Deserialize<'de> for RoomMessageEventContent
impl<'de> Deserialize<'de> for RoomMessageEventContent
source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
source§impl EventContent for RoomMessageEventContent
impl EventContent for RoomMessageEventContent
§type EventType = MessageLikeEventType
type EventType = MessageLikeEventType
source§fn event_type(&self) -> Self::EventType
fn event_type(&self) -> Self::EventType
m.room.message.source§impl From<MessageType> for RoomMessageEventContent
impl From<MessageType> for RoomMessageEventContent
source§fn from(msgtype: MessageType) -> Self
fn from(msgtype: MessageType) -> Self
source§impl From<RoomMessageEventContent> for AnyMessageLikeEventContent
impl From<RoomMessageEventContent> for AnyMessageLikeEventContent
source§fn from(c: RoomMessageEventContent) -> Self
fn from(c: RoomMessageEventContent) -> Self
source§impl From<RoomMessageEventContent> for MessageType
impl From<RoomMessageEventContent> for MessageType
source§fn from(content: RoomMessageEventContent) -> Self
fn from(content: RoomMessageEventContent) -> Self
source§impl RedactContent for RoomMessageEventContent
impl RedactContent for RoomMessageEventContent
§type Redacted = RedactedRoomMessageEventContent
type Redacted = RedactedRoomMessageEventContent
source§fn redact(self, version: &RoomVersionId) -> RedactedRoomMessageEventContent
fn redact(self, version: &RoomVersionId) -> RedactedRoomMessageEventContent
self into a redacted form (removing most or all fields) according to the spec. Read more