add emojis to the log category buttons and add a home button

This commit is contained in:
Lee 2024-07-04 06:21:31 +01:00
parent 188124991e
commit 4a522c084d
3 changed files with 57 additions and 22 deletions

@ -17,6 +17,7 @@ public class Emojis {
public static final Emoji PAUSE_EMOJI; public static final Emoji PAUSE_EMOJI;
public static final Emoji PLAY_EMOJI; public static final Emoji PLAY_EMOJI;
public static final Emoji SKIP_EMOJI; public static final Emoji SKIP_EMOJI;
public static final Emoji HOME_EMOJI;
/** /**
* Presence Status Emojis * Presence Status Emojis
@ -40,6 +41,7 @@ public class Emojis {
PAUSE_EMOJI = Emoji.fromUnicode(""); PAUSE_EMOJI = Emoji.fromUnicode("");
PLAY_EMOJI = Emoji.fromUnicode(""); PLAY_EMOJI = Emoji.fromUnicode("");
SKIP_EMOJI = Emoji.fromUnicode(""); SKIP_EMOJI = Emoji.fromUnicode("");
HOME_EMOJI = Emoji.fromUnicode("🏠");
log.info("Loaded emojis!"); log.info("Loaded emojis!");
} }
} }

@ -1,22 +1,33 @@
package cc.fascinated.bat.features.logging; package cc.fascinated.bat.features.logging;
import cc.fascinated.bat.common.EnumUtils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import net.dv8tion.jda.api.entities.emoji.Emoji;
/** /**
* @author Fascinated (fascinated7) * @author Fascinated (fascinated7)
*/ */
@AllArgsConstructor @Getter @AllArgsConstructor @Getter
public enum LogCategory { public enum LogCategory {
MESSAGE("Message"), MESSAGE(Emoji.fromUnicode("📩")),
MEMBER("Member"), MEMBER(Emoji.fromUnicode("👤")),
CHANNEL("Channel"), CHANNEL(Emoji.fromUnicode("📺")),
GUILD("Guild"); GUILD(Emoji.fromUnicode("🏰"));
/** /**
* The name of the log category * The emoji of the log category
*/ */
private final String name; private final Emoji emoji;
/**
* Gets the name of the log category
*
* @return the name
*/
public String getName() {
return EnumUtils.getEnumName(this);
}
/** /**
* Gets the log category by the name * Gets the log category by the name

@ -1,5 +1,6 @@
package cc.fascinated.bat.features.logging.command; package cc.fascinated.bat.features.logging.command;
import cc.fascinated.bat.Emojis;
import cc.fascinated.bat.command.BatSubCommand; import cc.fascinated.bat.command.BatSubCommand;
import cc.fascinated.bat.command.CommandInfo; import cc.fascinated.bat.command.CommandInfo;
import cc.fascinated.bat.common.EmbedDescriptionBuilder; import cc.fascinated.bat.common.EmbedDescriptionBuilder;
@ -12,6 +13,7 @@ import cc.fascinated.bat.model.BatGuild;
import cc.fascinated.bat.model.BatUser; import cc.fascinated.bat.model.BatUser;
import lombok.NonNull; import lombok.NonNull;
import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent; import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
@ -32,30 +34,31 @@ public class ListSubCommand extends BatSubCommand implements EventListener {
@Override @Override
public void execute(BatGuild guild, @NonNull BatUser user, @NonNull MessageChannel channel, Member member, @NonNull SlashCommandInteraction event) { public void execute(BatGuild guild, @NonNull BatUser user, @NonNull MessageChannel channel, Member member, @NonNull SlashCommandInteraction event) {
List<Button> buttons = new ArrayList<>(); List<Button> buttons = new ArrayList<>();
buttons.add(Button.primary("logs-home", "Home").withEmoji(Emojis.HOME_EMOJI));
for (LogCategory category : LogCategory.values()) { for (LogCategory category : LogCategory.values()) {
buttons.add(Button.primary("logs:list:%s".formatted(category.name().toLowerCase()), category.getName())); buttons.add(Button.primary("logs:list:%s".formatted(category.name().toLowerCase()), category.getName()).withEmoji(category.getEmoji()));
} }
event.replyEmbeds(getHelpMessage()).addComponents(ActionRow.of(buttons)).queue();
event.replyEmbeds(EmbedUtils.genericEmbed().setDescription(new EmbedDescriptionBuilder("Log Channels")
.appendLine("""
Set the log channel for:
- A specific event, use `/logs set <event> <channel>`
- A specific category by using `/logs set <category> <channel>`
- All log events by using `/logs set all <channel>`
To remove a log channel, it's the same as setting it,
but with `/logs remove` instead of `/logs set`
*Use the buttons below to see the log channels for each category*
""", false).build()).build())
.addComponents(ActionRow.of(buttons))
.queue();
} }
@Override @Override
public void onButtonInteraction(BatGuild guild, @NonNull BatUser user, @NonNull ButtonInteractionEvent event) { public void onButtonInteraction(BatGuild guild, @NonNull BatUser user, @NonNull ButtonInteractionEvent event) {
if (guild == null || !event.getComponentId().startsWith("logs:list:")) { // Invalid button if (guild == null) {
return; return;
} }
// Home
if (event.getComponentId().equals("logs-home")) {
event.editMessageEmbeds(getHelpMessage()).queue();
return;
}
// Not a log category
if (!event.getComponentId().startsWith("logs:list:")) {
return;
}
// Category
String[] split = event.getComponentId().split(":"); String[] split = event.getComponentId().split(":");
if (split.length != 3) { if (split.length != 3) {
return; return;
@ -79,5 +82,24 @@ public class ListSubCommand extends BatSubCommand implements EventListener {
} }
event.editMessageEmbeds(EmbedUtils.genericEmbed().setDescription(description.build()).build()).queue(); event.editMessageEmbeds(EmbedUtils.genericEmbed().setDescription(description.build()).build()).queue();
} }
/**
* Gets the help message for the command
*
* @return the help message
*/
public MessageEmbed getHelpMessage() {
return EmbedUtils.genericEmbed().setDescription(new EmbedDescriptionBuilder(null).appendLine(
"""
Set the log channel for:
- A specific event, use `/logs set <event> <channel>`
- A specific category by using `/logs set <category> <channel>`
- All log events by using `/logs set all <channel>`
To remove a log channel, it's the same as setting it,
but with `/logs remove` instead of `/logs set`
\s
*Use the buttons below to see the log channels for each category*
""", false).build()).build();
}
} }