diff --git a/src/api/gramjs/methods/messages.ts b/src/api/gramjs/methods/messages.ts index ccc68c499..204299a1b 100644 --- a/src/api/gramjs/methods/messages.ts +++ b/src/api/gramjs/methods/messages.ts @@ -666,22 +666,13 @@ async function uploadMedia(localMessage: ApiMessage, attachment: ApiAttachment, export async function pinMessage({ chat, messageId, isUnpin, isOneSide, isSilent, }: { chat: ApiChat; messageId: number; isUnpin: boolean; isOneSide?: boolean; isSilent?: boolean }) { - const result = await invokeRequest(new GramJs.messages.UpdatePinnedMessage({ + await invokeRequest(new GramJs.messages.UpdatePinnedMessage({ peer: buildInputPeer(chat.id, chat.accessHash), id: messageId, ...(isUnpin && { unpin: true }), ...(isOneSide && { pmOneside: true }), ...(isSilent && { silent: true }), - }), undefined, undefined, true); - - if (!(result instanceof GramJs.Updates)) return; - - // For some reason, Telegram returns UpdateMessageID when pinning a message with a randomId that is unknown to us, - // which causes an 'updateMessage' update instead of 'newMessage'. We ignore this update. - result.updates.forEach((update) => { - if (update instanceof GramJs.UpdateMessageID) return; - updater(update); - }); + })); } export async function unpinAllMessages({ chat, threadId }: { chat: ApiChat; threadId?: number }) { diff --git a/src/api/gramjs/updater.ts b/src/api/gramjs/updater.ts index 90ada8ba3..bf03be74e 100644 --- a/src/api/gramjs/updater.ts +++ b/src/api/gramjs/updater.ts @@ -199,9 +199,10 @@ export function updater(update: Update) { message, }); } else { + // We don't have preview for action or 'via bot' messages, so `newMessage` update here is required + const hasLocalCopy = sentMessageIds.has(message.id) && !message.viaBotId && !message.content.action; onUpdate({ - // We don't have preview for 'via bot' messages, so `newMessage` update here is required - '@type': sentMessageIds.has(message.id) && !message.viaBotId ? 'updateMessage' : 'newMessage', + '@type': hasLocalCopy ? 'updateMessage' : 'newMessage', id: message.id, chatId: message.chatId, message,