+ Added superintendent

This commit is contained in:
Matthew Cech
2019-05-08 20:20:02 -07:00
parent 5df0b8cc2e
commit 2b90078aac
3 changed files with 102 additions and 82 deletions
+95
View File
@@ -0,0 +1,95 @@
package main;
import core.DatabaseManager;
import core.LocCommands;
import core.LocStrings;
import core.RPManager;
import core.Stats;
import dataStructures.KittyChannel;
import dataStructures.KittyGuild;
import dataStructures.KittyRole;
import dataStructures.KittyUser;
import dataStructures.Response;
import dataStructures.UserInput;
import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import offline.Ref;
// Manages the fiddly bits and upkeep of the bot - while not
public class Superintendent
{
// This is run on the JDA GuildMessageReceivedEvent before anything else happens.
public static boolean PreProcessSetup(GuildMessageReceivedEvent event, Stats stats)
{
// Verify we have an event
if(event == null)
return false;
// Track number of messages seen
stats.NoteMessageEvent();
// If we're mid-shutdown, no more commands.
if(stats.GetIsShuttingDown())
return false;
// Swat down highest ban level immediately before even hitting command parsing.
for(int i = 0; i < Ref.alwaysIgnore.length; ++i)
{
String id = event.getAuthor().getId();
if(id.equals(Ref.alwaysIgnore[i]))
return false;
}
return true;
}
// This runs after all the objects have been constructed!
// Modifications to objects here stick!
public static boolean PostProcessSetup(GuildMessageReceivedEvent event, KittyUser user, KittyGuild guild, KittyChannel channel, Response res, UserInput input)
{
// Verify we have everything. From here out, we promise we have that all.
if(event == null || user == null || guild == null || channel == null || res == null || input == null)
return false;
// If the guild member is the owner, give them admin role by default.
if(event.getMember().isOwner())
user.ChangeRole(KittyRole.Admin);
// Give devs the dev role
for(int i = 0; i < Ref.devIDs.length; ++i)
{
if(event.getAuthor().getId().equals(Ref.devIDs[i]))
{
user.ChangeRole(KittyRole.Dev);
break;
}
}
return true;
}
// This is for stuff that we need to do on a regular basis, but don't
// necessarily want running at all points in time.
// Happens just after the command / plugin runs.
public static boolean PerCommandUpkeepPost(JDA bot, DatabaseManager databaseManager)
{
// Upkeep database
databaseManager.Upkeep();
// Update command-specific
RPManager.Upkeep(bot);
return true;
}
// Only called once per command. Good for lazily updating.
// Happens just before the command / plugin runs.
public static boolean PerCommandUpkeepPre()
{
// Upkeep localization system's file monitoring
LocStrings.Upkeep();
LocCommands.Upkeep();
return true;
}
}