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
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ dependencies {
compileOnly("org.jetbrains:annotations:23.0.0")

// DIH4JDA (Command Framework) & JDA
implementation("xyz.dynxsty:dih4jda:1.6.2")
implementation("net.dv8tion:JDA:5.0.0-beta.2") {
implementation("com.github.DynxstyGIT:DIH4JDA:120a15ad2e")
implementation("net.dv8tion:JDA:5.0.0-beta.12") {
exclude(module = "opus-java")
}

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/net/javadiscord/javabot/SpringConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

import xyz.dynxsty.dih4jda.DIH4JDA;
import xyz.dynxsty.dih4jda.DIH4JDABuilder;
import xyz.dynxsty.dih4jda.DIH4JDALogger;
import xyz.dynxsty.dih4jda.exceptions.DIH4JDAException;
import xyz.dynxsty.dih4jda.interactions.commands.application.RegistrationType;

Expand Down Expand Up @@ -93,7 +92,8 @@ public JDA jda(BotConfig botConfig, ApplicationContext ctx) throws LoginExceptio
public DIH4JDA initializeDIH4JDA(JDA jda) throws DIH4JDAException {
DIH4JDA.setDefaultRegistrationType(RegistrationType.GLOBAL);
return DIH4JDABuilder.setJDA(jda)
.disableLogging(DIH4JDALogger.Type.SMART_QUEUE_IGNORED)
.setGlobalSmartQueue(false)
.setGuildSmartQueue(false)
.disableAutomaticCommandRegistration()
.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import java.sql.Statement;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
Expand All @@ -38,8 +37,6 @@
public class DbHelper {
@Getter
private final DataSource dataSource;
private final ExecutorService asyncPool;
private final BotConfig botConfig;

/**
* Initializes the data source that'll be used throughout the bot to access
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package net.javadiscord.javabot.data.h2db.commands;

import net.javadiscord.javabot.util.UserUtils;
import xyz.dynxsty.dih4jda.interactions.commands.application.SlashCommand;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.Permission;
Expand Down Expand Up @@ -45,7 +46,7 @@ private MessageEmbed buildInfoEmbed(GuildConfig config, User author) {
long messages = dbActions.count("SELECT count(*) FROM message_cache");
int maxMessages = config.getMessageCacheConfig().getMaxCachedMessages();
return new EmbedBuilder()
.setAuthor(author.getAsTag(), null, author.getEffectiveAvatarUrl())
.setAuthor(UserUtils.getUserTag(author), null, author.getEffectiveAvatarUrl())
.setTitle("Message Cache Info")
.setColor(Responses.Type.DEFAULT.getColor())
.addField("Table Size", dbActions.getLogicalSize("message_cache") + " bytes", false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ CREATE TABLE my_table (
.setRequired(true)
.build();
return Modal.create("quick-migrate", "Quick Migrate")
.addActionRows(ActionRow.of(sqlInput), ActionRow.of(confirmInput))
.addComponents(ActionRow.of(sqlInput), ActionRow.of(confirmInput))
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;

import net.javadiscord.javabot.util.UserUtils;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;

Expand Down Expand Up @@ -142,7 +143,7 @@ public void sendDeletedMessageToLog(Guild guild, MessageChannel channel, CachedM
private EmbedBuilder buildMessageCacheEmbed(MessageChannel channel, User author, CachedMessage before) {
long epoch = IdCalculatorCommand.getTimestampFromId(before.getMessageId()) / 1000;
return new EmbedBuilder()
.setAuthor(author.getAsTag(), null, author.getEffectiveAvatarUrl())
.setAuthor(UserUtils.getUserTag(author), null, author.getEffectiveAvatarUrl())
.addField("Author", author.getAsMention(), true)
.addField("Channel", channel.getAsMention(), true)
.addField("Created at", String.format("<t:%s:F>", epoch), true)
Expand Down Expand Up @@ -200,33 +201,33 @@ private InputStream buildDeletedMessageFile(User author, CachedMessage message)
DateTimeFormatter formatter = TimeUtils.STANDARD_FORMATTER.withZone(ZoneOffset.UTC);
Instant instant = Instant.ofEpochMilli(IdCalculatorCommand.getTimestampFromId(message.getMessageId()));
String in = String.format("""
Author: %s
ID: %s
Created at: %s
Author: %s
ID: %s
Created at: %s

--- Message Content ---
--- Message Content ---

%s
""", author.getAsTag(), message.getMessageId(), formatter.format(instant), message.getMessageContent());
%s
""", UserUtils.getUserTag(author), message.getMessageId(), formatter.format(instant), message.getMessageContent());
return new ByteArrayInputStream(in.getBytes(StandardCharsets.UTF_8));
}

private InputStream buildEditedMessageFile(User author, CachedMessage before, Message after) {
DateTimeFormatter formatter = TimeUtils.STANDARD_FORMATTER.withZone(ZoneOffset.UTC);
Instant instant = Instant.ofEpochMilli(IdCalculatorCommand.getTimestampFromId(before.getMessageId()));
String in = String.format("""
Author: %s
ID: %s
Created at: %s
Author: %s
ID: %s
Created at: %s

--- Message Content (before) ---
--- Message Content (before) ---

%s
%s

--- Message Content (after) ---
--- Message Content (after) ---

%s
""", author.getAsTag(), before.getMessageId(), formatter.format(instant), before.getMessageContent(), after.getContentRaw());
%s
""", UserUtils.getUserTag(author), before.getMessageId(), formatter.format(instant), before.getMessageContent(), after.getContentRaw());
return new ByteArrayInputStream(in.getBytes(StandardCharsets.UTF_8));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import net.javadiscord.javabot.util.ExceptionLogger;
import net.javadiscord.javabot.util.MessageActionUtils;
import net.javadiscord.javabot.util.Responses;
import net.javadiscord.javabot.util.UserUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand Down Expand Up @@ -177,8 +178,8 @@ public void thankHelper(@NotNull Guild guild, ThreadChannel postThread, long hel
ExceptionLogger.capture(e, getClass().getSimpleName());
botConfig.get(guild).getModerationConfig().getLogChannel().sendMessageFormat(
"Could not record user %s thanking %s for help in post %s: %s",
postThread.getOwner().getUser().getAsTag(),
helper.getAsTag(),
UserUtils.getUserTag(postThread.getOwner().getUser()),
UserUtils.getUserTag(helper),
postThread.getAsMention(),
e.getMessage()
).queue();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import net.javadiscord.javabot.util.Plotter;
import net.javadiscord.javabot.util.Responses;
import net.javadiscord.javabot.util.StringUtils;
import net.javadiscord.javabot.util.UserUtils;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
Expand Down Expand Up @@ -141,7 +142,7 @@ private FileUpload generatePlot(User user) {

private @NotNull MessageEmbed buildHelpAccountEmbed(HelpAccount account, @NotNull User user, Guild guild, long totalThanks, long weekThanks, FileUpload upload) {
EmbedBuilder eb = new EmbedBuilder()
.setAuthor(user.getAsTag(), null, user.getEffectiveAvatarUrl())
.setAuthor(UserUtils.getUserTag(user), null, user.getEffectiveAvatarUrl())
.setTitle("Help Account")
.setThumbnail(user.getEffectiveAvatarUrl())
.setDescription("Here are some statistics about how you've helped others here.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import net.javadiscord.javabot.systems.notification.NotificationService;
import net.javadiscord.javabot.util.ExceptionLogger;
import net.javadiscord.javabot.util.Responses;
import net.javadiscord.javabot.util.UserUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.dao.DataAccessException;

Expand Down Expand Up @@ -291,12 +292,12 @@ public void kick(User user, String reason, Member kickedBy, MessageChannel chann

private @NotNull EmbedBuilder buildModerationEmbed(@NotNull User user, @NotNull Member moderator, String reason) {
return new EmbedBuilder()
.setAuthor(moderator.getUser().getAsTag(), null, moderator.getEffectiveAvatarUrl())
.setAuthor(UserUtils.getUserTag(moderator.getUser()), null, moderator.getEffectiveAvatarUrl())
.addField("Member", user.getAsMention(), true)
.addField("Moderator", moderator.getAsMention(), true)
.addField("Reason", reason, true)
.setTimestamp(Instant.now())
.setFooter(user.getAsTag(), user.getEffectiveAvatarUrl());
.setFooter(UserUtils.getUserTag(user), user.getEffectiveAvatarUrl());
}

private @NotNull MessageEmbed buildBanEmbed(User user, Member bannedBy, String reason) {
Expand All @@ -315,7 +316,7 @@ public void kick(User user, String reason, Member kickedBy, MessageChannel chann

private @NotNull MessageEmbed buildUnbanEmbed(long userId, String reason, @NotNull Member unbannedBy) {
return new EmbedBuilder()
.setAuthor(unbannedBy.getUser().getAsTag(), null, unbannedBy.getEffectiveAvatarUrl())
.setAuthor(UserUtils.getUserTag(unbannedBy.getUser()), null, unbannedBy.getEffectiveAvatarUrl())
.setTitle("Ban Revoked")
.setColor(Responses.Type.ERROR.getColor())
.addField("Moderator", unbannedBy.getAsMention(), true)
Expand All @@ -335,18 +336,18 @@ public void kick(User user, String reason, Member kickedBy, MessageChannel chann

private @NotNull MessageEmbed buildClearWarnsEmbed(@NotNull User user, @NotNull User clearedBy) {
return new EmbedBuilder()
.setAuthor(clearedBy.getAsTag(), null, clearedBy.getEffectiveAvatarUrl())
.setAuthor(UserUtils.getUserTag(clearedBy), null, clearedBy.getEffectiveAvatarUrl())
.setTitle("Warns Cleared")
.setColor(Responses.Type.WARN.getColor())
.setDescription("All warns have been cleared from " + user.getAsMention() + "'s record.")
.setTimestamp(Instant.now())
.setFooter(user.getAsTag(), user.getEffectiveAvatarUrl())
.setFooter(UserUtils.getUserTag(user), user.getEffectiveAvatarUrl())
.build();
}

private @NotNull MessageEmbed buildClearWarnsByIdEmbed(@NotNull Warn w, @NotNull User clearedBy) {
return new EmbedBuilder()
.setAuthor(clearedBy.getAsTag(), null, clearedBy.getEffectiveAvatarUrl())
.setAuthor(UserUtils.getUserTag(clearedBy), null, clearedBy.getEffectiveAvatarUrl())
.setTitle("Warn Cleared")
.setColor(Responses.Type.WARN.getColor())
.setDescription(String.format("""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import net.javadiscord.javabot.data.config.guild.ModerationConfig;
import net.javadiscord.javabot.util.Checks;
import net.javadiscord.javabot.util.Responses;
import net.javadiscord.javabot.util.UserUtils;
import org.jetbrains.annotations.NotNull;

import java.time.LocalDateTime;
Expand Down Expand Up @@ -77,7 +78,7 @@ protected ReplyCallbackAction handleModerationCommand(@NotNull SlashCommandInter
(before == null || member.getTimeJoined().isBefore(before)) &&
(after == null || member.getTimeJoined().isAfter(after));
if (shouldRemove) {
config.getLogChannel().sendMessage("Removing " + member.getUser().getAsTag() + " as part of prune.").queue();
config.getLogChannel().sendMessage("Removing " + UserUtils.getUserTag(member.getUser()) + " as part of prune.").queue();
member.ban(delDays, TimeUnit.DAYS).reason(reason).queue();
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import net.javadiscord.javabot.util.ExceptionLogger;
import net.javadiscord.javabot.util.Responses;
import net.javadiscord.javabot.util.TimeUtils;
import net.javadiscord.javabot.util.UserUtils;
import org.jetbrains.annotations.NotNull;

import javax.annotation.CheckReturnValue;
Expand Down Expand Up @@ -74,7 +75,7 @@ protected ReplyCallbackAction handleModerationCommand(@NotNull SlashCommandInter
StringBuilder sb = new StringBuilder();
sb.append(amount > 1 ? "Up to " + amount + " messages " : "1 message ");
if (user != null) {
sb.append("by the user ").append(user.getAsTag()).append(' ');
sb.append("by the user ").append(UserUtils.getUserTag(user)).append(' ');
}
sb.append("will be removed").append(archive ? " and placed in an archive." : '.');
return Responses.info(event, "Purge Started", sb.toString());
Expand Down Expand Up @@ -198,12 +199,12 @@ private int removeMessages(List<Message> messages, @Nullable User user, @Nullabl
*/
private void archiveMessage(PrintWriter writer, Message message) {
writer.printf(
"%s : Removing message %s by %s which was sent at %s\n--- Text ---\n%s\n--- End Text ---\n\n",
OffsetDateTime.now().format(DateTimeFormatter.ISO_OFFSET_DATE_TIME),
message.getId(),
message.getAuthor().getAsTag(),
message.getTimeCreated().format(DateTimeFormatter.ISO_OFFSET_DATE_TIME),
message.getContentRaw()
"%s : Removing message %s by %s which was sent at %s\n--- Text ---\n%s\n--- End Text ---\n\n",
OffsetDateTime.now().format(DateTimeFormatter.ISO_OFFSET_DATE_TIME),
message.getId(),
UserUtils.getUserTag(message.getAuthor()),
message.getTimeCreated().format(DateTimeFormatter.ISO_OFFSET_DATE_TIME),
message.getContentRaw()
);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package net.javadiscord.javabot.systems.moderation.report;

import net.javadiscord.javabot.util.UserUtils;
import xyz.dynxsty.dih4jda.util.ComponentIdBuilder;
import xyz.dynxsty.dih4jda.interactions.components.ButtonHandler;
import xyz.dynxsty.dih4jda.interactions.components.ModalHandler;
Expand Down Expand Up @@ -56,7 +57,7 @@ public void handleButton(@NotNull ButtonInteractionEvent event, Button button) {
return;
}
Responses.info(event.getHook(), "Report resolved", "Successfully resolved this report!").queue();
event.getMessage().editMessageComponents(ActionRow.of(Button.secondary("report-resolved", "Resolved by " + event.getUser().getAsTag()).asDisabled())).queue();
event.getMessage().editMessageComponents(ActionRow.of(Button.secondary("report-resolved", "Resolved by " + UserUtils.getUserTag(event.getUser())).asDisabled())).queue();
thread.sendMessage("This thread was resolved by " + event.getUser().getAsMention()).queue(
success -> thread.getManager()
.setName(String.format("[Resolved] %s", thread.getName()))
Expand Down Expand Up @@ -86,9 +87,9 @@ protected Modal buildUserReportModal(@NotNull UserContextInteractionEvent event)
TextInput messageInput = TextInput.create("reason", "Report Description", TextInputStyle.PARAGRAPH)
.setMaxLength(MessageEmbed.VALUE_MAX_LENGTH)
.build();
String title = "Report " + event.getTarget().getAsTag();
String title = "Report " + UserUtils.getUserTag(event.getTarget());
return Modal.create(ComponentIdBuilder.build("report", "user", event.getTarget().getId()), title.substring(0, Math.min(title.length(), Modal.MAX_TITLE_LENGTH)))
.addActionRows(ActionRow.of(messageInput))
.addActionRow(messageInput)
.build();
}

Expand All @@ -103,13 +104,13 @@ protected Modal buildMessageReportModal(@NotNull MessageContextInteractionEvent
String title = "Report message";
Member targetMember = event.getTarget().getMember();
if (targetMember != null) {
title += " from " + targetMember.getUser().getAsTag();
title += " from " + UserUtils.getUserTag(targetMember.getUser());
}
TextInput messageInput = TextInput.create("reason", "Report Description", TextInputStyle.PARAGRAPH)
.setMaxLength(MessageEmbed.VALUE_MAX_LENGTH)
.build();
return Modal.create(ComponentIdBuilder.build("report", "message", event.getTarget().getId()), title.substring(0, Math.min(title.length(), Modal.MAX_TITLE_LENGTH)))
.addActionRows(ActionRow.of(messageInput))
.addActionRow(messageInput)
.build();
}

Expand All @@ -136,7 +137,7 @@ protected WebhookMessageCreateAction<Message> handleUserReport(InteractionHook h
}
reportChannel.sendMessageEmbeds(embed.build())
.queue(m -> this.createReportThread(m, target.getIdLong(), config.getModerationConfig()));
embed.setDescription("Successfully reported " + "`" + target.getAsTag() + "`!\nYour report has been send to our Moderators");
embed.setDescription("Successfully reported " + "`" + UserUtils.getUserTag(target) + "`!\nYour report has been send to our Moderators");
hook.sendMessageEmbeds(embed.build()).queue();
}, failure -> {
Responses.error(hook, "The user to report seems not to exist any more.").queue();
Expand All @@ -162,7 +163,7 @@ private void handleMessageReport(ModalInteractionEvent event, String messageId)
WebhookUtil.mirrorMessageToWebhook(wh, target, target.getContentRaw(), thread.getIdLong(), null, null);
});
}));
embed.setDescription("Successfully reported " + "`" + target.getAuthor().getAsTag() + "`!\nYour report has been send to our Moderators");
embed.setDescription("Successfully reported " + "`" + UserUtils.getUserTag(target.getAuthor()) + "`!\nYour report has been send to our Moderators");
event.getHook().sendMessageEmbeds(embed.build()).queue();
}, failure -> {
Responses.error(event.getHook(), "The author of the message to report seems not to exist any more.").queue();
Expand Down Expand Up @@ -201,15 +202,15 @@ private void createReportThread(Message message, long targetId, ModerationConfig

private EmbedBuilder buildReportEmbed(User reported, User reportedBy, String reason, Channel channel) {
return new EmbedBuilder()
.setAuthor(reported.getAsTag(), null, reported.getEffectiveAvatarUrl())
.setAuthor(UserUtils.getUserTag(reported), null, reported.getEffectiveAvatarUrl())
.setColor(Responses.Type.DEFAULT.getColor())
.addField("Member", reported.getAsMention(), true)
.addField("Reported by", reportedBy.getAsMention(), true)
.addField("Channel", channel.getAsMention(), true)
.addField("Reported on", String.format("<t:%s:F>", Instant.now().getEpochSecond()), false)
.addField("ID", String.format("``` %s ```", reported.getId()), true)
.addField("Reason", String.format("``` %s ```", reason), false)
.setFooter(reportedBy.getAsTag(), reportedBy.getEffectiveAvatarUrl())
.setFooter(UserUtils.getUserTag(reportedBy), reportedBy.getEffectiveAvatarUrl())
.setTimestamp(Instant.now());
}
}
Loading