@@ -271,11 +271,11 @@ private void sendMessage(IRoom room, PostMessage message) throws IOException {
271271 logger .atInfo ().log (() -> "Sending message [room=" + room .getRoomId () + "]: " + filteredMessage );
272272
273273 synchronized (postedMessages ) {
274- var messageIds = room .sendMessage (filteredMessage , message .splitStrategy ());
274+ var messageIds = room .sendMessage (filteredMessage , message .parentId (), message . splitStrategy ());
275275 var condensedMessage = message .condensedMessage ();
276276 var ephemeral = message .ephemeral ();
277277
278- var postedMessage = new PostedMessage (Instant .now (), filteredMessage , condensedMessage , ephemeral , room .getRoomId (), messageIds );
278+ var postedMessage = new PostedMessage (Instant .now (), filteredMessage , condensedMessage , ephemeral , room .getRoomId (), message . parentId (), messageIds );
279279 postedMessages .put (messageIds .get (0 ), postedMessage );
280280 }
281281 }
@@ -486,6 +486,7 @@ private static class PostedMessage {
486486 private final String condensedContent ;
487487 private final boolean ephemeral ;
488488 private final int roomId ;
489+ private final long parentId ;
489490 private final List <Long > messageIds ;
490491
491492 /**
@@ -498,16 +499,18 @@ private static class PostedMessage {
498499 * @param ephemeral true to delete the message after the amount of time
499500 * specified in the "hideOneboxesAfter" setting, false not to
500501 * @param roomId the ID of the room the message was posted in
502+ * @param parentId the ID of the message that this was a reply to
501503 * @param messageIds the ID of each message that was actually posted to
502504 * the room (the chat client may split up the original message due to
503505 * length limitations)
504506 */
505- public PostedMessage (Instant timePosted , String originalContent , String condensedContent , boolean ephemeral , int roomId , List <Long > messageIds ) {
507+ public PostedMessage (Instant timePosted , String originalContent , String condensedContent , boolean ephemeral , int roomId , long parentId , List <Long > messageIds ) {
506508 this .timePosted = timePosted ;
507509 this .originalContent = originalContent ;
508510 this .condensedContent = condensedContent ;
509511 this .ephemeral = ephemeral ;
510512 this .roomId = roomId ;
513+ this .parentId = parentId ;
511514 this .messageIds = messageIds ;
512515 }
513516
@@ -575,6 +578,14 @@ public boolean isCondensableOrEphemeral() {
575578 public boolean isEphemeral () {
576579 return ephemeral ;
577580 }
581+
582+ /**
583+ * Gets the ID of the message that this was a reply to.
584+ * @return the parent ID or 0 if it's not a reply
585+ */
586+ public long getParentId () {
587+ return parentId ;
588+ }
578589 }
579590
580591 private abstract class Chore implements Comparable <Chore > {
@@ -945,7 +956,7 @@ public void complete() {
945956
946957 var messageIds = postedMessage .getMessageIds ();
947958 var quotedContent = quote (condensedContent );
948- room .editMessage (messageIds .get (0 ), quotedContent );
959+ room .editMessage (messageIds .get (0 ), postedMessage . getParentId (), quotedContent );
949960
950961 /*
951962 * If the original content was split up into
@@ -963,6 +974,7 @@ public void complete() {
963974 }
964975 }
965976
977+ @ SuppressWarnings ("deprecation" )
966978 private String quote (String content ) {
967979 var cb = new ChatBuilder ();
968980
0 commit comments