Skip to content

Commit 0587e16

Browse files
committed
fix code expecting cached members
1 parent c83e2bd commit 0587e16

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

src/main/java/net/discordjug/javabot/systems/moderation/server_lock/ServerLockManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import net.dv8tion.jda.api.entities.Member;
1717
import net.dv8tion.jda.api.entities.MessageEmbed;
1818
import net.dv8tion.jda.api.entities.User;
19+
import net.dv8tion.jda.api.entities.UserSnowflake;
1920
import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent;
2021
import net.dv8tion.jda.api.hooks.ListenerAdapter;
2122

@@ -94,7 +95,7 @@ public ServerLockManager(JDA jda, NotificationService notificationService, BotCo
9495
.setColor(Responses.Type.DEFAULT.getColor())
9596
.setDescription(String.format("""
9697
Unfortunately, this server is currently locked. Please try to join again later.
97-
Contact the server owner, %s, for more info.""", guild.getOwner().getAsMention())
98+
Contact the server owner, %s, for more info.""", UserSnowflake.fromId(guild.getOwnerIdLong()).getAsMention())
9899
).build();
99100
}
100101

src/main/java/net/discordjug/javabot/systems/user_commands/ServerInfoCommand.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import net.discordjug.javabot.util.Responses;
66
import net.dv8tion.jda.api.EmbedBuilder;
77
import net.dv8tion.jda.api.entities.Guild;
8+
import net.dv8tion.jda.api.entities.Member;
89
import net.dv8tion.jda.api.entities.MessageEmbed;
910
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
1011
import net.dv8tion.jda.api.interactions.commands.build.Commands;
@@ -33,19 +34,26 @@ public void execute(@NotNull SlashCommandInteractionEvent event) {
3334
Responses.replyGuildOnly(event).queue();
3435
return;
3536
}
36-
event.replyEmbeds(buildServerInfoEmbed(event.getGuild()))
37-
.addActionRow(Button.link(Constants.WEBSITE_LINK, "Website")).queue();
37+
event.deferReply().queue();
38+
event.getGuild().retrieveOwner().queue(owner ->
39+
event
40+
.getHook()
41+
.sendMessageEmbeds(
42+
buildServerInfoEmbed(event.getGuild(), owner))
43+
.addActionRow(Button.link(Constants.WEBSITE_LINK, "Website")
44+
).queue()
45+
);
3846
}
3947

40-
private @NotNull MessageEmbed buildServerInfoEmbed(@NotNull Guild guild) {
48+
private @NotNull MessageEmbed buildServerInfoEmbed(@NotNull Guild guild, Member owner) {
4149
long categories = guild.getCategories().size();
4250
long channels = guild.getChannels().size() - categories;
4351
return new EmbedBuilder()
4452
.setColor(Responses.Type.DEFAULT.getColor())
4553
.setThumbnail(guild.getIconUrl())
4654
.setAuthor(guild.getName(), null, guild.getIconUrl())
4755
.setTitle("Server Information")
48-
.addField("Owner", guild.getOwner().getAsMention(), true)
56+
.addField("Owner", owner.getAsMention(), true)
4957
.addField("Member Count", guild.getMemberCount() + " members", true)
5058
.addField("Roles", String.format("%s Roles", guild.getRoles().size() - 1L), true)
5159
.addField("ID", String.format("```%s```", guild.getIdLong()), false)

src/main/java/net/discordjug/javabot/util/WebhookUtil.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,17 @@ public static void ensureWebhookExists(@NotNull IWebhookContainer channel, @NotN
9191
* the message
9292
*/
9393
public static CompletableFuture<ReadonlyMessage> mirrorMessageToWebhook(@NotNull Webhook webhook, @NotNull Message originalMessage, String newMessageContent, long threadId, @Nullable List<LayoutComponent> components, @Nullable List<MessageEmbed> embeds) {
94-
JDAWebhookClient client = new WebhookClientBuilder(webhook.getIdLong(), webhook.getToken()).setThreadId(threadId)
95-
.buildJDA();
94+
return originalMessage.getGuild().retrieveMember(originalMessage.getAuthor()).submit().thenCompose(member -> mirrorMessageToWebhook(webhook, originalMessage, newMessageContent, threadId, components, embeds, member));
95+
}
96+
97+
private static CompletableFuture<ReadonlyMessage> mirrorMessageToWebhook(@NotNull Webhook webhook, Message originalMessage, String newMessageContent, long threadId,
98+
List<LayoutComponent> components, List<MessageEmbed> embeds, Member member) {
9699
WebhookMessageBuilder message = new WebhookMessageBuilder().setContent(newMessageContent)
97100
.setAllowedMentions(AllowedMentions.none())
98-
.setAvatarUrl(transformOrNull(originalMessage.getMember(), Member::getEffectiveAvatarUrl))
99-
.setUsername(transformOrNull(originalMessage.getMember(), Member::getEffectiveName));
101+
.setAvatarUrl(transformOrNull(member, Member::getEffectiveAvatarUrl))
102+
.setUsername(transformOrNull(member, Member::getEffectiveName));
103+
JDAWebhookClient client = new WebhookClientBuilder(webhook.getIdLong(), webhook.getToken()).setThreadId(threadId)
104+
.buildJDA();
100105
if (components != null && !components.isEmpty()) {
101106
message.addComponents(components);
102107
}

0 commit comments

Comments
 (0)