Allowed multiple users to be added/removed to/from multiple roles, fixed outstanding bugs/errors, moved pandorabots api to module, made pandorabots api per server rather than global, added shutdown command which saves all data and safely ends JDA process
This commit is contained in:
parent
634d96b426
commit
46d1c70da6
@ -38,4 +38,4 @@ compileJava.options.encoding = 'UTF-8'
|
||||
compileJava.options.fork = true
|
||||
|
||||
// Change this if you are getting errors building
|
||||
compileJava.options.forkOptions.executable = 'C:\\Program Files\\Java\\jdk1.8.0_131\\bin\\javac.exe'
|
||||
compileJava.options.forkOptions.executable = 'C:\\Program Files\\Java\\jdk1.8.0_144\\bin\\javac.exe'
|
@ -19,6 +19,7 @@ import me.savvy.rixa.commands.mod.DeleteMessagesCommand;
|
||||
import me.savvy.rixa.commands.mod.MuteCommand;
|
||||
import me.savvy.rixa.commands.mod.PurgeMessagesCommand;
|
||||
import me.savvy.rixa.commands.mod.RaidModeCommand;
|
||||
import me.savvy.rixa.commands.owner.OwnerCommand;
|
||||
import me.savvy.rixa.data.database.sql.other.DatabaseTables;
|
||||
import me.savvy.rixa.data.filemanager.ConfigManager;
|
||||
import me.savvy.rixa.data.filemanager.LanguageManager;
|
||||
@ -27,6 +28,7 @@ import me.savvy.rixa.events.MemberEvent;
|
||||
import me.savvy.rixa.events.MessageEvent;
|
||||
import me.savvy.rixa.events.Shutdown;
|
||||
import me.savvy.rixa.events.VoiceChannel;
|
||||
import me.savvy.rixa.guild.RixaGuild;
|
||||
import me.savvy.rixa.guild.management.Guilds;
|
||||
import me.savvy.rixa.modules.reactions.handlers.React;
|
||||
import me.savvy.rixa.modules.reactions.handlers.ReactionManager;
|
||||
@ -75,10 +77,6 @@ public class Rixa {
|
||||
@Setter
|
||||
private ScheduledExecutorService executorService;
|
||||
|
||||
private static ChatterBotFactory factory;
|
||||
private static ChatterBotSession chatBotSession;
|
||||
private static ChatterBot chatBot;
|
||||
|
||||
// String search = event.getMessage().getContent().substring(event.getMessage().getContent().indexOf(" ") + 1);
|
||||
public static void main(String[] args) {
|
||||
instance = new Rixa();
|
||||
@ -142,15 +140,8 @@ public class Rixa {
|
||||
new BatchMoveCommand(), new MuteCommand(), new MusicCommand(),
|
||||
new ConfigCommand(), new UrbanDictionaryCommand(), new YoutubeCommand(),
|
||||
new AddRoleCommand(), new RemoveRoleCommand(), new LevelsCommand(),
|
||||
new LeaderboardCommand(), new RaidModeCommand());
|
||||
new LeaderboardCommand(), new RaidModeCommand(), new OwnerCommand());
|
||||
register(new HelpReaction(), new ConfigReaction(), new LeaderboardReaction());
|
||||
try {
|
||||
factory = new ChatterBotFactory();
|
||||
chatBot = factory.create(ChatterBotType.PANDORABOTS, "b0dafd24ee35a477");
|
||||
chatBotSession = chatBot.createSession();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static void register(CommandExec... commandExecs) {
|
||||
@ -165,10 +156,6 @@ public class Rixa {
|
||||
}
|
||||
}
|
||||
|
||||
public static ChatterBotSession getChatBotSession() {
|
||||
return chatBotSession;
|
||||
}
|
||||
|
||||
public Logger getLogger() {
|
||||
return Logger.getLogger("Rixa");
|
||||
}
|
||||
@ -179,7 +166,7 @@ public class Rixa {
|
||||
|
||||
public void close() {
|
||||
try {
|
||||
Guilds.getGuilds().values().parallelStream().forEach((rixaGuild) -> rixaGuild.save());
|
||||
Guilds.getGuilds().values().parallelStream().forEach(RixaGuild::save);
|
||||
Thread.sleep(1200);
|
||||
database.close();
|
||||
Thread.sleep(200);
|
||||
|
@ -40,9 +40,9 @@ public class AddRoleCommand implements CommandExec {
|
||||
}
|
||||
try {
|
||||
List<Role> roles = event.getMessage().getMentionedRoles();
|
||||
User user = event.getMessage().getMentionedUsers().get(0);
|
||||
event.getGuild().getController().addRolesToMember(event.getGuild().getMember(user), roles).queue();
|
||||
new MessageBuilder("Successfully given " + user.getAsMention() + " `" + roles.size() + "` role(s)").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
int users = event.getMessage().getMentionedUsers().size();
|
||||
event.getMessage().getMentionedUsers().forEach(user -> event.getGuild().getController().addRolesToMember(event.getGuild().getMember(user), roles).queue());
|
||||
new MessageBuilder("Successfully given " + users + " `" + roles.size() + "` role(s)").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
} catch (PermissionException ex) {
|
||||
new MessageBuilder(event.getMember().getAsMention() + ", sorry I do not have permission for this!").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
}
|
||||
|
@ -40,9 +40,9 @@ public class RemoveRoleCommand implements CommandExec {
|
||||
}
|
||||
try {
|
||||
List<Role> roles = event.getMessage().getMentionedRoles();
|
||||
User user = event.getMessage().getMentionedUsers().get(0);
|
||||
event.getGuild().getController().removeRolesFromMember(event.getGuild().getMember(user), roles).queue();
|
||||
new MessageBuilder("Successfully removed `" + roles.size() + "` role(s) from " + user.getAsMention() + "!").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
int users = event.getMessage().getMentionedUsers().size();
|
||||
event.getMessage().getMentionedUsers().forEach(user -> event.getGuild().getController().removeRolesFromMember(event.getGuild().getMember(user), roles).queue());
|
||||
new MessageBuilder("Successfully removed `" + roles.size() + "` role(s) from " + users + " user(s)!").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
} catch (PermissionException ex) {
|
||||
new MessageBuilder(event.getMember().getAsMention() + ", sorry I do not have permission for this!").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
}
|
||||
|
29
src/main/java/me/savvy/rixa/commands/owner/OwnerCommand.java
Normal file
29
src/main/java/me/savvy/rixa/commands/owner/OwnerCommand.java
Normal file
@ -0,0 +1,29 @@
|
||||
package me.savvy.rixa.commands.owner;
|
||||
|
||||
import me.savvy.rixa.Rixa;
|
||||
import me.savvy.rixa.commands.handlers.Command;
|
||||
import me.savvy.rixa.commands.handlers.CommandExec;
|
||||
import me.savvy.rixa.commands.handlers.CommandType;
|
||||
import me.savvy.rixa.utils.MessageBuilder;
|
||||
import net.dv8tion.jda.core.entities.ChannelType;
|
||||
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
|
||||
|
||||
public class OwnerCommand implements CommandExec {
|
||||
|
||||
@Override
|
||||
@Command(mainCommand = "shutdown",
|
||||
description = "Shutdown Rixa instance, save all data.",
|
||||
channelType = ChannelType.TEXT,
|
||||
showInHelp = false,
|
||||
type = CommandType.BOT_OWNER)
|
||||
public void execute(GuildMessageReceivedEvent event) {
|
||||
if (!Rixa.getConfig().getJsonObject().getJSONArray("botAdmins").toList().contains(event.getMember().getUser().getId())) {
|
||||
new MessageBuilder(event.getMember().getAsMention() + ", you do not have permission for this command.")
|
||||
.setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
return;
|
||||
}
|
||||
Rixa.getInstance().close();
|
||||
Rixa.getInstance().exit();
|
||||
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ import me.savvy.rixa.commands.handlers.CommandHandler;
|
||||
import me.savvy.rixa.commands.handlers.CommandRegistrar;
|
||||
import me.savvy.rixa.guild.RixaGuild;
|
||||
import me.savvy.rixa.guild.management.Guilds;
|
||||
import me.savvy.rixa.modules.conversations.ConversationModule;
|
||||
import me.savvy.rixa.modules.levels.LevelsModule;
|
||||
import me.savvy.rixa.modules.reactions.handlers.ReactRegistrar;
|
||||
import me.savvy.rixa.modules.reactions.handlers.ReactionManager;
|
||||
@ -43,13 +44,15 @@ public class MessageEvent {
|
||||
if (event.getGuild() == null) return;
|
||||
if (event.getAuthor().isBot()) return;
|
||||
|
||||
RixaGuild rixaGuild = Guilds.getGuild(event.getGuild());
|
||||
|
||||
if (event.getMessage().getContent().startsWith
|
||||
("@" + event.getGuild().getSelfMember().getEffectiveName())) {
|
||||
try {
|
||||
String s = event.getMessage().getContent().replace
|
||||
("@" + event.getGuild().getSelfMember().getEffectiveName() + " ", "");
|
||||
if (s.isEmpty()) return;
|
||||
s = Rixa.getChatBotSession().think(s);
|
||||
s = ((ConversationModule) rixaGuild.getModule("Conversations")).getChatBotSession().think(s);
|
||||
if (s.isEmpty()) return;
|
||||
event.getChannel().sendMessage(s).queue();
|
||||
return;
|
||||
@ -57,15 +60,12 @@ public class MessageEvent {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
RixaGuild rixaGuild = Guilds.getGuild(event.getGuild());
|
||||
String prefix = rixaGuild
|
||||
.getGuildSettings()
|
||||
.getPrefix();
|
||||
//checkMessage(event.getMessage());
|
||||
if (!event.getMessage().getContent().startsWith(prefix)) {
|
||||
if (!(((LevelsModule) rixaGuild.getModule("Levels")).isEnabled())) {
|
||||
if (!(rixaGuild.getModule("Levels").isEnabled())) {
|
||||
return;
|
||||
}
|
||||
/*if(!event.getAuthor().getId().equalsIgnoreCase("202944101333729280") &&
|
||||
|
@ -11,6 +11,7 @@ import me.savvy.rixa.enums.Result;
|
||||
import me.savvy.rixa.guild.management.GuildSettings;
|
||||
import me.savvy.rixa.guild.management.Guilds;
|
||||
import me.savvy.rixa.modules.RixaModule;
|
||||
import me.savvy.rixa.modules.conversations.ConversationModule;
|
||||
import me.savvy.rixa.modules.levels.LevelsModule;
|
||||
import me.savvy.rixa.modules.music.MusicModule;
|
||||
import net.dv8tion.jda.core.entities.Guild;
|
||||
@ -45,8 +46,9 @@ public class RixaGuild {
|
||||
this.guild = guild;
|
||||
this.modules = new HashMap<>();
|
||||
this.db = Rixa.getDatabase();
|
||||
modules.put("Music", new MusicModule());
|
||||
modules.put("Levels", new LevelsModule());
|
||||
modules.put("Music", new MusicModule(this));
|
||||
modules.put("Levels", new LevelsModule(this));
|
||||
modules.put("Conversations", new ConversationModule(this));
|
||||
load();
|
||||
}
|
||||
|
||||
|
@ -60,6 +60,7 @@ public class GuildSettings {
|
||||
if (!optional.isPresent()) return;
|
||||
if (!(optional.get() instanceof ResultSet)) return;
|
||||
ResultSet set = (ResultSet) optional.get();
|
||||
if (set.next()) {
|
||||
this.prefix = (set.getString("prefix"));
|
||||
this.defaultRole = (set.getString("defaultRole"));
|
||||
this.joinMessage = (set.getString("joinMessage"));
|
||||
@ -73,14 +74,17 @@ public class GuildSettings {
|
||||
if (!set.getString("farewell").equalsIgnoreCase("default_value")) {
|
||||
quitMessageChannel = guild.getTextChannelById(set.getString("farewell"));
|
||||
}
|
||||
}
|
||||
query = new Query("SELECT * FROM `core` WHERE `guild_id` = ?");
|
||||
query.setString(guild.getId());
|
||||
optional = Rixa.getDatabase().send(query);
|
||||
if (!optional.isPresent()) return;
|
||||
if (!(optional.get() instanceof ResultSet)) return;
|
||||
set = (ResultSet) optional.get();
|
||||
this.description = (set.getString("description"));
|
||||
this.enlisted = (set.getBoolean("enlisted"));
|
||||
if (set.next()) {
|
||||
this.description = (set.getString("description"));
|
||||
this.enlisted = (set.getBoolean("enlisted"));
|
||||
}
|
||||
this.raidMode = false;
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,5 @@
|
||||
package me.savvy.rixa.modules;
|
||||
|
||||
import me.savvy.rixa.guild.RixaGuild;
|
||||
|
||||
/**
|
||||
* Created by Timber on 5/23/2017.
|
||||
*/
|
||||
@ -13,7 +11,7 @@ public interface RixaModule {
|
||||
|
||||
boolean isEnabled();
|
||||
|
||||
void load(RixaGuild guild);
|
||||
void load();
|
||||
|
||||
void save();
|
||||
}
|
||||
|
@ -0,0 +1,50 @@
|
||||
package me.savvy.rixa.modules.conversations;
|
||||
|
||||
import com.google.code.chatterbotapi.*;
|
||||
import me.savvy.rixa.guild.RixaGuild;
|
||||
import me.savvy.rixa.modules.RixaModule;
|
||||
|
||||
public class ConversationModule implements RixaModule {
|
||||
|
||||
private final RixaGuild rixaGuild;
|
||||
private ChatterBotFactory factory;
|
||||
private ChatterBotSession chatBotSession;
|
||||
private ChatterBot chatBot;
|
||||
|
||||
public ConversationModule(RixaGuild rixaGuild) {
|
||||
this.rixaGuild = rixaGuild;
|
||||
load();
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "ConversationModule";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Conversation API - PandoraBots";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load() {
|
||||
try {
|
||||
factory = new ChatterBotFactory();
|
||||
chatBot = factory.create(ChatterBotType.PANDORABOTS, "b0dafd24ee35a477");
|
||||
chatBotSession = chatBot.createSession();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save() {}
|
||||
|
||||
public ChatterBotSession getChatBotSession() {
|
||||
return chatBotSession;
|
||||
}
|
||||
}
|
@ -10,6 +10,9 @@ import java.util.Map;
|
||||
|
||||
public class Economy implements RixaModule {
|
||||
|
||||
public Economy(RixaGuild rixaGuild) {
|
||||
this.rixaGuild = rixaGuild;
|
||||
}
|
||||
@Getter
|
||||
private RixaGuild rixaGuild;
|
||||
@Getter
|
||||
@ -33,9 +36,7 @@ public class Economy implements RixaModule {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(RixaGuild rixaGuild) {
|
||||
this.rixaGuild = rixaGuild;
|
||||
}
|
||||
public void load() { }
|
||||
|
||||
@Override
|
||||
public void save() {
|
||||
@ -44,6 +45,6 @@ public class Economy implements RixaModule {
|
||||
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
DatabaseUtils.update("modules", "levels", "guild_id", enabled, rixaGuild.getGuild().getId());
|
||||
DatabaseUtils.update("modules", "x", "guild_id", enabled, rixaGuild.getGuild().getId());
|
||||
}
|
||||
}
|
@ -13,6 +13,7 @@ import me.savvy.rixa.utils.DatabaseUtils;
|
||||
import me.savvy.rixa.utils.MessageBuilder;
|
||||
import net.dv8tion.jda.core.entities.Member;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.*;
|
||||
@ -30,12 +31,42 @@ public class LevelsModule implements RixaModule {
|
||||
@Setter
|
||||
private boolean enabled;
|
||||
|
||||
public LevelsModule(RixaGuild rixaGuild) {
|
||||
this.rixaGuild = rixaGuild;
|
||||
load();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load() {
|
||||
try {
|
||||
Query query = new Query("SELECT * FROM `modules` WHERE `guild_id`=?;");
|
||||
query.setString(rixaGuild.getGuild().getId());
|
||||
Optional<?> o = Rixa.getDatabase().send(query);
|
||||
if (!o.isPresent()) return;
|
||||
else if (!(o.get() instanceof ResultSet)) return;
|
||||
ResultSet set = (ResultSet) o.get();
|
||||
if (set.next()) {
|
||||
setEnabled(set.getBoolean("levels"));
|
||||
} else {
|
||||
Update update = new Update("INSERT INTO `modules` (`guild_id`) VALUES (?);");
|
||||
update.setString(rixaGuild.getGuild().getId());
|
||||
Rixa.getDatabase().send(update);
|
||||
setEnabled(true);
|
||||
}
|
||||
set.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private List<UserData> leaderboard(Member member) {
|
||||
Database db = Rixa.getDatabase();
|
||||
ResultSet rs = null;
|
||||
|
||||
try {
|
||||
rs = db.getConnection().get().prepareStatement(String.format("SELECT * FROM `levels` WHERE `guild_id` = '%s' ORDER BY `experience` DESC;", member.getGuild().getId())).executeQuery();
|
||||
PreparedStatement ps = db.getConnection().get().prepareStatement("SELECT * FROM `levels` WHERE `guild_id` = ? ORDER BY `experience` DESC;");
|
||||
ps.setString(1, member.getGuild().getId());
|
||||
rs = ps.executeQuery();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -98,30 +129,6 @@ public class LevelsModule implements RixaModule {
|
||||
return "Rixa levels module.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(RixaGuild rixaGuild) {
|
||||
try {
|
||||
this.rixaGuild = rixaGuild;
|
||||
Query query = new Query("SELECT * FROM `modules` WHERE `guild_id`=?;");
|
||||
query.setString(rixaGuild.getGuild().getId());
|
||||
Optional<?> o = Rixa.getDatabase().send(query);
|
||||
if (!o.isPresent()) return;
|
||||
else if (!(o.get() instanceof ResultSet)) return;
|
||||
ResultSet set = (ResultSet) o.get();
|
||||
if (set.next()) {
|
||||
setEnabled(set.getBoolean("levels"));
|
||||
} else {
|
||||
Update update = new Update("INSERT INTO `modules` (`guild_id`) VALUES (?);");
|
||||
update.setString(rixaGuild.getGuild().getId());
|
||||
Rixa.getDatabase().send(update);
|
||||
setEnabled(true);
|
||||
}
|
||||
set.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save() {
|
||||
DatabaseUtils.update("modules", "levels", "guild_id", enabled, rixaGuild.getGuild().getId());
|
||||
|
@ -20,6 +20,9 @@ import java.util.Optional;
|
||||
*/
|
||||
public class MusicModule implements RixaModule {
|
||||
|
||||
public MusicModule(RixaGuild rixaGuild) {
|
||||
this.guild = rixaGuild.getGuild();
|
||||
}
|
||||
private Database db;
|
||||
@Getter
|
||||
@Setter
|
||||
@ -31,9 +34,8 @@ public class MusicModule implements RixaModule {
|
||||
private Guild guild;
|
||||
|
||||
@Override
|
||||
public void load(RixaGuild rixaGuild) {
|
||||
public void load() {
|
||||
try {
|
||||
this.guild = rixaGuild.getGuild();
|
||||
this.enabled = false;
|
||||
this.musicRole = "default_value";
|
||||
db = Rixa.getDatabase();
|
||||
|
@ -62,7 +62,7 @@ public class TwitterModule implements RixaModule {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(RixaGuild guild) { }
|
||||
public void load() { }
|
||||
|
||||
@Override
|
||||
public void save() { }
|
||||
|
@ -13,6 +13,7 @@ import java.util.Optional;
|
||||
public class DatabaseUtils {
|
||||
|
||||
public static Result update(String table, String setting, String key, Object placeholder, Object placeholder2) {
|
||||
|
||||
Update update = new Update("UPDATE `" + table + "` SET `" + setting + "` = ? WHERE `" + key + "` = ?;");
|
||||
update.setObject(placeholder);
|
||||
update.setObject(placeholder2);
|
||||
|
Loading…
Reference in New Issue
Block a user