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

Support for JDA 5.0.0-alpha.18 (Message Refactor) #76

Merged
merged 3 commits into from
Aug 22, 2022
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ allprojects {
version = versionInfo.values().join('.')

ext {
jdaVersion = '5.0.0-alpha.15'
jdaVersion = '5.0.0-alpha.18'
slf4jVersion = '1.7.36'
okhttpVersion = '4.9.3'
findbugsVersion = '3.0.2'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.exceptions.PermissionException;
import net.dv8tion.jda.api.utils.FileUpload;
import net.dv8tion.jda.api.utils.messages.MessageCreateData;
import net.dv8tion.jda.internal.utils.Checks;

/**
Expand Down Expand Up @@ -127,7 +129,7 @@ public CommandClient getClient()
* contained by this CommandEvent.
*
* <p>This method is exposed for those who wish to use linked deletion but may require usage of
* {@link net.dv8tion.jda.api.entities.MessageChannel#sendMessage(Message) MessageChannel#sendMessage()}
* {@link net.dv8tion.jda.api.entities.MessageChannel#sendMessage(MessageCreateData) MessageChannel#sendMessage()}
* or for other reasons cannot use the standard {@code reply()} methods.
*
* <p>If the Message provided is <b>not</b> from the bot (IE: {@link net.dv8tion.jda.api.entities.SelfUser SelfUser}),
Expand Down Expand Up @@ -287,7 +289,7 @@ public void reply(MessageEmbed embed, Consumer<Message> success, Consumer<Throwa
* @param message
* The Message to reply with
*/
public void reply(Message message)
public void reply(MessageCreateData message)
{
event.getChannel().sendMessage(message).queue(m -> {
if(event.isFromType(ChannelType.TEXT))
Expand All @@ -309,7 +311,7 @@ public void reply(Message message)
* @param success
* The Consumer to success after sending the Message is sent.
*/
public void reply(Message message, Consumer<Message> success)
public void reply(MessageCreateData message, Consumer<Message> success)
{
event.getChannel().sendMessage(message).queue(m -> {
if(event.isFromType(ChannelType.TEXT))
Expand All @@ -334,7 +336,7 @@ public void reply(Message message, Consumer<Message> success)
* @param failure
* The Consumer to run if an error occurs when sending the Message.
*/
public void reply(Message message, Consumer<Message> success, Consumer<Throwable> failure)
public void reply(MessageCreateData message, Consumer<Message> success, Consumer<Throwable> failure)
{
event.getChannel().sendMessage(message).queue(m -> {
if(event.isFromType(ChannelType.TEXT))
Expand All @@ -351,7 +353,7 @@ public void reply(Message message, Consumer<Message> success, Consumer<Throwable
* sending the response as a {@link net.dv8tion.jda.api.entities.Message Message}
* automatically does {@link net.dv8tion.jda.api.requests.RestAction#queue() RestAction#queue()}.
*
* <p>This method uses {@link net.dv8tion.jda.api.entities.MessageChannel#sendFile(File, String, net.dv8tion.jda.api.utils.AttachmentOption...) MessageChannel#sendFile(File, String, AttachmentOption...)}
* <p>This method uses {@link net.dv8tion.jda.api.entities.MessageChannel#sendFiles(FileUpload...) MessageChannel#sendFile(FileUpload...)}
* to send the File. For more information on what a bot may send using this, you may find the info in that method.
*
* @param file
Expand All @@ -361,7 +363,7 @@ public void reply(Message message, Consumer<Message> success, Consumer<Throwable
*/
public void reply(File file, String filename)
{
event.getChannel().sendFile(file, filename).queue();
event.getChannel().sendFiles(FileUpload.fromData(file, filename)).queue();
}

/**
Expand All @@ -372,7 +374,7 @@ public void reply(File file, String filename)
* sending the response as a {@link net.dv8tion.jda.api.entities.Message Message}
* automatically does {@link net.dv8tion.jda.api.requests.RestAction#queue() RestAction#queue()}.
*
* <p>This method uses {@link net.dv8tion.jda.api.entities.MessageChannel#sendFile(File, String, net.dv8tion.jda.api.utils.AttachmentOption...) MessageChannel#sendFile(File, String, AttachmentOption...)}
* <p>This method uses {@link net.dv8tion.jda.api.entities.MessageChannel#sendFiles(FileUpload...) MessageChannel#sendFile(FileUpload...)}
* to send the File. For more information on what a bot may send using this, you may find the info in that method.
*
* @param message
Expand All @@ -384,7 +386,7 @@ public void reply(File file, String filename)
*/
public void reply(String message, File file, String filename)
{
event.getChannel().sendFile(file, filename).content(message).queue();
event.getChannel().sendFiles(FileUpload.fromData(file, filename)).addContent(message).queue();
}

/**
Expand Down Expand Up @@ -440,7 +442,7 @@ public void replyOrAlternate(MessageEmbed embed, String alternateMessage)
* sending the response as a {@link net.dv8tion.jda.api.entities.Message Message}
* automatically does {@link net.dv8tion.jda.api.requests.RestAction#queue() RestAction#queue()}.
*
* <p>This method uses {@link net.dv8tion.jda.api.entities.MessageChannel#sendFile(File, String, net.dv8tion.jda.api.utils.AttachmentOption...) MessageChannel#sendFile(File, String, AttachmentOption...)}
* <p>This method uses {@link net.dv8tion.jda.api.entities.MessageChannel#sendFiles(FileUpload...) MessageChannel#sendFile(FileUpload...)}
* to send the File. For more information on what a bot may send using this, you may find the info in that method.
*
* <p><b>NOTE:</b> This alternate String message can exceed the 2000 character cap, and will
Expand All @@ -463,7 +465,7 @@ public void replyOrAlternate(MessageEmbed embed, String alternateMessage)
public void replyOrAlternate(String message, File file, String filename, String alternateMessage)
{
try {
event.getChannel().sendFile(file, filename).content(message).queue();
event.getChannel().sendFiles(FileUpload.fromData(file, filename)).addContent(message).queue();
} catch(Exception e) {
reply(alternateMessage);
}
Expand Down Expand Up @@ -652,7 +654,7 @@ public void replyInDm(MessageEmbed embed, Consumer<Message> success, Consumer<Th
* @param message
* The Message to reply with
*/
public void replyInDm(Message message)
public void replyInDm(MessageCreateData message)
{
if(event.isFromType(ChannelType.PRIVATE))
reply(message);
Expand All @@ -679,7 +681,7 @@ public void replyInDm(Message message)
* @param success
* The Consumer to queue after sending the Message is sent.
*/
public void replyInDm(Message message, Consumer<Message> success)
public void replyInDm(MessageCreateData message, Consumer<Message> success)
{
if(event.isFromType(ChannelType.PRIVATE))
getPrivateChannel().sendMessage(message).queue(success);
Expand Down Expand Up @@ -711,10 +713,10 @@ public void replyInDm(Message message, Consumer<Message> success)
public void replyInDm(Message message, Consumer<Message> success, Consumer<Throwable> failure)
{
if(event.isFromType(ChannelType.PRIVATE))
getPrivateChannel().sendMessage(message).queue(success, failure);
getPrivateChannel().sendMessage(MessageCreateData.fromMessage(message)).queue(success, failure);
else
{
event.getAuthor().openPrivateChannel().queue(pc -> pc.sendMessage(message).queue(success, failure), failure);
event.getAuthor().openPrivateChannel().queue(pc -> pc.sendMessage(MessageCreateData.fromMessage(message)).queue(success, failure), failure);
}
}

Expand All @@ -730,7 +732,7 @@ public void replyInDm(Message message, Consumer<Message> success, Consumer<Throw
* sending the response as a {@link net.dv8tion.jda.api.entities.Message Message}
* automatically does {@link net.dv8tion.jda.api.requests.RestAction#queue() RestAction#queue()}.
*
* <p>This method uses {@link net.dv8tion.jda.api.entities.MessageChannel#sendFile(File, String, net.dv8tion.jda.api.utils.AttachmentOption...) MessageChannel#sendFile(File, String, AttachmentOption...)}
* <p>This method uses {@link net.dv8tion.jda.api.entities.MessageChannel#sendFiles(FileUpload...) MessageChannel#sendFile(FileUpload...)}
* to send the File. For more information on what a bot may send using this, you may find the info in that method.
*
* @param message
Expand All @@ -746,7 +748,7 @@ public void replyInDm(String message, File file, String filename)
reply(message, file, filename);
else
{
event.getAuthor().openPrivateChannel().queue(pc -> pc.sendFile(file, filename).content(message).queue());
event.getAuthor().openPrivateChannel().queue(pc -> pc.sendFiles(FileUpload.fromData(file, filename)).addContent(message).queue());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
import net.dv8tion.jda.api.events.interaction.command.MessageContextInteractionEvent;
import net.dv8tion.jda.api.interactions.commands.context.MessageContextInteraction;
import net.dv8tion.jda.api.requests.restaction.interactions.ReplyCallbackAction;
import net.dv8tion.jda.api.utils.AttachmentOption;
import net.dv8tion.jda.api.utils.FileUpload;
import net.dv8tion.jda.api.utils.messages.MessageCreateData;
import org.jetbrains.annotations.NotNull;

import java.io.File;
Expand Down Expand Up @@ -119,7 +120,7 @@ public void respond(MessageEmbed embed)
*
* @param message The Message to reply with
*/
public void respond(Message message)
public void respond(MessageCreateData message)
{
reply(message).queue();
}
Expand All @@ -130,16 +131,24 @@ public void respond(Message message)
* <p>The {@link ReplyCallbackAction} returned by sending the response as a {@link Message} automatically does
* {@link ReplyCallbackAction#queue() RestAction#queue()}.
*
* <p>This method uses {@link GenericCommandInteractionEvent#replyFile(File, String, net.dv8tion.jda.api.utils.AttachmentOption...)}
* <p>This method uses {@link GenericCommandInteractionEvent#replyFiles(net.dv8tion.jda.api.utils.FileUpload...)}
* to send the File. For more information on what a bot may send using this, you may find the info in that method.
*
* @param file The File to reply with
* @param filename The filename that Discord should display (null for default).
* @param options The {@link AttachmentOption}s to apply to the File.
* @param description The description to set (null for no description).
* @param spoiler whether the file should be marked as spoiler.
*/
public void respond(File file, String filename, AttachmentOption... options)
public void respond(File file, String filename, String description, boolean spoiler)
{
replyFile(file, filename, options).queue();
FileUpload fileUpload = FileUpload.fromData(file, filename);
if(description != null && !description.isEmpty())
fileUpload.setDescription(description);

if(spoiler)
fileUpload.asSpoiler();

replyFiles(fileUpload).queue();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
import net.dv8tion.jda.api.events.interaction.command.UserContextInteractionEvent;
import net.dv8tion.jda.api.interactions.commands.context.UserContextInteraction;
import net.dv8tion.jda.api.requests.restaction.interactions.ReplyCallbackAction;
import net.dv8tion.jda.api.utils.AttachmentOption;
import net.dv8tion.jda.api.utils.FileUpload;
import net.dv8tion.jda.api.utils.messages.MessageCreateData;
import org.jetbrains.annotations.NotNull;

import java.io.File;
Expand Down Expand Up @@ -82,7 +83,7 @@ public void respond(MessageEmbed embed)
*
* @param message The Message to reply with
*/
public void respond(Message message)
public void respond(MessageCreateData message)
{
reply(message).queue();
}
Expand All @@ -93,16 +94,24 @@ public void respond(Message message)
* <p>The {@link ReplyCallbackAction} returned by sending the response as a {@link Message} automatically does
* {@link ReplyCallbackAction#queue() RestAction#queue()}.
*
* <p>This method uses {@link GenericCommandInteractionEvent#replyFile(File, String, AttachmentOption...)}
* <p>This method uses {@link GenericCommandInteractionEvent#replyFiles(FileUpload...)}
* to send the File. For more information on what a bot may send using this, you may find the info in that method.
*
* @param file The File to reply with
* @param filename The filename that Discord should display (null for default).
* @param options The {@link AttachmentOption}s to apply to the File.
* @param description The description to set (null for no description).
* @param spoiler whether the file should be marked as spoiler.
*/
public void respond(File file, String filename, AttachmentOption... options)
public void respond(File file, String filename, String description, boolean spoiler)
{
replyFile(file, filename, options).queue();
FileUpload fileUpload = FileUpload.fromData(file, filename);
if(description != null && !description.isEmpty())
fileUpload.setDescription(description);

if(spoiler)
fileUpload.asSpoiler();

replyFiles(fileUpload).queue();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@
import java.util.Locale;

import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.MessageBuilder;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;

/**
*
Expand Down Expand Up @@ -98,8 +98,8 @@ else if(found.size()>1)
if(list.size() * 24 <= 2048-desr.length())
list.forEach(m -> desr.append("<@").append(m.getUser().getId()).append("> "));

event.reply(new MessageBuilder()
.append(title)
event.reply(new MessageCreateBuilder()
.setContent(title)
.setEmbeds(new EmbedBuilder()
.setDescription(desr.toString().trim())
.setColor(role.getColor()).build())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@
import com.jagrosh.jdautilities.command.CommandEvent;
import java.time.format.DateTimeFormatter;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.MessageBuilder;
import net.dv8tion.jda.api.OnlineStatus;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;

/**
*
Expand Down Expand Up @@ -86,6 +86,6 @@ protected void execute(CommandEvent event)
builder.setThumbnail(guild.getIconUrl());
builder.setColor(owner == null ? null : owner.getColor());
builder.setDescription(str);
event.reply(new MessageBuilder().append(title).setEmbeds(builder.build()).build());
event.reply(new MessageCreateBuilder().setContent(title).setEmbeds(builder.build()).build());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

import com.jagrosh.jdautilities.commons.waiter.EventWaiter;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.MessageBuilder;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.MessageChannel;
import net.dv8tion.jda.api.entities.MessageEmbed;
Expand All @@ -28,6 +27,9 @@
import net.dv8tion.jda.api.interactions.components.buttons.Button;
import net.dv8tion.jda.api.interactions.components.buttons.ButtonStyle;
import net.dv8tion.jda.api.requests.RestAction;
import net.dv8tion.jda.api.utils.messages.MessageCreateData;
import net.dv8tion.jda.api.utils.messages.MessageEditBuilder;
import net.dv8tion.jda.api.utils.messages.MessageEditData;
import net.dv8tion.jda.internal.utils.Checks;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -112,7 +114,7 @@ public void paginate(MessageChannel channel, int pageNum) {
pageNum = 1;
else if (pageNum > embeds.size())
pageNum = embeds.size();
Message msg = renderPage(pageNum);
MessageCreateData msg = MessageCreateData.fromEditData(renderPage(pageNum));
initialize(channel.sendMessage(msg), pageNum);
}

Expand All @@ -128,7 +130,7 @@ public void paginate(Message message, int pageNum) {
pageNum = 1;
else if (pageNum > embeds.size())
pageNum = embeds.size();
Message msg = renderPage(pageNum);
MessageEditData msg = renderPage(pageNum);
initialize(message.editMessage(msg), pageNum);
}

Expand Down Expand Up @@ -234,17 +236,17 @@ private void handleButtonInteraction(ButtonInteractionEvent event, Message messa
}

int n = newPageNum;
event.deferEdit().queue(interactionHook -> {
message.editMessage(renderPage(n)).setActionRow(buildButtons()).queue(m -> pagination(m, n));
});
event.deferEdit().queue(
interactionHook -> message.editMessage(renderPage(n)).setActionRow(buildButtons()).queue(m -> pagination(m, n))
);
}

private Message renderPage(int pageNum) {
MessageBuilder mbuilder = new MessageBuilder();
private MessageEditData renderPage(int pageNum) {
MessageEditBuilder mbuilder = new MessageEditBuilder();
MessageEmbed membed = this.embeds.get(pageNum - 1);
mbuilder.setEmbeds(membed);
if (text != null)
mbuilder.append(text.apply(pageNum, embeds.size()));
mbuilder.setContent(text.apply(pageNum, embeds.size()));
return mbuilder.build();
}

Expand Down
12 changes: 7 additions & 5 deletions menu/src/main/java/com/jagrosh/jdautilities/menu/ButtonMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,16 @@

import com.jagrosh.jdautilities.commons.waiter.EventWaiter;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.MessageBuilder;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.MessageChannel;
import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
import net.dv8tion.jda.api.requests.RestAction;
import net.dv8tion.jda.api.utils.messages.MessageCreateData;
import net.dv8tion.jda.api.utils.messages.MessageEditBuilder;
import net.dv8tion.jda.api.utils.messages.MessageEditData;
import net.dv8tion.jda.internal.utils.Checks;

import java.awt.Color;
Expand Down Expand Up @@ -72,7 +74,7 @@ public class ButtonMenu extends Menu
@Override
public void display(MessageChannel channel)
{
initialize(channel.sendMessage(getMessage()));
initialize(channel.sendMessage(MessageCreateData.fromEditData(getMessage())));
}

/**
Expand Down Expand Up @@ -145,11 +147,11 @@ private void initialize(RestAction<Message> ra)
}

// Generates a ButtonMenu message
private Message getMessage()
private MessageEditData getMessage()
{
MessageBuilder mbuilder = new MessageBuilder();
MessageEditBuilder mbuilder = new MessageEditBuilder();
if(text!=null)
mbuilder.append(text);
mbuilder.setContent(text);
if(description!=null)
mbuilder.setEmbeds(new EmbedBuilder().setColor(color).setDescription(description).build());
return mbuilder.build();
Expand Down
Loading