Skip to content
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 application/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ dependencies {
implementation project(':database')
implementation project(':utils')

implementation 'net.dv8tion:JDA:5.0.0-alpha.9'
implementation 'net.dv8tion:JDA:5.0.0-alpha.20'

implementation 'org.apache.logging.log4j:log4j-core:2.19.0'
runtimeOnly 'org.apache.logging.log4j:log4j-slf4j18-impl:2.18.0'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.exceptions.InvalidTokenException;
import net.dv8tion.jda.api.requests.GatewayIntent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -12,7 +13,6 @@
import org.togetherjava.tjbot.config.Config;
import org.togetherjava.tjbot.db.Database;

import javax.security.auth.login.LoginException;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
Expand Down Expand Up @@ -79,7 +79,7 @@ public static void runBot(Config config) {
Database database = new Database("jdbc:sqlite:" + databasePath.toAbsolutePath());

JDA jda = JDABuilder.createDefault(config.getToken())
.enableIntents(GatewayIntent.GUILD_MEMBERS)
.enableIntents(GatewayIntent.GUILD_MEMBERS, GatewayIntent.MESSAGE_CONTENT)
.build();

jda.awaitReady();
Expand All @@ -91,7 +91,7 @@ public static void runBot(Config config) {
jda.addEventListener(core);

logger.info("Bot is ready");
} catch (LoginException e) {
} catch (InvalidTokenException e) {
logger.error("Failed to login", e);
} catch (InterruptedException e) {
logger.error("Interrupted while waiting for setup to complete", e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public abstract class BotCommandAdapter implements BotCommand {
* @param visibility the visibility of the command
*/
protected BotCommandAdapter(CommandData data, CommandVisibility visibility) {
this.data = Objects.requireNonNull(data, "The data shouldn't be null");
this.data = data.setGuildOnly(visibility == CommandVisibility.GUILD);
this.visibility = Objects.requireNonNull(visibility, "The visibility shouldn't be null");

this.name = data.getName();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.togetherjava.tjbot.commands;

import net.dv8tion.jda.api.entities.Emoji;
import net.dv8tion.jda.api.events.interaction.command.MessageContextInteractionEvent;
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
import net.dv8tion.jda.api.events.interaction.component.SelectMenuInteractionEvent;
Expand Down Expand Up @@ -50,7 +49,7 @@ public interface MessageContextCommand extends BotCommand {
* <p>
* Buttons or menus have to be created with a component ID (see
* {@link ComponentInteraction#getComponentId()},
* {@link net.dv8tion.jda.api.interactions.components.buttons.Button#of(ButtonStyle, String, Emoji)})
* {@link net.dv8tion.jda.api.interactions.components.buttons.Button#of(ButtonStyle, String, String)})
* in a very specific format, otherwise the core system will fail to identify the command that
* corresponded to the button or menu click event and is unable to route it back.
* <p>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.togetherjava.tjbot.commands;

import net.dv8tion.jda.api.entities.Emoji;
import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
Expand Down Expand Up @@ -81,7 +80,7 @@ public interface SlashCommand extends BotCommand {
* <p>
* Buttons or menus have to be created with a component ID (see
* {@link ComponentInteraction#getComponentId()},
* {@link net.dv8tion.jda.api.interactions.components.buttons.Button#of(ButtonStyle, String, Emoji)})
* {@link net.dv8tion.jda.api.interactions.components.buttons.Button#of(ButtonStyle, String, String)})
* in a very specific format, otherwise the core system will fail to identify the command that
* corresponded to the button or menu click event and is unable to route it back.
* <p>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.togetherjava.tjbot.commands;

import net.dv8tion.jda.api.entities.Emoji;
import net.dv8tion.jda.api.events.interaction.command.UserContextInteractionEvent;
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
import net.dv8tion.jda.api.events.interaction.component.SelectMenuInteractionEvent;
Expand Down Expand Up @@ -51,7 +50,7 @@ public interface UserContextCommand extends BotCommand {
* <p>
* Buttons or menus have to be created with a component ID (see
* {@link ComponentInteraction#getComponentId()},
* {@link net.dv8tion.jda.api.interactions.components.buttons.Button#of(ButtonStyle, String, Emoji)})
* {@link net.dv8tion.jda.api.interactions.components.buttons.Button#of(ButtonStyle, String, String)})
* in a very specific format, otherwise the core system will fail to identify the command that
* corresponded to the button or menu click event and is unable to route it back.
* <p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.events.interaction.component.SelectMenuInteractionEvent;
import net.dv8tion.jda.api.interactions.callbacks.IReplyCallback;
Expand Down Expand Up @@ -183,9 +184,8 @@ private void sendRoleSelectionMenu(final CommandInteraction event,
.map(RoleSelectCommand::mapToSelectOption)
.forEach(menu::addOptions);

OptionMapping titleOption = event.getOption(TITLE_OPTION);
String title = titleOption == null ? "Select your roles:" : titleOption.getAsString();

String title =
event.getOption(TITLE_OPTION, "Select your roles:", OptionMapping::getAsString);
MessageEmbed embed = createEmbed(title, event.getOption(DESCRIPTION_OPTION).getAsString());

event.replyEmbeds(embed).addActionRow(menu.build()).queue();
Expand All @@ -196,7 +196,7 @@ private static SelectOption mapToSelectOption(Role role) {

SelectOption option = SelectOption.of(role.getName(), role.getId());
if (null != roleIcon && roleIcon.isEmoji()) {
option = option.withEmoji((Emoji.fromUnicode(roleIcon.getEmoji())));
option = option.withEmoji(Emoji.fromUnicode(roleIcon.getEmoji()));
}

return option;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package org.togetherjava.tjbot.commands.basic;

import net.dv8tion.jda.api.entities.Emote;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.entities.emoji.RichCustomEmoji;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.exceptions.ErrorResponseException;
import net.dv8tion.jda.api.requests.ErrorResponse;
Expand All @@ -22,8 +23,8 @@
public final class SuggestionsUpDownVoter extends MessageReceiverAdapter {
private static final Logger logger = LoggerFactory.getLogger(SuggestionsUpDownVoter.class);
private static final int TITLE_MAX_LENGTH = 60;
private static final String FALLBACK_UP_VOTE = "👍";
private static final String FALLBACK_DOWN_VOTE = "👎";
private static final Emoji FALLBACK_UP_VOTE = Emoji.fromUnicode("👍");
private static final Emoji FALLBACK_DOWN_VOTE = Emoji.fromUnicode("👎");

private final SuggestionsConfig config;

Expand Down Expand Up @@ -68,13 +69,13 @@ private static void createThread(Message message) {
message.createThreadChannel(title).queue();
}

private static void reactWith(String emoteName, String fallbackUnicodeEmote, Guild guild,
private static void reactWith(String emojiName, Emoji fallbackEmoji, Guild guild,
Message message) {
getEmoteByName(emoteName, guild).map(message::addReaction).orElseGet(() -> {
getEmojiByName(emojiName, guild).map(message::addReaction).orElseGet(() -> {
logger.warn(
"Unable to vote on a suggestion with the configured emote ('{}'), using fallback instead.",
emoteName);
return message.addReaction(fallbackUnicodeEmote);
"Unable to vote on a suggestion with the configured emoji ('{}'), using fallback instead.",
emojiName);
return message.addReaction(fallbackEmoji);
}).queue(ignored -> {
}, exception -> {
if (exception instanceof ErrorResponseException responseException
Expand All @@ -88,7 +89,7 @@ private static void reactWith(String emoteName, String fallbackUnicodeEmote, Gui
});
}

private static Optional<Emote> getEmoteByName(String name, Guild guild) {
return guild.getEmotesByName(name, false).stream().findAny();
private static Optional<RichCustomEmoji> getEmojiByName(String name, Guild guild) {
return guild.getEmojisByName(name, false).stream().findAny();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import net.dv8tion.jda.api.entities.GuildVoiceState;
import net.dv8tion.jda.api.entities.Invite;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.VoiceChannel;
import net.dv8tion.jda.api.entities.channel.concrete.VoiceChannel;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.interactions.commands.Command;
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.togetherjava.tjbot.commands.componentids;

import net.dv8tion.jda.api.entities.Emoji;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.interactions.components.ComponentInteraction;
import net.dv8tion.jda.api.interactions.components.buttons.Button;
Expand All @@ -26,7 +25,7 @@ public interface ComponentIdGenerator {
* interactions, such as button or selection menus.
* <p>
* See {@link ComponentInteraction#getComponentId()} and
* {@link Button#of(ButtonStyle, String, Emoji)} for details on where the generated ID can be
* {@link Button#of(ButtonStyle, String, String)} for details on where the generated ID can be
* used.
*
* @param componentId the component ID payload to persist and generate a valid ID for
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.togetherjava.tjbot.commands.componentids;

import net.dv8tion.jda.api.entities.Emoji;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.interactions.components.ComponentInteraction;
import net.dv8tion.jda.api.interactions.components.buttons.Button;
Expand Down Expand Up @@ -28,7 +27,7 @@ public interface ComponentIdParser {
* interactions, such as button or selection menus.
* <p>
* See {@link ComponentInteraction#getComponentId()} and
* {@link Button#of(ButtonStyle, String, Emoji)} for details on where the ID was originally
* {@link Button#of(ButtonStyle, String, String)} for details on where the ID was originally
* transported with.
*
* @param uuid the UUID to parse which represents the component ID
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import net.dv8tion.jda.api.entities.ChannelType;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.ThreadChannel;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.entities.channel.ChannelType;
import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.interactions.components.buttons.Button;
import org.slf4j.Logger;
Expand Down Expand Up @@ -114,7 +114,8 @@ private void processAttachments(MessageReceivedEvent event,

List<CompletableFuture<Void>> tasks = new ArrayList<>();
for (Message.Attachment attachment : attachments) {
CompletableFuture<Void> task = attachment.retrieveInputStream()
CompletableFuture<Void> task = attachment.getProxy()
.download()
.thenApply(this::readAttachment)
.thenAccept(
content -> nameToFile.put(getNameOf(attachment), new GistFile(content)));
Expand Down Expand Up @@ -217,7 +218,7 @@ private boolean isHelpThread(MessageReceivedEvent event) {
return false;
}

ThreadChannel thread = event.getThreadChannel();
ThreadChannel thread = event.getChannel().asThreadChannel();
String rootChannelName = thread.getParentChannel().getName();
return isStagingChannelName.test(rootChannelName)
|| isOverviewChannelName.test(rootChannelName);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package org.togetherjava.tjbot.commands.help;

import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.IMentionable;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.exceptions.ErrorResponseException;
import net.dv8tion.jda.api.interactions.InteractionHook;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.togetherjava.tjbot.commands.Routine;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.GuildMessageChannel;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.entities.channel.middleman.GuildMessageChannel;
import net.dv8tion.jda.api.requests.RestAction;
import net.dv8tion.jda.internal.requests.CompletedRestAction;
import org.slf4j.Logger;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,17 @@

import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.MessageBuilder;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.entities.channel.Channel;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel;
import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.requests.RestAction;
import net.dv8tion.jda.api.requests.restaction.MessageAction;
import net.dv8tion.jda.api.requests.restaction.MessageCreateAction;
import net.dv8tion.jda.api.utils.FileUpload;
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
import net.dv8tion.jda.api.utils.messages.MessageCreateData;
import net.dv8tion.jda.internal.requests.CompletedRestAction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -110,9 +117,10 @@ RestAction<Message> sendExplanationMessage(MessageChannel threadChannel) {
HelpSystemHelper.embedWith(
"Don't forget to close your thread using the command **/help-thread close** when your question has been answered, thanks."));

MessageAction action = threadChannel.sendMessage(message);
MessageCreateAction action = threadChannel.sendMessage(message);
if (useCodeSyntaxExampleImage) {
action = action.addFile(codeSyntaxExampleData, CODE_SYNTAX_EXAMPLE_PATH);
action = action
.addFiles(FileUpload.fromData(codeSyntaxExampleData, CODE_SYNTAX_EXAMPLE_PATH));
}
return action.setEmbeds(embeds);
}
Expand Down Expand Up @@ -295,7 +303,9 @@ private void executeUncategorizedAdviceCheck(long threadChannelId, long authorId
Hey there 👋 You have to select a category for your help thread, otherwise nobody can see your question.
Please use the `/help-thread change category` slash-command and pick what fits best, thanks 🙂
""");
Message message = new MessageBuilder(author.getAsMention()).setEmbeds(embed).build();
MessageCreateData message = new MessageCreateBuilder().setContent(author.getAsMention())
.setEmbeds(embed)
.build();

return threadChannel.sendMessage(message);
}).queue();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
package org.togetherjava.tjbot.commands.help;

import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.requests.RestAction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@

import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.utils.TimeUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
Loading