diff --git a/example.js b/example.js index ceacdd6..0646253 100644 --- a/example.js +++ b/example.js @@ -146,7 +146,6 @@ client.on('message', async msg => { const attachmentData = await quotedMsg.downloadMedia(); client.sendMessage(msg.from, attachmentData, { caption: 'Here\'s your requested media.' }); } - } else if (msg.body == '!location') { msg.reply(new Location(37.422, -122.084, 'Googleplex\nGoogle Headquarters')); } else if (msg.location) { @@ -168,6 +167,9 @@ client.on('message', async msg => { } else { msg.reply('I can only delete my own messages'); } + } else if (msg.body === '!archive') { + const chat = await msg.getChat(); + chat.archive(); } }); diff --git a/src/Client.js b/src/Client.js index f1f3a46..1173aaa 100644 --- a/src/Client.js +++ b/src/Client.js @@ -309,7 +309,6 @@ class Client extends EventEmitter { return new Message(this, newMessage); } - /** * Get all current chat instances * @returns {Promise>} @@ -392,6 +391,30 @@ class Client extends EventEmitter { }); } + /** + * Enables and returns the archive state of the Chat + * @returns {boolean} + */ + async archiveChat(chatId) { + return await this.pupPage.evaluate(async chatId => { + let chat = await window.Store.Chat.get(chatId); + await window.Store.Cmd.archiveChat(chat, true); + return chat.archive; + }, chatId); + } + + /** + * Changes and returns the archive state of the Chat + * @returns {boolean} + */ + async unarchiveChat(chatId) { + return await this.pupPage.evaluate(async chatId => { + let chat = await window.Store.Chat.get(chatId); + await window.Store.Cmd.archiveChat(chat, false); + return chat.archive; + }, chatId); + } + } module.exports = Client; diff --git a/src/structures/Chat.js b/src/structures/Chat.js index dd12d10..f024447 100644 --- a/src/structures/Chat.js +++ b/src/structures/Chat.js @@ -50,6 +50,12 @@ class Chat extends Base { */ this.timestamp = data.t; + /** + * Indicates if the Chat is archived + * @type {boolean} + */ + this.archived = data.archive; + return super._patch(data); } @@ -62,6 +68,21 @@ class Chat extends Base { async sendMessage(content, options) { return this.client.sendMessage(this.id._serialized, content, options); } + + /** + * 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); + } + } module.exports = Chat; \ No newline at end of file