Merge pull request #1195 from GrimBit1/main

Refactor edit and delete message functionality in BaileyStartupService
This commit is contained in:
Davidson Gomes 2025-02-04 06:22:49 -03:00 committed by GitHub
commit 023e030802
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3596,6 +3596,18 @@ export class BaileysStartupService extends ChannelStartupService {
status: 'DELETED',
},
});
const messageUpdate: any = {
messageId: message.id,
keyId: messageId,
remoteJid: response.key.remoteJid,
fromMe: response.key.fromMe,
participant: response.key?.remoteJid,
status: 'DELETED',
instanceId: this.instanceId,
};
await this.prismaRepository.messageUpdate.create({
data: messageUpdate,
});
} else {
await this.prismaRepository.message.deleteMany({
where: {
@ -3922,13 +3934,72 @@ export class BaileysStartupService extends ChannelStartupService {
}
try {
return await this.client.sendMessage(jid, {
const response = await this.client.sendMessage(jid, {
...(options as any),
edit: data.key,
});
if (response) {
const messageId = response.message?.protocolMessage?.key?.id;
if (messageId) {
let message = await this.prismaRepository.message.findFirst({
where: {
key: {
path: ['id'],
equals: messageId,
},
},
});
if (!message) throw new NotFoundException('Message not found');
if (!(message.key.valueOf() as any).fromMe) {
new BadRequestException('You cannot edit others messages');
}
if ((message.key.valueOf() as any)?.deleted) {
new BadRequestException('You cannot edit deleted messages');
}
const updateMessage = this.prepareMessage({ ...response });
message = await this.prismaRepository.message.update({
where: { id: message.id },
data: {
message: {
...updateMessage?.message?.[updateMessage.messageType]?.editedMessage,
},
status: 'EDITED',
},
});
const messageUpdate: any = {
messageId: message.id,
keyId: messageId,
remoteJid: response.key.remoteJid,
fromMe: response.key.fromMe,
participant: response.key?.remoteJid,
status: 'EDITED',
instanceId: this.instanceId,
};
await this.prismaRepository.messageUpdate.create({
data: messageUpdate,
});
this.sendDataWebhook(Events.MESSAGES_EDITED, {
id: message.id,
instanceId: message.instanceId,
key: message.key,
messageType: message.messageType,
status: 'EDITED',
source: message.source,
messageTimestamp: message.messageTimestamp,
pushName: message.pushName,
participant: message.participant,
message: message.message,
});
}
}
return response;
} catch (error) {
this.logger.error(error);
throw new BadRequestException(error.toString());
throw error;
}
}