77 lines
4.2 KiB
Java
77 lines
4.2 KiB
Java
|
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.entities.TextChannel;
|
||
|
import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent;
|
||
|
import net.dv8tion.jda.api.events.guild.member.GuildMemberRemoveEvent;
|
||
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||
|
import org.jetbrains.annotations.NotNull;
|
||
|
|
||
|
import java.time.OffsetDateTime;
|
||
|
import java.time.format.DateTimeFormatter;
|
||
|
|
||
|
import static moe.oko.Kiafumi.Kiafumi.error;
|
||
|
import static moe.oko.Kiafumi.Kiafumi.debug;
|
||
|
import static moe.oko.Kiafumi.Kiafumi.info;
|
||
|
|
||
|
public class SkynetListener extends ListenerAdapter {
|
||
|
@Override
|
||
|
public void onGuildMemberJoin(@NotNull GuildMemberJoinEvent event) {
|
||
|
var server = Kiafumi.instance.getServerManager().getOrCreateServer(event.getGuild());
|
||
|
if(server.getJoinRole() != null) {
|
||
|
try {
|
||
|
event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(server.getJoinRole())).queue();
|
||
|
} catch(Exception ex) {
|
||
|
error("Failed to apply welcome role to " + event.getMember().getEffectiveName() + ", as the role does not exist.");
|
||
|
}
|
||
|
}
|
||
|
if(server.isWelcomeEnabled()) {
|
||
|
info("User [" + event.getUser().getName() + ":" + event.getUser().getId() + "] joined guild [" + event.getGuild().getName() + ':' + event.getGuild().getId() + "].");
|
||
|
// Fetch the welcome channel from settings.
|
||
|
TextChannel textChannel;
|
||
|
try {
|
||
|
textChannel = event.getGuild().getTextChannelById(server.getWelcomeChannel());
|
||
|
} catch (Exception ex) {
|
||
|
error("Failed to send join message to guild " + event.getGuild().getId() + " as the welcome channel was not found.");
|
||
|
return;
|
||
|
}
|
||
|
var dTF = DateTimeFormatter.ofPattern("MM-dd-yyyy");
|
||
|
// Prepare embed.
|
||
|
var embedBuilder = new EmbedBuilder()
|
||
|
.setColor(EmbedUI.SUCCESS)
|
||
|
.setAuthor(event.getMember().getEffectiveName() + "#" + event.getMember().getUser().getDiscriminator() + " ("
|
||
|
+ event.getMember().getId() + ")", null, event.getUser().getAvatarUrl()).setFooter("User Joined").setTimestamp(OffsetDateTime.now())
|
||
|
.setDescription(event.getMember().getAsMention() + " | **Joined Discord**: " + event.getMember().getTimeCreated().format(dTF));
|
||
|
textChannel.sendMessageEmbeds(embedBuilder.build()).queue();
|
||
|
debug("Guild join message successfully sent.");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void onGuildMemberRemove(@NotNull GuildMemberRemoveEvent event) {
|
||
|
info("User [" + event.getUser().getName() + ":" + event.getUser().getId() + "] left guild [" + event.getGuild().getName() + ':' + event.getGuild().getId() + "].");
|
||
|
var server = Kiafumi.instance.getServerManager().getOrCreateServer(event.getGuild());
|
||
|
if(server.isWelcomeEnabled()) {
|
||
|
// Fetch the welcome channel from settings.
|
||
|
TextChannel textChannel;
|
||
|
try {
|
||
|
textChannel = event.getGuild().getTextChannelById(server.getWelcomeChannel());
|
||
|
} catch (Exception ex) {
|
||
|
error("Failed to send leave message to guild " + event.getGuild().getId() + " as the welcome channel was not found.");
|
||
|
return;
|
||
|
}
|
||
|
// Prepare embed.
|
||
|
var dTF = DateTimeFormatter.ofPattern("MM-dd-yyyy");
|
||
|
var embedBuilder = new EmbedBuilder()
|
||
|
.setColor(EmbedUI.FAILURE)
|
||
|
.setAuthor(event.getMember().getEffectiveName() + "#" + event.getMember().getUser().getDiscriminator() + " ("
|
||
|
+ event.getMember().getId() + ")", null, event.getUser().getAvatarUrl()).setFooter("User Left").setTimestamp(OffsetDateTime.now())
|
||
|
.setDescription(event.getMember().getAsMention() + " | **Joined Server**: " + event.getMember().getTimeJoined().format(dTF));
|
||
|
textChannel.sendMessageEmbeds(embedBuilder.build()).queue();
|
||
|
debug("Guild leave message successfully sent.");
|
||
|
}
|
||
|
}
|
||
|
}
|