diff --git a/Telegram/SourceFiles/data/data_replies_list.cpp b/Telegram/SourceFiles/data/data_replies_list.cpp
index b2004fa79e..4d9f49ccc5 100644
--- a/Telegram/SourceFiles/data/data_replies_list.cpp
+++ b/Telegram/SourceFiles/data/data_replies_list.cpp
@@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 */
 #include "data/data_replies_list.h"
 
+#include "base/unixtime.h"
 #include "history/history.h"
 #include "history/history_item.h"
 #include "history/history_service.h"
@@ -626,4 +627,20 @@ bool RepliesList::processMessagesIsEmpty(const MTPmessages_Messages &result) {
 	return (list.size() == skipped);
 }
 
+HistoryItem *RepliesList::lastEditableMessage() {
+	const auto message = [&](MsgId msgId) {
+		return _history->owner().message(_history->channelId(), msgId);
+	};
+
+	const auto now = base::unixtime::now();
+	auto proj = [&](MsgId msgId) {
+		if (const auto item = message(msgId)) {
+			return item->allowsEdit(now);
+		}
+		return false;
+	};
+	const auto it = ranges::find_if(_list, std::move(proj));
+	return (it == end(_list)) ? nullptr : message(*it);
+}
+
 } // namespace Data
diff --git a/Telegram/SourceFiles/data/data_replies_list.h b/Telegram/SourceFiles/data/data_replies_list.h
index 36932b82b1..945e70da86 100644
--- a/Telegram/SourceFiles/data/data_replies_list.h
+++ b/Telegram/SourceFiles/data/data_replies_list.h
@@ -31,6 +31,8 @@ public:
 
 	[[nodiscard]] rpl::producer<int> fullCount() const;
 
+	[[nodiscard]] HistoryItem *lastEditableMessage();
+
 private:
 	struct Viewer;
 
diff --git a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp
index d6df6439bb..caf5059fe2 100644
--- a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp
+++ b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp
@@ -492,13 +492,11 @@ void RepliesWidget::setupComposeControls() {
 	) | rpl::start_with_next([=](not_null<QKeyEvent*> e) {
 		if (e->key() == Qt::Key_Up) {
 			if (!_composeControls->isEditingMessage()) {
-				// #TODO replies edit last sent message
-				//auto &messages = session().data().scheduledMessages();
-				//if (const auto item = messages.lastEditableMessage(_history)) {
-				//	_inner->editMessageRequestNotify(item->fullId());
-				//} else {
+				if (const auto item = _replies->lastEditableMessage()) {
+					_inner->editMessageRequestNotify(item->fullId());
+				} else {
 					_scroll->keyPressEvent(e);
-				//}
+				}
 			} else {
 				_scroll->keyPressEvent(e);
 			}