2022-03-24 04:10:50 +00:00
|
|
|
package moe.oko.Kiafumi.listener;
|
|
|
|
|
|
|
|
import moe.oko.Kiafumi.Kiafumi;
|
2022-03-28 05:42:03 +00:00
|
|
|
import net.dv8tion.jda.api.entities.Activity;
|
|
|
|
import net.dv8tion.jda.api.entities.Guild;
|
|
|
|
import net.dv8tion.jda.api.events.ReadyEvent;
|
2022-03-24 04:10:50 +00:00
|
|
|
import net.dv8tion.jda.api.events.guild.GuildJoinEvent;
|
2022-03-28 05:42:03 +00:00
|
|
|
import net.dv8tion.jda.api.events.user.update.GenericUserPresenceEvent;
|
2022-03-24 04:10:50 +00:00
|
|
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
2022-03-28 05:42:03 +00:00
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
|
|
|
|
import java.util.Timer;
|
|
|
|
import java.util.TimerTask;
|
2022-03-24 04:10:50 +00:00
|
|
|
|
|
|
|
import static moe.oko.Kiafumi.Kiafumi.info;
|
|
|
|
|
2022-03-24 04:28:51 +00:00
|
|
|
/**
|
|
|
|
* Main Listener
|
|
|
|
* Used for all utility garbage like guild handling and persistence. (Also LOL prevention).
|
|
|
|
*/
|
2022-03-24 04:10:50 +00:00
|
|
|
public class MainListener extends ListenerAdapter {
|
|
|
|
|
2022-03-24 04:28:51 +00:00
|
|
|
/**
|
|
|
|
* GuildJoin event listener, that ensures that a discord has a profile created for it.
|
|
|
|
* @param event - event to be handled...
|
|
|
|
*/
|
2022-03-24 04:10:50 +00:00
|
|
|
@Override
|
2022-03-28 05:42:03 +00:00
|
|
|
public void onGuildJoin(@NotNull GuildJoinEvent event) {
|
2022-03-24 04:10:50 +00:00
|
|
|
//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());
|
2022-03-26 05:04:24 +00:00
|
|
|
Kiafumi.instance.getServerManager().createNewDefaultServer(event.getGuild());
|
2022-03-27 06:04:24 +00:00
|
|
|
Kiafumi.instance.registerForGuild(event.getGuild());
|
2022-03-24 04:10:50 +00:00
|
|
|
}
|
|
|
|
|
2022-03-28 05:42:03 +00:00
|
|
|
/**
|
|
|
|
* 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." +
|
|
|
|
" Guilds Active: " + event.getGuildAvailableCount() + " Guilds Unavailable: " + event.getGuildUnavailableCount());
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Game Prevention, is a global mechanic :^)
|
|
|
|
* @param event - GenericUserPresenceEvent event to be used.
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
public void onGenericUserPresence(@NotNull GenericUserPresenceEvent event) {
|
|
|
|
if(Kiafumi.instance.config.isGamePreventionEnabled()) {
|
|
|
|
//Proceed.
|
|
|
|
if(event.getMember().getActivities().contains(Activity.playing(Kiafumi.instance.config.getGameToPrevent()))) {
|
|
|
|
//THEY ARE PLAYING THE BIG BAD GAME!!!! WARN THE MIMMEDIATELYOYUITHTHHT
|
|
|
|
event.getMember().getUser().openPrivateChannel().complete().sendMessage("**YOU ARE PLAYING THE BIG BAD GAME STOP STOP STOP** " +
|
|
|
|
"(in " + Kiafumi.instance.config.getGameCheckTime() + " minutes i wll EVAPORATE you from every server i am IN.").queue();
|
|
|
|
Timer timer = new Timer();
|
|
|
|
int timeInMilisToKill = (Kiafumi.instance.config.getGameCheckTime() * 60) * 1000;
|
|
|
|
timer.schedule(new TimerTask() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
if(event.getMember().getActivities().contains(Activity.playing(Kiafumi.instance.config.getGameToPrevent()))) {
|
|
|
|
event.getMember().getUser().openPrivateChannel().complete().sendMessage("**I warned you, NOW SUFFER MY RAGE**").queue();
|
|
|
|
for(Guild guild : event.getJDA().getGuilds()) {
|
|
|
|
if(guild.isMember(event.getMember().getUser())) {
|
|
|
|
guild.ban(guild.getMember(event.getMember().getUser()), 0, "PLAYED A HORRIBLE GAME").queue();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
event.getMember().getUser().openPrivateChannel().complete().sendMessage("Thank you for not playing that shitty game anymore.").queue();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}, timeInMilisToKill);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-03-24 04:10:50 +00:00
|
|
|
}
|