forked from Fascinated/Bat
add emojis to the log category buttons and add a home button
This commit is contained in:
parent
188124991e
commit
4a522c084d
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user