Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added ability to edit message with message builder #810

Merged
merged 1 commit into from Aug 4, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -0,0 +1,42 @@
package org.javacord.api.entity.message;

import java.util.concurrent.CompletableFuture;

public class MessageUpdater extends MessageBuilderBase<MessageUpdater> {
/**
* The message to update.
*/
private final Message message;

/**
* Class constructor.
*
* @param m The message to update.
*/
public MessageUpdater(Message m) {
super(MessageUpdater.class);
delegate.copy(m);
this.message = m;
}

/**
* Edits the message, updating all fields that have been changed by a method call.
* For example, the content of the message will only be patched if you called a method on this updater
* that affects the content.
*
* @return The edited message.
*/
public CompletableFuture<Message> applyChanges() {
return delegate.edit(message, true);
}

/**
* Edits the message, updating all fields.
* Fields that have not been set will be dropped and removed from the actual message on Discord.
*
* @return The edited message.
*/
public CompletableFuture<Message> replaceMessage() {
felldo marked this conversation as resolved.
Show resolved Hide resolved
return delegate.edit(message, false);
}
}
Expand Up @@ -7,7 +7,7 @@
import java.util.EnumSet;
import java.util.concurrent.CompletableFuture;

public interface InteractionMessageBuilderDelegate extends MessageBuilderDelegate {
public interface InteractionMessageBuilderDelegate extends MessageBuilderBaseDelegate {

/**
* Sets the message flags of the message.
Expand Down
Expand Up @@ -25,7 +25,7 @@
* This class is internally used by the {@link MessageBuilder} to create messages.
* You usually don't want to interact with this object.
*/
public interface MessageBuilderDelegate {
public interface MessageBuilderBaseDelegate {

/**
* Add high-level components to the message.
Expand Down Expand Up @@ -350,6 +350,15 @@ public interface MessageBuilderDelegate {
*/
CompletableFuture<Message> send(Messageable messageable);

/**
* Edits the message.
*
* @param message The message to edit.
* @param onlyChangedFields True if only changed fields should be updated
* @return The edited message.
*/
CompletableFuture<Message> edit(Message message, boolean onlyChangedFields);

/**
* Sends the message.
*
Expand Down
Expand Up @@ -15,7 +15,7 @@
* This class is internally used by the {@link WebhookMessageBuilder} to create messages.
* You usually don't want to interact with this object.
*/
public interface WebhookMessageBuilderDelegate extends MessageBuilderDelegate {
public interface WebhookMessageBuilderDelegate extends MessageBuilderBaseDelegate {

/**
* Sets the display name of the webhook.
Expand Down
Expand Up @@ -22,7 +22,7 @@
import org.javacord.api.entity.message.component.internal.SelectMenuOptionBuilderDelegate;
import org.javacord.api.entity.message.embed.internal.EmbedBuilderDelegate;
import org.javacord.api.entity.message.internal.InteractionMessageBuilderDelegate;
import org.javacord.api.entity.message.internal.MessageBuilderDelegate;
import org.javacord.api.entity.message.internal.MessageBuilderBaseDelegate;
import org.javacord.api.entity.message.internal.WebhookMessageBuilderDelegate;
import org.javacord.api.entity.message.mention.internal.AllowedMentionsBuilderDelegate;
import org.javacord.api.entity.permission.Permissions;
Expand Down Expand Up @@ -157,11 +157,11 @@ public static AllowedMentionsBuilderDelegate createAllowedMentionsBuilderDelegat
}

/**
* Creates a new message builder delegate.
* Creates a new message builder base delegate.
*
* @return A new message builder delegate.
* @return A new message builder base delegate.
*/
public static MessageBuilderDelegate createMessageBuilderDelegate() {
public static MessageBuilderBaseDelegate createMessageBuilderBaseDelegate() {
return delegateFactoryDelegate.createMessageBuilderDelegate();
}

Expand Down
Expand Up @@ -22,7 +22,7 @@
import org.javacord.api.entity.message.component.internal.SelectMenuOptionBuilderDelegate;
import org.javacord.api.entity.message.embed.internal.EmbedBuilderDelegate;
import org.javacord.api.entity.message.internal.InteractionMessageBuilderDelegate;
import org.javacord.api.entity.message.internal.MessageBuilderDelegate;
import org.javacord.api.entity.message.internal.MessageBuilderBaseDelegate;
import org.javacord.api.entity.message.internal.WebhookMessageBuilderDelegate;
import org.javacord.api.entity.message.mention.internal.AllowedMentionsBuilderDelegate;
import org.javacord.api.entity.permission.Permissions;
Expand Down Expand Up @@ -80,7 +80,7 @@ public interface DelegateFactoryDelegate {
*
* @return A new message builder delegate.
*/
MessageBuilderDelegate createMessageBuilderDelegate();
MessageBuilderBaseDelegate createMessageBuilderDelegate();

/**
* Creates a new interaction message builder delegate.
Expand Down
Expand Up @@ -20,7 +20,7 @@
import java.util.NoSuchElementException;
import java.util.concurrent.CompletableFuture;

public class InteractionMessageBuilderDelegateImpl extends MessageBuilderDelegateImpl
public class InteractionMessageBuilderDelegateImpl extends MessageBuilderBaseDelegateImpl
implements InteractionMessageBuilderDelegate {

/**
Expand Down