UNPKG

@open-wa/wa-automate-types-only

Version:

Types generated from the @open-wa/wa-automate package

423 lines (422 loc) 11.2 kB
import { ChatId, ContactId, MessageId, GroupChatId } from "./aliases"; import { Button, Row, Section } from "./button"; import { Chat } from "./chat"; import { Contact } from "./contact"; export type MessagePinDuration = "FifteenSeconds" | "FiveSeconds" | "OneDay" | "OneMinute" | "SevenDays" | "ThirtyDays"; export interface Message { /** * The ID of the selected button */ selectedButtonId: string; /** * The id of the message. Consists of the Chat ID and a unique string. * * Example: * * ``` * false_447123456789@c.us_7D914FEA78BE10277743F4B785045C37 * ``` */ id: MessageId; /** * The unique segment of the message id. * * Example: * * ``` * 7D914FEA78BE10277743F4B785045C37 * ``` */ mId: string; /** * The body of the message. If the message type is `chat` , `body` will be the text of the chat. If the message type is some sort of media, then this body will be the thumbnail of the media. */ body: string; /** * The device ID of the device that sent the message. This is only present if the message was sent from host account-linked session. This is useful for determining if a message was sent from a different mobile device (note that whenever a device) or a desktop session. * * Note: This will emit a number for the current controlled session also but the only way to know if the number represents the current session is by checking `local` (it will be `true` if the message was sent from the current session). * * If the device ID is `0` then the message was sent from the "root" host account device. * * This might be undefined for incoming messages. */ device: number; /** * If the message was sent from this controlled session this will be `true`. This is useful for determining if a message was sent from a different mobile device (note that whenever a device) or a desktop session. */ local: boolean; /** * a convenient way to get the main text content from a message. */ text: string; /** * The type of the message, see [[MessageTypes]] */ type: MessageTypes; /** * Used to checking the integrity of the decrypted media. */ filehash?: string; mimetype?: string; /** * The latitude of a location message */ lat?: string; /** * The longitude of a location message */ lng?: string; /** * The text associated with a location message */ loc?: string; /** * The timestamp of the message */ t: number; notifyName: string; /** * The chat from which the message was sent */ from: ChatId; /** * The chat id to which the message is being sent */ to: ChatId; /** * Indicates whether the message is coming into the session or going out of the session. You can have a message sent by the host account show as `in` when the message was sent from another * session or from the host account device itself. */ self: "in" | "out"; /** * The length of the media in the message, if it exists. */ duration?: string | number; /** * The acknolwedgement state of a message [[MessageAck]] */ ack: MessageAck; invis: boolean; isNewMsg: boolean; star: boolean; recvFresh: boolean; /** * If the message is sent as a broadcast */ broadcast: boolean; /** * If the message has been forwarded */ isForwarded: boolean; /** * The labels associated with the message (used with business accounts) */ labels: string[]; /** * An array of all mentioned numbers in this message. */ mentionedJidList: ContactId[]; /** * If the message is of a media type, it may also have a caption */ caption: string; /** * The contact object of the account that sent the message */ sender: Contact; /** * the timestanmp of the message */ timestamp: number; /** * When `config.messagePreprocessor: "AUTO_DECRYPT_SAVE"` is set, media is decrypted and saved on disk in a folder called media relative to the current working directory. * * This is the filePath of the decrypted file. */ filePath?: string; /** * The given filename of the file */ filename?: string; content: string; isGroupMsg: boolean; isMMS: boolean; isMedia: boolean; isNotification: boolean; isPSA: boolean; /** * If the message is from the host account */ fromMe: boolean; /** * The chat object */ chat: Chat; chatId: ChatId; author: string; stickerAuthor?: string; stickerPack?: string; /** * @deprecated * * Ironically, you should be using `deprecatedMms3Url` instead */ clientUrl: string; deprecatedMms3Url: string; /** * If this message is quoting (replying to) another message */ isQuotedMsgAvailable: boolean; quotedMsg?: Message; quotedMsgObj?: Message; /** * When a user requests to join a group wihtin a community the request is received by the host as a message. This boolean will allow you to easily determine if the incoming message is a request to join a group. * * If this is `true` then you need to determine within your own code whether or not to accept the user to the group which is indicated with `quotedRemoteJid` using `addParticipant`. */ isGroupJoinRequest?: GroupChatId; /** * The ID of the message sender */ senderId?: string; /** * The ID of the quoted group. Usually present when a user is requesting to join a group. */ quotedRemoteJid?: string; /** * The parent group ID (community ID - communities are just groups made up of other groups) of the group represented by `quotedRemoteJid` */ quotedParentGroupJid?: GroupChatId; mediaData: unknown; shareDuration: number; isAnimated: boolean; ctwaContext?: { sourceUrl: string; thumbnail: string | null; mediaType: number; isSuspiciousLink: boolean | null; }; /** * Is the message a "view once" message */ isViewOnce: boolean; /** * Use this to traverse the quote chain. */ quoteMap: QuoteMap; /** * The URL of the file after being uploaded to the cloud using a cloud upload message preprocessor. */ cloudUrl?: string; /** * Buttons associated with the message */ buttons?: Button[]; /** * List response associated with the message */ listResponse?: Row; /** * The list associated with the list message */ list?: { "sections": Section[]; "title": string; "description": string; "buttonText": string; }; /** * The options of a poll */ pollOptions?: PollOption[]; /** * The reaction of the host account to this message */ reactionByMe?: ReactionSender; reactions: { aggregateEmoji: string; /** * The senders of this reaction */ senders: ReactionSender[]; /** * If the host account has reacted to this message with this reaction */ hasReactionByMe: boolean; /** * The message ID of the reaction itself */ id: string; }[]; } export interface ReactionSender { /** * The ID of the message being reacted to */ parentMsgKey: MessageId; /** * The contact ID of the sender of the reaction */ senderUserJid: ContactId; /** * The message ID of the reaction itself */ msgKey: MessageId; /** * The text of the reaction */ reactionText: string; /** * The timestamp of the reaction */ timestamp: number; orphan: number; /** * If the reaction was seen/read */ read: boolean; /** * The timestamp of the reaction */ t?: number; /** * The message ID of the reaction itself */ id: MessageId; isSendFailure: boolean; ack?: number; } export interface PollOption { name: string; localId: number; } export interface PollData { /** * The total amount of votes recorded so far */ totalVotes: number; /** * The poll options and their respective count of votes. */ pollOptions: (PollOption & { count: number; })[]; /** * An arrray of vote objects */ votes: PollVote[]; /** * The message object of the poll */ pollMessage: Message; } export interface PollVote { ack: number; /** * The message ID of this vote. For some reason this is different from the msgKey and includes exclamaition marks. */ id: string; /** * The message key of this vote */ msgKey: string; /** * The Message ID of the original Poll message */ parentMsgKey: string; /** * The original poll options available on the poll */ pollOptions: PollOption[]; /** * The selected option IDs of the voter */ selectedOptionLocalIds: number[]; /** * The selected option values by this voter */ selectedOptionValues: string[]; /** * The contact ID of the voter */ sender: ContactId; /** * The contact object of the voter */ senderObj: Contact; /** * Timestamp of the vote */ senderTimestampMs: number; stale: boolean; } export interface QuoteMap { [messageId: string]: { /** * The body of the message */ body: string; /** * The message ID of the message that was quoted. Null if no message was quoted. */ quotes?: MessageId; }; } export interface MessageInfoInteraction { /** * The contact ID of the contact that interacted with the message. */ id: ContactId; /** * The timestamp of the interaction. You have to x 1000 to use in a JS Date object. */ t: number; } export interface MessageInfo { deliveryRemaining: number; playedRemaining: number; readRemaining: number; delivery: MessageInfoInteraction[]; read: MessageInfoInteraction[]; played: MessageInfoInteraction[]; /** * The ID of the message */ id: MessageId; } /** * Message types * @readonly * @enum {string} */ export declare enum MessageTypes { TEXT = "chat", AUDIO = "audio", VOICE = "ptt", IMAGE = "image", VIDEO = "video", DOCUMENT = "document", STICKER = "sticker", LOCATION = "location", CONTACT_CARD = "vcard", CONTACT_CARD_MULTI = "multi_vcard", REVOKED = "revoked", ORDER = "order", BUTTONS_RESPONSE = "buttons_response", LIST_RESPONSE = "list_response", UNKNOWN = "unknown" } /** * Message ACK * @readonly * @enum {number} */ export declare enum MessageAck { ACK_ERROR = -1, ACK_PENDING = 0, ACK_SERVER = 1, ACK_DEVICE = 2, ACK_READ = 3, ACK_PLAYED = 4 }