mtcute/packages/client/src/methods/messages/find-in-update.ts
teidesu 465a875460 feat(client): editMessage method
also .edit and .editText bound methods for Message
2021-04-09 23:19:58 +03:00

47 lines
1.4 KiB
TypeScript

import { TelegramClient } from '../../client'
import { tl } from '@mtcute/tl'
import { Message, MtCuteTypeAssertionError } from '../../types'
import { createUsersChatsIndex } from '../../utils/peer-utils'
/** @internal */
export function _findMessageInUpdate(
this: TelegramClient,
res: tl.TypeUpdates,
isEdit = false
): Message {
if (!(res._ === 'updates' || res._ === 'updatesCombined'))
throw new MtCuteTypeAssertionError(
'_findMessageInUpdate',
'updates | updatesCombined',
res._
)
for (const u of res.updates) {
if (
isEdit && (
u._ === 'updateEditMessage' ||
u._ === 'updateEditChannelMessage'
) || !isEdit && (
u._ === 'updateNewMessage' ||
u._ === 'updateNewChannelMessage' ||
u._ === 'updateNewScheduledMessage'
)
) {
const { users, chats } = createUsersChatsIndex(res)
return new Message(
this,
u.message,
users,
chats,
u._ === 'updateNewScheduledMessage'
)
}
}
throw new MtCuteTypeAssertionError(
'_findMessageInUpdate (@ -> updates[*])',
'updateNewMessage | updateNewChannelMessage | updateNewScheduledMessage',
'none'
)
}