package com.mcmoddev.bot.handlers;
import java.awt.Color;
import java.util.ArrayList;
import java.util.List;
import com.mcmoddev.bot.MMDBot;
import com.mcmoddev.bot.util.Utilities;
import sx.blah.discord.api.events.EventSubscriber;
import sx.blah.discord.handle.impl.events.ReadyEvent;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageDeleteEvent;
import sx.blah.discord.handle.impl.events.guild.member.NicknameChangedEvent;
import sx.blah.discord.handle.impl.events.guild.member.UserBanEvent;
import sx.blah.discord.handle.impl.events.guild.member.UserJoinEvent;
import sx.blah.discord.handle.impl.events.guild.member.UserLeaveEvent;
import sx.blah.discord.handle.impl.events.guild.member.UserPardonEvent;
import sx.blah.discord.handle.impl.events.guild.member.UserRoleUpdateEvent;
import sx.blah.discord.handle.obj.IRole;
import sx.blah.discord.handle.obj.IUser;
import sx.blah.discord.util.EmbedBuilder;
public class ServerEventHandler {
private static final int POSITIVE = Color.GREEN.getRGB();
private static final int NEUTRAL = Color.YELLOW.getRGB();
private static final int NEGATIVE = Color.RED.getRGB();
@EventSubscriber
public void onReady (ReadyEvent event) {
MMDBot.mmdGuild = MMDBot.instance.getGuildByID("176780432371744769");
MMDBot.botZone = MMDBot.instance.getChannelByID("179302857143615489");
MMDBot.events = MMDBot.instance.getChannelByID("271498021286576128");
// Utilities.sendMessage(MMDBot.events, "MMDBot is up and ready!");
}
@EventSubscriber
public void onUserJoin (UserJoinEvent event) {
if (event.getGuild().equals(MMDBot.mmdGuild)) {
final IUser user = event.getUser();
final EmbedBuilder embed = new EmbedBuilder();
embed.withDescription("**USER JOIN**");
embed.appendField("**User**", Utilities.userString(user), false);
embed.appendField("**Creation Date**", Utilities.formatTime(user.getCreationDate()), false);
Utilities.sendMessage(MMDBot.events, embed, POSITIVE);
}
}
@EventSubscriber
public void onUserLeave (UserLeaveEvent event) {
if (event.getGuild().equals(MMDBot.mmdGuild)) {
final IUser user = event.getUser();
final EmbedBuilder embed = new EmbedBuilder();
embed.withDescription("**USER LEAVE**");
embed.appendField("**User**", Utilities.userString(user), true);
embed.appendField("**Creation Date**", Utilities.formatTime(user.getCreationDate()), false);
Utilities.sendMessage(MMDBot.events, embed, NEGATIVE);
}
}
@EventSubscriber
public void onUserRoles (UserRoleUpdateEvent event) {
if (event.getGuild().equals(MMDBot.mmdGuild)) {
final IUser user = event.getUser();
final EmbedBuilder embed = new EmbedBuilder();
final List<IRole> newRoles = event.getNewRoles();
final List<IRole> oldRoles = event.getOldRoles();
embed.withDescription("**USER ROLES CHANGED**");
embed.appendField("**User**", Utilities.userString(user), false);
embed.appendField("**Editor**", "API does not provide yet!", false);
embed.appendField("**Current Roles**", Utilities.toString(newRoles, ", "), false);
final List<IRole> addedRoles = new ArrayList<>(newRoles);
addedRoles.removeAll(oldRoles);
if (!addedRoles.isEmpty())
embed.appendField("**Added Roles**", Utilities.toString(addedRoles, ", "), false);
final List<IRole> removedRoles = new ArrayList<>(oldRoles);
removedRoles.removeAll(newRoles);
if (!removedRoles.isEmpty())
embed.appendField("**Removed Roles**", Utilities.toString(removedRoles, ", "), false);
Utilities.sendMessage(MMDBot.events, embed, NEUTRAL);
}
}
@EventSubscriber
public void onUserBan (UserBanEvent event) {
if (event.getGuild().equals(MMDBot.mmdGuild)) {
final IUser user = event.getUser();
final EmbedBuilder embed = new EmbedBuilder();
embed.withDescription("**USER BANNED**");
embed.appendField("**User**", Utilities.userString(user), false);
embed.appendField("**Banner**", "API does not provide yet!", false);
Utilities.sendMessage(MMDBot.events, embed, NEGATIVE);
}
}
@EventSubscriber
public void onUserPardon (UserPardonEvent event) {
if (event.getGuild().equals(MMDBot.mmdGuild)) {
final IUser user = event.getUser();
final EmbedBuilder embed = new EmbedBuilder();
embed.withDescription("**USER PARDON**");
embed.appendField("**User**", Utilities.userString(user), true);
embed.appendField("**Pardoner**", "API does not provide yet!", false);
Utilities.sendMessage(MMDBot.events, embed, POSITIVE);
}
}
@EventSubscriber
public void onUserNickNameChange (NicknameChangedEvent event) {
if (event.getGuild().equals(MMDBot.mmdGuild)) {
final IUser user = event.getUser();
final EmbedBuilder embed = new EmbedBuilder();
embed.withDescription("**USER NICKNAME CHANGE**");
embed.appendField("**User**", Utilities.userString(user), false);
if (event.getOldNickname().isPresent())
embed.appendField("**Old Nickname**", event.getOldNickname().get(), true);
if (event.getNewNickname().isPresent())
embed.appendField("**New Nickname**", event.getNewNickname().get(), true);
Utilities.sendMessage(MMDBot.events, embed, NEUTRAL);
}
}
@EventSubscriber
public void onMessageDelete (MessageDeleteEvent event) {
if (event.getGuild().equals(MMDBot.mmdGuild)) {
final IUser user = event.getAuthor();
final EmbedBuilder embed = new EmbedBuilder();
embed.withDescription("**USER DELETE MESSAGE**");
embed.appendField("**User**", Utilities.userString(user), false);
embed.appendField("**Chanel**", event.getChannel().getName(), false);
embed.appendField("**Content**", Utilities.formatMessage(event.getMessage()), false);
Utilities.sendMessage(MMDBot.events, embed, NEGATIVE);
}
}
}