Discord: a forwarded message arrives empty #117

Closed
opened 2026-09-06 12:04:27 -04:00 by Salastil · 1 comment
Owner

Discord's forwarding puts the original message inside the new one as
message_snapshots - the forwarded content is not in content, which is empty or a
bare comment. moho never reads that field (no occurrence of message_snapshot
anywhere in the daemon or the renderer), so a forwarded message shows up as a line
from somebody with nothing in it.

This is a common gesture now: people forward a message from one server to another
instead of screenshotting it, and in moho those conversations have holes in them.

What is needed

  • Read message_snapshots[].message in extract_body (backend/discord.rs) and
    render it as a quoted block attributed to its original author, the way a reply
    preview already is (reply_preview).
  • Carry the snapshot's attachments and embeds too - a forwarded image is the usual
    case.

Done looks like: a forwarded message reads as the thing that was forwarded, with
some mark saying it came from elsewhere.

Reference: the official Discord client.

Discord's forwarding puts the original message inside the new one as `message_snapshots` - the forwarded content is not in `content`, which is empty or a bare comment. moho never reads that field (no occurrence of `message_snapshot` anywhere in the daemon or the renderer), so a forwarded message shows up as a line from somebody with nothing in it. This is a common gesture now: people forward a message from one server to another instead of screenshotting it, and in moho those conversations have holes in them. **What is needed** - Read `message_snapshots[].message` in `extract_body` (`backend/discord.rs`) and render it as a quoted block attributed to its original author, the way a reply preview already is (`reply_preview`). - Carry the snapshot's attachments and embeds too - a forwarded image is the usual case. **Done looks like:** a forwarded message reads as the thing that was forwarded, with some mark saying it came from elsewhere. Reference: the official Discord client.
Salastil added the bugprotocol labels 2026-09-06 12:04:27 -04:00
Salastil removed the protocol label 2026-09-06 12:49:13 -04:00
Author
Owner

Finished.

Handled in nobilis df52e49 and 2aee7a2, with the sending half in 81f1b0b and moho d7c4d81.

extract_body now reads message_snapshots and renders the forwarded message as a quoted block, and the snapshot's pictures become attachments of the message - a forwarded picture is a picture.

One decision worth writing down: it is quoted rather than attributed. A snapshot is deliberately frozen and carries no author, because on Discord's side a forward is the message and not the person who wrote it. Attributing it would mean inventing a name the payload does not contain.

Forwarding out of moho works too, which was not asked for here but is the other half of the same gesture.

Finished. Handled in nobilis [df52e49](https://git.salastil.com/Salastil/nobilis/commit/df52e49) and [2aee7a2](https://git.salastil.com/Salastil/nobilis/commit/2aee7a23bf59b2b27a624312b45f1c27ce5e0c1a), with the sending half in [81f1b0b](https://git.salastil.com/Salastil/nobilis/commit/81f1b0b) and moho [d7c4d81](https://git.salastil.com/Salastil/moho/commit/d7c4d81). `extract_body` now reads `message_snapshots` and renders the forwarded message as a quoted block, and the snapshot's pictures become attachments of the message - a forwarded picture is a picture. One decision worth writing down: it is quoted rather than attributed. A snapshot is deliberately frozen and carries no author, because on Discord's side a forward is the message and not the person who wrote it. Attributing it would mean inventing a name the payload does not contain. Forwarding out of moho works too, which was not asked for here but is the other half of the same gesture.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Salastil/moho#117