mirror of
https://github.com/FranP-code/Baileys.git
synced 2025-10-13 00:32:22 +00:00
Nicer message deletion + catch profile picture update errors
This commit is contained in:
@@ -51,6 +51,11 @@ WAConnectionTest('Groups', (conn) => {
|
||||
it('should send a message on the group', async () => {
|
||||
await sendAndRetreiveMessage(conn, 'Hello!', MessageType.text, {}, gid)
|
||||
})
|
||||
it('should delete a message on the group', async () => {
|
||||
const message = await sendAndRetreiveMessage(conn, 'Hello!', MessageType.text, {}, gid)
|
||||
await delay(1500)
|
||||
await conn.deleteMessage(message.key)
|
||||
})
|
||||
it('should quote a message on the group', async () => {
|
||||
const {messages} = await conn.loadMessages (gid, 100)
|
||||
const quotableMessage = messages.find (m => m.message)
|
||||
|
||||
@@ -291,7 +291,7 @@ export class WAConnection extends Base {
|
||||
// profile picture updates
|
||||
this.on('CB:Cmd,type:picture', async json => {
|
||||
const jid = whatsappID(json[1].jid)
|
||||
const imgUrl = await this.getProfilePicture(jid)
|
||||
const imgUrl = await this.getProfilePicture(jid).catch(() => '')
|
||||
const contact = this.contacts[jid]
|
||||
if (contact) contact.imgUrl = imgUrl
|
||||
|
||||
|
||||
@@ -290,14 +290,17 @@ export class WAConnection extends Base {
|
||||
* @param id the person or group where you're trying to delete the message
|
||||
* @param messageKey key of the message you want to delete
|
||||
*/
|
||||
async deleteMessage (id: string, messageKey: WAMessageKey) {
|
||||
async deleteMessage (k: string | WAMessageKey, messageKey?: WAMessageKey) {
|
||||
if (typeof k === 'object') {
|
||||
messageKey = k
|
||||
}
|
||||
const json: WAMessageContent = {
|
||||
protocolMessage: {
|
||||
key: messageKey,
|
||||
type: WAMessageProto.ProtocolMessage.ProtocolMessageType.REVOKE
|
||||
}
|
||||
}
|
||||
const waMessage = this.prepareMessageFromContent (id, json, {})
|
||||
const waMessage = this.prepareMessageFromContent (messageKey.remoteJid, json, {})
|
||||
await this.relayWAMessage (waMessage)
|
||||
return waMessage
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import { Agent } from 'https'
|
||||
import Decoder from '../Binary/Decoder'
|
||||
import { MessageType, HKDFInfoKeys, MessageOptions, WAChat, WAMessageContent, BaileysError, WAMessageProto, TimedOutError, CancelledError, WAGenericMediaMessage, WAMessage, WAMessageKey } from './Constants'
|
||||
import KeyedDB from '@adiwajshing/keyed-db'
|
||||
import { Response } from 'node-fetch'
|
||||
|
||||
const platformMap = {
|
||||
'aix': 'AIX',
|
||||
@@ -274,7 +275,7 @@ export async function generateThumbnail(buffer: Buffer, mediaType: MessageType,
|
||||
* Decode a media message (video, image, document, audio) & return decrypted buffer
|
||||
* @param message the media message you want to decode
|
||||
*/
|
||||
export async function decodeMediaMessageBuffer(message: WAMessageContent, fetchRequest: (host: string, method: string) => any) {
|
||||
export async function decodeMediaMessageBuffer(message: WAMessageContent, fetchRequest: (host: string, method: string) => Promise<Response>) {
|
||||
/*
|
||||
One can infer media type from the key in the message
|
||||
it is usually written as [mediaType]Message. Eg. imageMessage, audioMessage etc.
|
||||
@@ -287,7 +288,7 @@ export async function decodeMediaMessageBuffer(message: WAMessageContent, fetchR
|
||||
throw new BaileysError('cannot decode text message', message)
|
||||
}
|
||||
if (type === MessageType.location || type === MessageType.liveLocation) {
|
||||
return new Buffer(message[type].jpegThumbnail)
|
||||
return Buffer.from(message[type].jpegThumbnail)
|
||||
}
|
||||
let messageContent: WAGenericMediaMessage
|
||||
if (message.productMessage) {
|
||||
@@ -300,11 +301,10 @@ export async function decodeMediaMessageBuffer(message: WAMessageContent, fetchR
|
||||
|
||||
// download the message
|
||||
const fetched = await fetchRequest(messageContent.url, 'GET')
|
||||
const buffer = await fetched.buffer()
|
||||
|
||||
if (buffer.length <= 10) {
|
||||
throw new BaileysError ('Empty buffer returned. File has possibly been deleted from WA servers. Run `client.updateMediaMessage()` to refresh the url', {status: 404})
|
||||
if (fetched.status >= 400) {
|
||||
throw new BaileysError ('Invalid code (' + fetched.status + ') returned. File has possibly been deleted from WA servers. Run `client.updateMediaMessage()` to refresh the url', {status: fetched.status})
|
||||
}
|
||||
const buffer = await fetched.buffer()
|
||||
|
||||
const decryptedMedia = (type: MessageType) => {
|
||||
// get the keys to decrypt the message
|
||||
|
||||
Reference in New Issue
Block a user