mtcute/packages/client/src/methods/messages/find-in-update.ts

48 lines
1.4 KiB
TypeScript
Raw Normal View History

2021-04-08 12:19:38 +03:00
import { TelegramClient } from '../../client'
import { tl } from '@mtcute/tl'
import { Message, MtCuteTypeAssertionError } from '../../types'
import { createUsersChatsIndex } from '../../utils/peer-utils'
2021-04-08 12:19:38 +03:00
/** @internal */
export function _findMessageInUpdate(
this: TelegramClient,
res: tl.TypeUpdates,
isEdit = false
2021-04-08 12:19:38 +03:00
): 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'
)
2021-04-08 12:19:38 +03:00
) {
const { users, chats } = createUsersChatsIndex(res)
2021-04-08 12:19:38 +03:00
return new Message(
this,
u.message,
users,
chats,
u._ === 'updateNewScheduledMessage'
)
}
}
throw new MtCuteTypeAssertionError(
'_findMessageInUpdate (@ -> updates[*])',
'updateNewMessage | updateNewChannelMessage | updateNewScheduledMessage',
'none'
)
}