package moe.oko.Kiafumi.listener; import moe.oko.Kiafumi.Kiafumi; import moe.oko.Kiafumi.util.EmbedUI; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.events.ReadyEvent; import net.dv8tion.jda.api.events.guild.GuildJoinEvent; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; import org.jetbrains.annotations.NotNull; import java.time.ZonedDateTime; import static moe.oko.Kiafumi.util.LoggingManager.info; /** * Main Listener * Used for all essential utility listeners, such as guild handling and persistence. * @author Kay, oko, Tiddy */ public class MainListener extends ListenerAdapter { /** * GuildJoin event listener, that ensures that a discord has a profile created for it. * @param event - event to be handled... */ @Override public void onGuildJoin(@NotNull GuildJoinEvent event) { // Automatically create our default information for the server if we don't have it already. info("Joined a new guild, NAME: " + event.getGuild().getName() + " ID: " + event.getGuild().getId()); Kiafumi.instance.getServerManager().createNewDefaultServer(event.getGuild()); Kiafumi.instance.registerForGuild(event.getGuild()); } /** * Shoots a message into console when the bot is defined as "Ready" by Discord. */ @Override public void onReady(@NotNull ReadyEvent event) { info(""" Received READY signal from Discord, bot is now logged in. -------------------------------- Active Guilds: [%s] Guilds Unavailable: [%s] --------------------------------""".formatted(event.getGuildAvailableCount(), event.getGuildUnavailableCount())); } /** * Quick Response for if someone pings me. */ public void onMessageReceived(MessageReceivedEvent event) { if(event.getMessage().getMentionedUsers().contains(Kiafumi.JDA.getSelfUser())) { info("Sent about message in " + event.getGuild().getId()); var eb = new EmbedBuilder() .setColor(EmbedUI.INFO) .setTitle("Hi, i'm Kiafumi!") .setDescription("I was summoned on October 6th 2017! My goal is to explore the metaverse and help people in it!") .setThumbnail(Kiafumi.JDA.getSelfUser().getAvatarUrl()) .setTimestamp(ZonedDateTime.now()) .setFooter(EmbedUI.BRAND); event.getChannel().sendMessageEmbeds(eb.build()).queue(); } } }