Auties00 / Cobalt

Standalone unofficial fully-featured Whatsapp Web and Mobile API for Java and Kotlin
MIT License
611 stars 179 forks source link

Message is not editing #472

Closed Darker935 closed 2 months ago

Darker935 commented 3 months ago

I don't know if it's my fault or not, but I'm trying 2 ways to edited the messages and nothing is happening

The first is:

var msg = whatsapp.sendMessage(message.info.parentJid(), "Just a test!").get();
out.println("Old: " + msg.toJson());

var msgEdited = new TextMessageBuilder().text("Editing message").build();

var edited = whatsapp.editMessage(msg, msgEdited).get();
out.println("Edited: " + edited.toJson());

And when this code, when the message have the same ID, nothing happens, but when ID is different, I receive as another message on web and unsupported on android


var msg = whatsapp.sendMessage(message.info.parentJid(), "Just a test!").get();
out.println("Old: " + msg.toJson());

var msgEdited = new TextMessageBuilder().text("Editing message").build();

var key = new ChatMessageKeyBuilder()
        .id(msg.id())
        .chatJid(msg.parentJid())
        .fromMe(true)
        .senderJid(msg.senderJid())
        .build();
var info = new ChatMessageInfoBuilder()
        .status(MessageStatus.PENDING)
        .senderJid(msg.senderJid())
        .key(key)
        .message(MessageContainer.ofEditedMessage(msgEdited))
        .timestampSeconds(Clock.nowSeconds())
        .broadcast(msg.parentJid().hasServer(JidServer.BROADCAST))
        .build();
var edited = whatsapp.sendMessage(info).get();
out.println("Edited: " + edited.toJson());```
Darker935 commented 3 months ago

Ok, I solved the problem.

In some past update, the necessary parameter for editing messages became protocolMessage instead editedMessage, so, the change needed on Whatsapp.java is something like that

var key = new ChatMessageKeyBuilder()
        .id(msg.id())
        .chatJid(msg.parentJid())
        .fromMe(true)
        .senderJid(msg.senderJid())
        .build();

var protocol = new ProtocolMessageBuilder()
        .protocolType(ProtocolMessage.Type.MESSAGE_EDIT)
        .key(key)
        .editedMessage(new MessageContainerBuilder().textMessage(newMessage).build())
        .build();

var info = new ChatMessageInfoBuilder()
        .status(MessageStatus.PENDING)
        .senderJid(msg.senderJid())
        .key(key)
        .message(MessageContainer.of(protocol))
        .timestampSeconds(Clock.nowSeconds())
        .broadcast(msg.parentJid().hasServer(JidServer.BROADCAST))
        .build();

whatsapp.sendMessage(info);
Darker935 commented 3 months ago

Solved on #473

Auties00 commented 2 months ago

I'll review the pr now