From 7bf468b47072a81a9f6b5f2fa76e04ce88493015 Mon Sep 17 00:00:00 2001 From: Liam Date: Thu, 4 Jul 2024 14:36:07 +0100 Subject: [PATCH] fix invite log channel --- .../logging/command/ListSubCommand.java | 8 ++++++ .../logging/listeners/GuildListener.java | 25 +++++++++++-------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/main/java/cc/fascinated/bat/features/logging/command/ListSubCommand.java b/src/main/java/cc/fascinated/bat/features/logging/command/ListSubCommand.java index 6ec94ee..bf1bdea 100644 --- a/src/main/java/cc/fascinated/bat/features/logging/command/ListSubCommand.java +++ b/src/main/java/cc/fascinated/bat/features/logging/command/ListSubCommand.java @@ -13,6 +13,7 @@ import cc.fascinated.bat.model.BatGuild; import cc.fascinated.bat.model.BatUser; import lombok.NonNull; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; @@ -47,6 +48,13 @@ public class ListSubCommand extends BatCommand implements EventListener { return; } + // The person who clicked the button is not the person who executed the command + Message referencedMessage = event.getMessage().getReferencedMessage(); + if (referencedMessage != null && !referencedMessage.getAuthor().getId().equals(user.getId())) { + event.reply("%s, you cannot use this button.".formatted(user.getDiscordUser().getAsMention())).setEphemeral(true).queue(); + return; + } + // Home if (event.getComponentId().equals("logs-home")) { event.editMessageEmbeds(getHelpMessage()).queue(); diff --git a/src/main/java/cc/fascinated/bat/features/logging/listeners/GuildListener.java b/src/main/java/cc/fascinated/bat/features/logging/listeners/GuildListener.java index 8eb74c0..a68a984 100644 --- a/src/main/java/cc/fascinated/bat/features/logging/listeners/GuildListener.java +++ b/src/main/java/cc/fascinated/bat/features/logging/listeners/GuildListener.java @@ -9,6 +9,7 @@ import cc.fascinated.bat.model.BatGuild; import lombok.NonNull; import lombok.extern.log4j.Log4j2; import net.dv8tion.jda.api.entities.Invite; +import net.dv8tion.jda.api.entities.channel.ChannelType; import net.dv8tion.jda.api.events.guild.invite.GuildInviteCreateEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; @@ -31,19 +32,21 @@ public class GuildListener implements EventListener { public void onGuildInviteCreate(@NonNull BatGuild guild, @NonNull Invite invite, @NonNull GuildInviteCreateEvent event) { log.info("Invite created in guild \"{}\" with code \"{}\"", guild.getGuild().getName(), invite.getCode()); - guild.getDiscordGuild().retrieveInvites().queue(invites -> { - Invite newInvite = invites.stream().filter(i -> i.getCode().equals(invite.getCode())).findFirst().orElse(null); - if (newInvite == null) { - return; + invite.expand().queue(expandedInvite -> { + EmbedDescriptionBuilder description = new EmbedDescriptionBuilder("Invite Created"); + description.appendLine("Invite: %s".formatted(expandedInvite.getUrl()), true); + if (expandedInvite.getChannel() != null) { + description.appendLine("Channel: %s".formatted( + expandedInvite.getChannel().getType() == ChannelType.TEXT ? + "<#%s>".formatted(expandedInvite.getChannel().getId()) : expandedInvite.getChannel().getName() + ), true); } - newInvite.expand().queue(expanded -> logFeature.sendLog(guild, LogType.INVITE_CREATE, EmbedUtils.successEmbed() - .setDescription(new EmbedDescriptionBuilder("Invite Created") - .appendLine("Invite: %s".formatted(expanded.getUrl()), true) - .appendLine("Channel: %s".formatted(expanded.getChannel()), true) - .appendLine("Max Uses: `%s`".formatted(expanded.getMaxUses() == 0 ? "Infinite" : expanded.getMaxUses()), true) - .appendLine("Creator: %s".formatted(expanded.getInviter() == null ? "Unknown" : expanded.getInviter().getAsMention()), true) + description.appendLine("Max Uses: `%s`".formatted(expandedInvite.getMaxUses() == 0 ? "Infinite" : expandedInvite.getMaxUses()), true); + description.appendLine("Creator: %s".formatted(expandedInvite.getInviter() == null ? "Unknown" : expandedInvite.getInviter().getAsMention()), true);; + logFeature.sendLog(guild, LogType.INVITE_CREATE, EmbedUtils.successEmbed() + .setDescription(description .build()) - .build())); + .build()); }); } }