diff --git a/example.js b/example.js index 2aaff41..a084b34 100644 --- a/example.js +++ b/example.js @@ -152,6 +152,13 @@ client.on('message', async msg => { chat.sendMessage(`Hi @${contact.number}!`, { mentions: [contact] }); + } else if (msg.body == '!delete' && msg.hasQuotedMsg) { + const quotedMsg = await msg.getQuotedMessage(); + if(quotedMsg.fromMe) { + quotedMsg.delete(true); + } else { + msg.reply('I can only delete my own messages'); + } } }); diff --git a/src/structures/Message.js b/src/structures/Message.js index 573b5ab..ef543be 100644 --- a/src/structures/Message.js +++ b/src/structures/Message.js @@ -202,6 +202,22 @@ class Message extends Base { return new MessageMedia(mimetype, data, filename); } + + /** + * Deletes a message from the chat + * @param {?boolean} everyone If true and the message is sent by the current user, will delete it for everyone in the chat. + */ + async delete(everyone) { + await this.client.pupPage.evaluate((msgId, everyone) => { + let msg = window.Store.Msg.get(msgId); + + if(everyone && msg.id.fromMe && msg.canRevoke()) { + return window.Store.Cmd.sendRevokeMsgs(msg.chat, [msg], true); + } + + return window.Store.Cmd.sendDeleteMsgs(msg.chat, [msg], true); + }, this.id._serialized, everyone); + } } module.exports = Message; diff --git a/src/util/Injected.js b/src/util/Injected.js index 706526d..32849ad 100644 --- a/src/util/Injected.js +++ b/src/util/Injected.js @@ -18,6 +18,7 @@ exports.ExposeStore = (moduleRaidStr) => { window.Store.MediaPrep = window.mR.findModule('MediaPrep')[0]; window.Store.MediaObject = window.mR.findModule('getOrCreateMediaObject')[0]; window.Store.MediaUpload = window.mR.findModule('uploadMedia')[0]; + window.Store.Cmd = window.mR.findModule('Cmd')[0].default; window.Store.MediaTypes = window.mR.findModule('msgToMediaType')[0]; };