UNPKG

bot_genshin

Version:
303 lines (263 loc) 9 kB
<!doctype html> <html> <head> <meta name="generator" content="JSDoc 3.6.7"> <meta charset="utf-8"> <title>whatsapp-web.js 1.14.0 &raquo; Source: structures/Chat.js</title> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link href="css/baseline.css" rel="stylesheet"> </head> <body onload="prettyPrint()"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-content"> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>14.<wbr>0</a> </div> </div> </nav> <div id="jsdoc-body-container"> <div id="jsdoc-content"> <div id="jsdoc-content-container"> <div id="jsdoc-banner" role="banner"> </div> <div id="jsdoc-main" role="main"> <header class="page-header"> <h1>Source: structures/Chat.js</h1> </header> <article> <pre class="prettyprint linenums"><code>&#x27;use strict&#x27;; const Base &#x3D; require(&#x27;./Base&#x27;); const Message &#x3D; require(&#x27;./Message&#x27;); /** * Represents a Chat on WhatsApp * @extends {Base} */ class Chat extends Base { constructor(client, data) { super(client); if (data) this._patch(data); } _patch(data) { /** * ID that represents the chat * @type {object} */ this.id &#x3D; data.id; /** * Title of the chat * @type {string} */ this.name &#x3D; data.formattedTitle; /** * Indicates if the Chat is a Group Chat * @type {boolean} */ this.isGroup &#x3D; data.isGroup; /** * Indicates if the Chat is readonly * @type {boolean} */ this.isReadOnly &#x3D; data.isReadOnly; /** * Amount of messages unread * @type {number} */ this.unreadCount &#x3D; data.unreadCount; /** * Unix timestamp for when the last activity occurred * @type {number} */ this.timestamp &#x3D; data.t; /** * Indicates if the Chat is archived * @type {boolean} */ this.archived &#x3D; data.archive; /** * Indicates if the Chat is pinned * @type {boolean} */ this.pinned &#x3D; !!data.pin; /** * Indicates if the chat is muted or not * @type {number} */ this.isMuted &#x3D; data.isMuted; /** * Unix timestamp for when the mute expires * @type {number} */ this.muteExpiration &#x3D; data.muteExpiration; return super._patch(data); } /** * Send a message to this chat * @param {string|MessageMedia|Location} content * @param {MessageSendOptions} [options] * @returns {Promise&amp;lt;Message&gt;} Message that was just sent */ async sendMessage(content, options) { return this.client.sendMessage(this.id._serialized, content, options); } /** * Set the message as seen * @returns {Promise&amp;lt;Boolean&gt;} result */ async sendSeen() { return this.client.sendSeen(this.id._serialized); } /** * Clears all messages from the chat * @returns {Promise&amp;lt;Boolean&gt;} result */ async clearMessages() { return this.client.pupPage.evaluate(chatId &#x3D;&gt; { return window.WWebJS.sendClearChat(chatId); }, this.id._serialized); } /** * Deletes the chat * @returns {Promise&amp;lt;Boolean&gt;} result */ async delete() { return this.client.pupPage.evaluate(chatId &#x3D;&gt; { return window.WWebJS.sendDeleteChat(chatId); }, this.id._serialized); } /** * Archives this chat */ async archive() { return this.client.archiveChat(this.id._serialized); } /** * un-archives this chat */ async unarchive() { return this.client.unarchiveChat(this.id._serialized); } /** * Pins this chat * @returns {Promise&amp;lt;boolean&gt;} New pin state. Could be false if the max number of pinned chats was reached. */ async pin() { return this.client.pinChat(this.id._serialized); } /** * Unpins this chat * @returns {Promise&amp;lt;boolean&gt;} New pin state */ async unpin() { return this.client.unpinChat(this.id._serialized); } /** * Mutes this chat until a specified date * @param {Date} unmuteDate Date at which the Chat will be unmuted */ async mute(unmuteDate) { return this.client.muteChat(this.id._serialized, unmuteDate); } /** * Unmutes this chat */ async unmute() { return this.client.unmuteChat(this.id._serialized); } /** * Mark this chat as unread */ async markUnread(){ return this.client.markChatUnread(this.id._serialized); } /** * Loads chat messages, sorted from earliest to latest. * @param {Object} searchOptions Options for searching messages. Right now only limit is supported. * @param {Number} [searchOptions.limit&#x3D;50] The amount of messages to return. Note that the actual number of returned messages may be smaller if there aren&#x27;t enough messages in the conversation. Set this to Infinity to load all messages. * @returns {Promise&amp;lt;Array&amp;lt;Message&gt;&gt;} */ async fetchMessages(searchOptions) { if (!searchOptions || !searchOptions.limit) { searchOptions &#x3D; { limit: 50 }; } let messages &#x3D; await this.client.pupPage.evaluate(async (chatId, limit) &#x3D;&gt; { const msgFilter &#x3D; m &#x3D;&gt; !m.isNotification; // dont include notification messages const chat &#x3D; window.Store.Chat.get(chatId); let msgs &#x3D; chat.msgs.models.filter(msgFilter); while (msgs.length &amp;lt; limit) { const loadedMessages &#x3D; await chat.loadEarlierMsgs(); if (!loadedMessages) break; msgs &#x3D; [...loadedMessages.filter(msgFilter), ...msgs]; } msgs.sort((a, b) &#x3D;&gt; (a.t &gt; b.t) ? 1 : -1); if (msgs.length &gt; limit) msgs &#x3D; msgs.splice(msgs.length - limit); return msgs.map(m &#x3D;&gt; window.WWebJS.getMessageModel(m)); }, this.id._serialized, searchOptions.limit); return messages.map(m &#x3D;&gt; new Message(this.client, m)); } /** * Simulate typing in chat. This will last for 25 seconds. */ async sendStateTyping() { return this.client.pupPage.evaluate(chatId &#x3D;&gt; { window.WWebJS.sendChatstate(&#x27;typing&#x27;, chatId); return true; }, this.id._serialized); } /** * Simulate recording audio in chat. This will last for 25 seconds. */ async sendStateRecording() { return this.client.pupPage.evaluate(chatId &#x3D;&gt; { window.WWebJS.sendChatstate(&#x27;recording&#x27;, chatId); return true; }, this.id._serialized); } /** * Stops typing or recording in chat immediately. */ async clearState() { return this.client.pupPage.evaluate(chatId &#x3D;&gt; { window.WWebJS.sendChatstate(&#x27;stop&#x27;, chatId); return true; }, this.id._serialized); } /** * Returns the Contact that corresponds to this Chat. * @returns {Promise&amp;lt;Contact&gt;} */ async getContact() { return await this.client.getContactById(this.id._serialized); } /** * Returns array of all Labels assigned to this Chat * @returns {Promise&amp;lt;Array&amp;lt;Label&gt;&gt;} */ async getLabels() { return this.client.getChatLabels(this.id._serialized); } } module.exports &#x3D; Chat; </code></pre> </article> </div> </div> <nav id="jsdoc-toc-nav" role="navigation"></nav> </div> </div> <footer id="jsdoc-footer" class="jsdoc-footer"> <div id="jsdoc-footer-container"> <p> Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.7 on August 1, 2021. </p> </div> </footer> <script src="scripts/jquery.min.js"></script> <script src="scripts/tree.jquery.js"></script> <script src="scripts/prettify.js"></script> <script src="scripts/jsdoc-toc.js"></script> <script src="scripts/linenumber.js"></script> <script src="scripts/scrollanchor.js"></script> </body> </html>