UNPKG

@stack.thefennec.dev/telegram-export-parser

Version:

TypeScript library for parsing Telegram Desktop's data export with full type safety

226 lines 6.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasReply = hasReply; exports.hasReactions = hasReactions; exports.isForwarded = isForwarded; exports.isSavedMessage = isSavedMessage; exports.isEdited = isEdited; exports.isViaBot = isViaBot; exports.isTextMessage = isTextMessage; exports.isPhotoMessage = isPhotoMessage; exports.isLocationMessage = isLocationMessage; exports.isContactMessage = isContactMessage; exports.isPollMessage = isPollMessage; exports.isGameMessage = isGameMessage; exports.isInvoiceMessage = isInvoiceMessage; exports.isMediaMessage = isMediaMessage; exports.isAnimationMessage = isAnimationMessage; exports.isAudioFileMessage = isAudioFileMessage; exports.isStickerMessage = isStickerMessage; exports.isVideoFileMessage = isVideoFileMessage; exports.isVideoNoteMessage = isVideoNoteMessage; exports.isVoiceMessage = isVoiceMessage; exports.isDocumentMessage = isDocumentMessage; // ===================================================== // TYPE GUARD FUNCTIONS // ===================================================== // Common property guards /** * Type guard to check if a message or event has a reply reference. * * @param msg - The message or event to check * @returns True if the item is replying to another message * * @example * ```typescript * if (hasReply(msg)) { * console.log(`Replying to message ${msg.replyToMessageId}`) * } * ``` */ function hasReply(msg) { return "replyToMessageId" in msg && typeof msg.replyToMessageId === "number"; } /** * Type guard to check if a message or event has user reactions. * * @param msg - The message or event to check * @returns True if the item has at least one reaction */ function hasReactions(msg) { return "reactions" in msg && Array.isArray(msg.reactions) && msg.reactions.length > 0; } /** * Type guard to check if a message or event was forwarded from another chat. * * @param msg - The message or event to check * @returns True if the item was forwarded */ function isForwarded(msg) { return "forwardedFrom" in msg && msg.forwardedFrom !== undefined; } /** * Type guard to check if a message or event was saved from another chat. * * @param msg - The message or event to check * @returns True if the item was saved */ function isSavedMessage(msg) { return "savedFrom" in msg && msg.savedFrom !== undefined; } /** * Type guard to check if a message or event has been edited after sending. * * @param msg - The message or event to check * @returns True if the item was edited */ function isEdited(msg) { return "edited" in msg && msg.edited === true; } /** * Type guard to check if a message or event was sent via a bot. * * @param msg - The message or event to check * @returns True if the item was sent through a bot */ function isViaBot(msg) { return "viaBot" in msg && msg.viaBot !== undefined; } // Message type guards /** * Type guard to check if an item is a simple text message. * * @param msg - The message or event to check * @returns True if the item is a TextMessage */ function isTextMessage(msg) { return msg.type === "message" && "textEntities" in msg && !("fileURL" in msg) && !("photoURL" in msg) && !("locationInformation" in msg); } /** * Type guard to check if an item is a photo message. * * @param msg - The message or event to check * @returns True if the item is a PhotoMessage */ function isPhotoMessage(msg) { return msg.type === "message" && "photoURL" in msg; } /** * Type guard to check if an item is a location message. * * @param msg - The message or event to check * @returns True if the item is a LocationMessage */ function isLocationMessage(msg) { return msg.type === "message" && "locationInformation" in msg; } /** * Type guard to check if an item is a contact message. * * @param msg - The message or event to check * @returns True if the item is a ContactMessage */ function isContactMessage(msg) { return msg.type === "message" && "contactInformation" in msg; } /** * Type guard to check if an item is a poll message. * * @param msg - The message or event to check * @returns True if the item is a PollMessage */ function isPollMessage(msg) { return msg.type === "message" && "poll" in msg; } /** * Type guard to check if an item is a game message. * * @param msg - The message or event to check * @returns True if the item is a GameMessage */ function isGameMessage(msg) { return msg.type === "message" && "gameTitle" in msg; } /** * Type guard to check if an item is an invoice message. * * @param msg - The message or event to check * @returns True if the item is an InvoiceMessage */ function isInvoiceMessage(msg) { return msg.type === "message" && "invoiceInformation" in msg; } // Media message guards /** * Type guard to check if an item is any type of media message. * * @param msg - The message or event to check * @returns True if the item is a MediaMessage */ function isMediaMessage(msg) { return msg.type === "message" && "fileURL" in msg && "mediaType" in msg; } /** * Type guard to check if an item is an animation message. * * @param msg - The message or event to check * @returns True if the item is an AnimationMessage */ function isAnimationMessage(msg) { return isMediaMessage(msg) && msg.mediaType === "animation"; } /** * Type guard to check if an item is a music/audio file message. * * @param msg - The message or event to check * @returns True if the item is a MusicMessage */ function isAudioFileMessage(msg) { return isMediaMessage(msg) && msg.mediaType === "audio_file"; } /** * Type guard to check if an item is a sticker message. * * @param msg - The message or event to check * @returns True if the item is a StickerMessage */ function isStickerMessage(msg) { return isMediaMessage(msg) && msg.mediaType === "sticker"; } /** * Type guard to check if an item is a video file message. * * @param msg - The message or event to check * @returns True if the item is a VideoMessage */ function isVideoFileMessage(msg) { return isMediaMessage(msg) && msg.mediaType === "video_file"; } /** * Type guard to check if an item is a video note message. * * @param msg - The message or event to check * @returns True if the item is a VideoNoteMessage */ function isVideoNoteMessage(msg) { return isMediaMessage(msg) && msg.mediaType === "video_message"; } /** * Type guard to check if an item is a voice message. * * @param msg - The message or event to check * @returns True if the item is a VoiceNoteMessage */ function isVoiceMessage(msg) { return isMediaMessage(msg) && msg.mediaType === "voice_message"; } /** * Type guard to check if an item is a document message. * * @param msg - The message or event to check * @returns True if the item is a DocumentMessage */ function isDocumentMessage(msg) { return isMediaMessage(msg) && msg.mediaType === "file"; } //# sourceMappingURL=messages.js.map