/** * Wrapper class for Telegram Message with helper methods * * @module wrappers/MessageWrapper */ import type { Message, InputMedia } from '../api/types/index.js'; import type { BaseTelegramApi } from '../api/BaseTelegramApi.generated.js'; import { type MessageType } from '../helpers/update-helpers.js'; /** * Wrapper class that extends Message with convenient helper methods * for sending, replying, editing, and managing messages */ export declare class MessageWrapper implements Message { /** Reference to the bot API instance */ private readonly api; /** Original message data */ private readonly message; /** * Creates a new MessageWrapper instance * * @param message - Original Telegram Message object * @param api - Bot API instance for making calls */ constructor(message: Message, api: BaseTelegramApi); /** * Get message type */ get type(): MessageType; /** * Get file ID from message if it contains media */ get fileId(): string | undefined; /** * Send a message to the same chat * * @param text - Text to send * @param options - Additional options for sendMessage * @returns Promise with sent message */ answerMessage(text: string, options?: Parameters[0]): Promise; /** * Reply to this message * * @param text - Text to send * @param options - Additional options for sendMessage * @returns Promise with sent message */ replyMessage(text: string, options?: Parameters[0]): Promise; /** * Send a photo to the same chat * * @param photo - Photo to send (file_id, URL, or file) * @param options - Additional options for sendPhoto * @returns Promise with sent message */ answerPhoto(photo: string, options?: Parameters[0]): Promise; /** * Reply with a photo to this message * * @param photo - Photo to send (file_id, URL, or file) * @param options - Additional options for sendPhoto * @returns Promise with sent message */ replyPhoto(photo: string, options?: Parameters[0]): Promise; /** * Send a dice to the same chat * * @param options - Additional options for sendDice * @returns Promise with sent message */ answerDice(options?: Parameters[0]): Promise; /** * Reply with a dice to this message * * @param options - Additional options for sendDice * @returns Promise with sent message */ replyDice(options?: Parameters[0]): Promise; /** * Delete this message * * @returns Promise with deletion result */ delete(): Promise; /** * Pin this message in the chat * * @param options - Additional options for pinChatMessage * @returns Promise with result */ pin(options?: Parameters[0]): Promise; /** * Unpin this message in the chat * * @returns Promise with result */ unpin(): Promise; /** * Unpin all messages in the chat * * @returns Promise with result */ unpinAllChatMessages(): Promise; /** * Edit message text or caption * * @param text - New text or caption * @param options - Additional options * @returns Promise with edited message or false if nothing changed */ editText(text: string, options?: Record): Promise; /** * Edit message reply markup * * @param options - Options with new reply_markup * @returns Promise with edited message or false if nothing changed */ editReplyMarkup(options?: Parameters[0]): Promise; /** * Edit message media * * @param media - New media * @param options - Additional options * @returns Promise with edited message or false if message doesn't contain editable media */ editMedia(media: InputMedia, options?: Parameters[0]): Promise; /** * Send a video to the same chat * * @param video - Video to send * @param options - Additional options * @returns Promise with sent message */ answerVideo(video: string, options?: Parameters[0]): Promise; /** * Reply with a video to this message * * @param video - Video to send * @param options - Additional options * @returns Promise with sent message */ replyVideo(video: string, options?: Parameters[0]): Promise; /** * Send a contact to the same chat * * @param phoneNumber - Contact's phone number * @param firstName - Contact's first name * @param options - Additional options * @returns Promise with sent message */ answerContact(phoneNumber: string, firstName: string, options?: Parameters[0]): Promise; /** * Reply with a contact to this message * * @param phoneNumber - Contact's phone number * @param firstName - Contact's first name * @param options - Additional options * @returns Promise with sent message */ replyContact(phoneNumber: string, firstName: string, options?: Parameters[0]): Promise; /** * Send an audio to the same chat * * @param audio - Audio to send * @param options - Additional options * @returns Promise with sent message */ answerAudio(audio: string, options?: Parameters[0]): Promise; /** * Reply with an audio to this message * * @param audio - Audio to send * @param options - Additional options * @returns Promise with sent message */ replyAudio(audio: string, options?: Parameters[0]): Promise; /** * Send a voice message to the same chat * * @param voice - Voice message to send * @param options - Additional options * @returns Promise with sent message */ answerVoice(voice: string, options?: Parameters[0]): Promise; /** * Reply with a voice message to this message * * @param voice - Voice message to send * @param options - Additional options * @returns Promise with sent message */ replyVoice(voice: string, options?: Parameters[0]): Promise; /** * Send a video note to the same chat * * @param videoNote - Video note to send * @param options - Additional options * @returns Promise with sent message */ answerVideoNote(videoNote: string, options?: Parameters[0]): Promise; /** * Reply with a video note to this message * * @param videoNote - Video note to send * @param options - Additional options * @returns Promise with sent message */ replyVideoNote(videoNote: string, options?: Parameters[0]): Promise; /** * Send a media group to the same chat * * @param media - Array of media to send * @param options - Additional options * @returns Promise with sent messages */ answerMediaGroup(media: InputMedia[], options?: Parameters[0]): Promise; /** * Reply with a media group to this message * * @param media - Array of media to send * @param options - Additional options * @returns Promise with sent messages */ replyMediaGroup(media: InputMedia[], options?: Parameters[0]): Promise; /** * Send a sticker to the same chat * * @param sticker - Sticker to send * @param options - Additional options * @returns Promise with sent message */ answerSticker(sticker: string, options?: Parameters[0]): Promise; /** * Reply with a sticker to this message * * @param sticker - Sticker to send * @param options - Additional options * @returns Promise with sent message */ replySticker(sticker: string, options?: Parameters[0]): Promise; /** * Send a document to the same chat * * @param document - Document to send * @param options - Additional options * @returns Promise with sent message */ answerDocument(document: string, options?: Parameters[0]): Promise; /** * Reply with a document to this message * * @param document - Document to send * @param options - Additional options * @returns Promise with sent message */ replyDocument(document: string, options?: Parameters[0]): Promise; /** * Send an animation to the same chat * * @param animation - Animation to send * @param options - Additional options * @returns Promise with sent message */ answerAnimation(animation: string, options?: Parameters[0]): Promise; /** * Reply with an animation to this message * * @param animation - Animation to send * @param options - Additional options * @returns Promise with sent message */ replyAnimation(animation: string, options?: Parameters[0]): Promise; /** * Send a chat action to the same chat * * @param action - Chat action to send * @returns Promise with result */ answerChatAction(action: string): Promise; /** * Forward this message to another chat * * @param chatId - Target chat ID * @param options - Additional options * @returns Promise with forwarded message */ forward(chatId: number | string, options?: Parameters[0]): Promise; /** * Copy this message to another chat * * @param chatId - Target chat ID * @param options - Additional options * @returns Promise with message ID of the copy */ copy(chatId: number | string, options?: Parameters[0]): Promise; /** * Copy this message to another chat as a reply to this message * * @param chatId - Target chat ID * @param options - Additional options * @returns Promise with message ID of the copy */ replyCopyMessage(chatId: number | string, options?: Parameters[0]): Promise; message_id: number; date: number; chat: Message['chat']; from?: Message['from']; sender_chat?: Message['sender_chat']; sender_boost_count?: Message['sender_boost_count']; sender_business_bot?: Message['sender_business_bot']; business_connection_id?: Message['business_connection_id']; forward_origin?: Message['forward_origin']; is_topic_message?: Message['is_topic_message']; is_automatic_forward?: Message['is_automatic_forward']; reply_to_message?: Message['reply_to_message']; external_reply?: Message['external_reply']; quote?: Message['quote']; reply_to_story?: Message['reply_to_story']; via_bot?: Message['via_bot']; edit_date?: Message['edit_date']; has_protected_content?: Message['has_protected_content']; is_from_offline?: Message['is_from_offline']; media_group_id?: Message['media_group_id']; author_signature?: Message['author_signature']; text?: Message['text']; entities?: Message['entities']; link_preview_options?: Message['link_preview_options']; effect_id?: Message['effect_id']; animation?: Message['animation']; audio?: Message['audio']; document?: Message['document']; paid_media?: Message['paid_media']; photo?: Message['photo']; sticker?: Message['sticker']; story?: Message['story']; video?: Message['video']; video_note?: Message['video_note']; voice?: Message['voice']; caption?: Message['caption']; caption_entities?: Message['caption_entities']; show_caption_above_media?: Message['show_caption_above_media']; has_media_spoiler?: Message['has_media_spoiler']; contact?: Message['contact']; dice?: Message['dice']; game?: Message['game']; poll?: Message['poll']; venue?: Message['venue']; location?: Message['location']; new_chat_members?: Message['new_chat_members']; left_chat_member?: Message['left_chat_member']; new_chat_title?: Message['new_chat_title']; new_chat_photo?: Message['new_chat_photo']; delete_chat_photo?: Message['delete_chat_photo']; group_chat_created?: Message['group_chat_created']; supergroup_chat_created?: Message['supergroup_chat_created']; channel_chat_created?: Message['channel_chat_created']; message_auto_delete_timer_changed?: Message['message_auto_delete_timer_changed']; migrate_to_chat_id?: Message['migrate_to_chat_id']; migrate_from_chat_id?: Message['migrate_from_chat_id']; pinned_message?: Message['pinned_message']; invoice?: Message['invoice']; successful_payment?: Message['successful_payment']; refunded_payment?: Message['refunded_payment']; users_shared?: Message['users_shared']; chat_shared?: Message['chat_shared']; connected_website?: Message['connected_website']; write_access_allowed?: Message['write_access_allowed']; passport_data?: Message['passport_data']; proximity_alert_triggered?: Message['proximity_alert_triggered']; boost_added?: Message['boost_added']; chat_background_set?: Message['chat_background_set']; forum_topic_created?: Message['forum_topic_created']; forum_topic_edited?: Message['forum_topic_edited']; forum_topic_closed?: Message['forum_topic_closed']; forum_topic_reopened?: Message['forum_topic_reopened']; general_forum_topic_hidden?: Message['general_forum_topic_hidden']; general_forum_topic_unhidden?: Message['general_forum_topic_unhidden']; giveaway_created?: Message['giveaway_created']; giveaway?: Message['giveaway']; giveaway_winners?: Message['giveaway_winners']; giveaway_completed?: Message['giveaway_completed']; video_chat_scheduled?: Message['video_chat_scheduled']; video_chat_started?: Message['video_chat_started']; video_chat_ended?: Message['video_chat_ended']; video_chat_participants_invited?: Message['video_chat_participants_invited']; web_app_data?: Message['web_app_data']; reply_markup?: Message['reply_markup']; }