Added levels, fixed a few bugs
This commit is contained in:
@@ -12,6 +12,7 @@ import net.dv8tion.jda.core.entities.Member;
|
||||
import net.dv8tion.jda.core.entities.Role;
|
||||
import net.dv8tion.jda.core.entities.TextChannel;
|
||||
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
|
||||
import net.dv8tion.jda.core.managers.GuildManager;
|
||||
import org.apache.commons.lang3.EnumUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -174,10 +175,10 @@ public class ConfigCommand implements CommandExec {
|
||||
if (messages[2].equalsIgnoreCase("music")) {
|
||||
RixaGuild.getGuild(event.getGuild()).getMusicModule().setEnabled(true);
|
||||
new MessageBuilder("Successfully enabled the music module!").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
} /*else if (messages[2].equalsIgnoreCase("levels")) {
|
||||
GuildManager.getGuild(event.getGuild().getId()).getLevels().setEnabled(true);
|
||||
event.getChannel().sendMessage("Successfully enabled the `Levels` module").queue();
|
||||
}*/ else if (messages[2].equalsIgnoreCase("joinverification")) {
|
||||
} else if (messages[2].equalsIgnoreCase("levels")) {
|
||||
RixaGuild.getGuild(event.getGuild()).getLevelsModule().setEnabled(true);
|
||||
event.getChannel().sendMessage("Successfully enabled the levels module").queue();
|
||||
} else if (messages[2].equalsIgnoreCase("joinverification")) {
|
||||
RixaGuild.getGuild(event.getGuild()).getGuildSettings().setJoinVerification(true);
|
||||
new MessageBuilder("Successfully enabled Join Verification!").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
}
|
||||
@@ -185,10 +186,10 @@ public class ConfigCommand implements CommandExec {
|
||||
if (messages[2].equalsIgnoreCase("music")) {
|
||||
RixaGuild.getGuild(event.getGuild()).getMusicModule().setEnabled(false);
|
||||
new MessageBuilder("Successfully disabled the music module!").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
}/* else if (messages[2].equalsIgnoreCase("levels")) {
|
||||
GuildManager.getGuild(event.getGuild().getId()).getLevels().setEnabled(false);
|
||||
event.getChannel().sendMessage("Successfully disabled the `Levels` module").queue();
|
||||
}*/ else if (messages[2].equalsIgnoreCase("joinverification")) {
|
||||
} else if (messages[2].equalsIgnoreCase("levels")) {
|
||||
RixaGuild.getGuild(event.getGuild()).getLevelsModule().setEnabled(false);
|
||||
event.getChannel().sendMessage("Successfully disabled the levels module").queue();
|
||||
} else if (messages[2].equalsIgnoreCase("joinverification")) {
|
||||
RixaGuild.getGuild(event.getGuild()).getGuildSettings().setJoinVerification(false);
|
||||
new MessageBuilder("Successfully disabled Join Verification!").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
}
|
||||
|
@@ -0,0 +1,9 @@
|
||||
package me.savvy.rixa.commands.admin;
|
||||
|
||||
public class LevelsManagementCommand {
|
||||
|
||||
// xp give/add <user> <amount>
|
||||
// xp take/remove <user> <amount>
|
||||
// xp set <user> <amount>
|
||||
// xp convert <type> <user/all>
|
||||
}
|
@@ -10,6 +10,7 @@ import net.dv8tion.jda.core.entities.ChannelType;
|
||||
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Created by savit on 7/11/2017.
|
||||
@@ -27,6 +28,11 @@ public class LevelsCommand implements CommandExec {
|
||||
return;
|
||||
}
|
||||
UserData data = rixaGuild.getLevelsModule().getUserData(event.getAuthor().getId());
|
||||
// Map<UserData, Integer> newMap = new HashMap<>();
|
||||
// rixaGuild.getLevelsModule().getUserData().forEach((s, userData) -> {
|
||||
// newMap.put(userData, userData.getExperience());
|
||||
// });
|
||||
// sortHashMapByValues(newMap);
|
||||
new MessageBuilder()
|
||||
.setAuthor(event.getAuthor().getName(), event.getAuthor().getEffectiveAvatarUrl(), event.getAuthor().getEffectiveAvatarUrl())
|
||||
.setTitle(event.getAuthor().getName() + "'s level")
|
||||
@@ -39,4 +45,32 @@ public class LevelsCommand implements CommandExec {
|
||||
.addField("Total Exp", String.valueOf(data.getExperience()), false)
|
||||
.queue(event.getChannel());
|
||||
}
|
||||
|
||||
public LinkedHashMap<UserData, Integer> sortHashMapByValues(
|
||||
Map<UserData, Integer> passedMap) {
|
||||
List<UserData> mapKeys = new ArrayList<>(passedMap.keySet());
|
||||
List<Integer> mapValues = new ArrayList<>(passedMap.values());
|
||||
Collections.sort(mapValues);
|
||||
//Collections.sort(mapKeys);
|
||||
|
||||
|
||||
LinkedHashMap<UserData, Integer> sortedMap =
|
||||
new LinkedHashMap<>();
|
||||
|
||||
for (Integer val : mapValues) {
|
||||
Iterator<UserData> keyIt = mapKeys.iterator();
|
||||
|
||||
while (keyIt.hasNext()) {
|
||||
UserData key = keyIt.next();
|
||||
Integer comp1 = passedMap.get(key);
|
||||
|
||||
if (comp1.equals(val)) {
|
||||
keyIt.remove();
|
||||
sortedMap.put(key, val);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return sortedMap;
|
||||
}
|
||||
}
|
||||
|
@@ -92,7 +92,7 @@ public class MusicCommand implements CommandExec {
|
||||
if(message.length == 1) {
|
||||
sendHelp();
|
||||
} else if (message.length == 2) {
|
||||
if(message[1].equalsIgnoreCase("join")) {
|
||||
if(message[1].equalsIgnoreCase("join") || message[1].equalsIgnoreCase("summon") ) {
|
||||
if (event.getMember().getVoiceState().getChannel() == null) {
|
||||
new MessageBuilder("You must be in a voice channel to summon me!").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
return;
|
||||
@@ -114,16 +114,14 @@ public class MusicCommand implements CommandExec {
|
||||
new MessageBuilder("The audio queue is empty! Add a track to the queue first!").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
}
|
||||
} else if (message[1].equalsIgnoreCase("leave")) {
|
||||
new MessageBuilder("Leaving voice channel.").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
guild.getAudioManager().setSendingHandler(null);
|
||||
|
||||
String desc = "";
|
||||
AudioTrack track = scheduler.nextTrack();
|
||||
if(track != null) {
|
||||
new MessageBuilder("The current track has been skipped. Now Playiguild.getAudioManager().closeAudioConnection();\n" +
|
||||
" } else if(message[1].equalsIgnoreCase(\"skip\")) {ng: " + track.getInfo().title).setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
} else {
|
||||
new MessageBuilder("Track Skipped. Queue Complete").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
desc += "Track skipped. ";
|
||||
}
|
||||
new MessageBuilder(desc + " Leaving voice channel...").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
guild.getAudioManager().setSendingHandler(null);
|
||||
guild.getAudioManager().closeAudioConnection();
|
||||
} else if(message[1].equalsIgnoreCase("link")) {
|
||||
if (player.getPlayingTrack() == null) {
|
||||
new MessageBuilder("There is no track currently playing.").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
@@ -242,7 +240,18 @@ public class MusicCommand implements CommandExec {
|
||||
}
|
||||
}
|
||||
} else if(message[1].equalsIgnoreCase("play") || message[1].equalsIgnoreCase("playlist")) {
|
||||
loadAndPlay(mng, event.getChannel(), message[2], false);
|
||||
if (event.getMember().getVoiceState().getChannel() == null) {
|
||||
new MessageBuilder("You must be in a voice channel to summon me!").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
return;
|
||||
}
|
||||
try {
|
||||
guild.getAudioManager().openAudioConnection(event.getMember().getVoiceState().getChannel());
|
||||
loadAndPlay(mng, event.getChannel(), message[2], false);
|
||||
} catch (PermissionException e) {
|
||||
if (e.getPermission() == Permission.VOICE_CONNECT) {
|
||||
new MessageBuilder("I do not have permission to join the requested voice channel.").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
}
|
||||
}
|
||||
} else if(message[1].equalsIgnoreCase("vol") || message[1].equalsIgnoreCase("volume")) {
|
||||
try {
|
||||
int newVolume = Math.max(10, Math.min(100, Integer.parseInt(message[2])));
|
||||
@@ -254,8 +263,34 @@ public class MusicCommand implements CommandExec {
|
||||
}
|
||||
}
|
||||
} // music youtube <query
|
||||
if(message.length >= 3) {
|
||||
if(message[1].equalsIgnoreCase("youtube") || message[1].equalsIgnoreCase("yt") || message[1].equalsIgnoreCase("search")
|
||||
else if(message.length >= 3) {
|
||||
if(message[1].equalsIgnoreCase("join")) {
|
||||
VoiceChannel chan = null;
|
||||
String channelName = getMessage(message, 2);
|
||||
if (guild.getVoiceChannelsByName(channelName, true).size() >= 1) {
|
||||
chan = guild.getVoiceChannelsByName(channelName, true).get(0);
|
||||
} else {
|
||||
for (VoiceChannel voiceChannel : guild.getVoiceChannels()) {
|
||||
if (voiceChannel.getName().contains(channelName) || voiceChannel.getId().equalsIgnoreCase(channelName)) {
|
||||
chan = voiceChannel;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (chan == null) {
|
||||
new MessageBuilder("Sorry I was unable to find the VoiceChannel: `" + message[2] + "`.").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
} else {
|
||||
guild.getAudioManager().setSendingHandler(mng.sendHandler);
|
||||
try {
|
||||
new MessageBuilder("Entering Voice Channel: " + chan.getName()).setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
guild.getAudioManager().openAudioConnection(chan);
|
||||
} catch (PermissionException e) {
|
||||
if (e.getPermission() == Permission.VOICE_CONNECT) {
|
||||
new MessageBuilder("I do not have permission to join the requested voice channel.").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if(message[1].equalsIgnoreCase("youtube") || message[1].equalsIgnoreCase("yt") || message[1].equalsIgnoreCase("search")
|
||||
|| message[1].equalsIgnoreCase("ytsearch")) {
|
||||
String search = getMessage(message, 2);
|
||||
try {
|
||||
|
@@ -25,6 +25,9 @@ public class CommandHandler {
|
||||
return true;
|
||||
} else {
|
||||
for (CommandRegistrar commandRegistrar : getCommands().values()) {
|
||||
if (commandRegistrar.getAnnotation().mainCommand().equalsIgnoreCase(s)) {
|
||||
return true;
|
||||
}
|
||||
for (String string : commandRegistrar.getAnnotation().aliases()) {
|
||||
if (string.equalsIgnoreCase(s)) return true;
|
||||
}
|
||||
|
@@ -112,8 +112,10 @@ public class DatabaseManager {
|
||||
PreparedStatement ps = connection.prepareStatement(string);
|
||||
ResultSet rs = ps.executeQuery();
|
||||
if(rs.next()) {
|
||||
rs.close();
|
||||
return Result.TRUE;
|
||||
}else {
|
||||
rs.close();
|
||||
return Result.FALSE;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
|
@@ -73,7 +73,6 @@ public class MySQL extends Database {
|
||||
}
|
||||
|
||||
Class.forName("com.mysql.jdbc.Driver");
|
||||
// Class.forName("com.mysql.cj.jdbc.Driver");
|
||||
connection = DriverManager.getConnection(connectionURL,
|
||||
this.user, this.password);
|
||||
return connection;
|
||||
|
@@ -45,10 +45,10 @@ public class MessageEvent {
|
||||
if (!(rixaGuild.getLevelsModule().isEnabled())) {
|
||||
return;
|
||||
}
|
||||
if(!event.getAuthor().getId().equalsIgnoreCase("202944101333729280") &&
|
||||
/*if(!event.getAuthor().getId().equalsIgnoreCase("202944101333729280") &&
|
||||
!event.getAuthor().getId().equalsIgnoreCase("207322957075185665")) {
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
if(rixaGuild.getLevelsModule().getUserData(event.getAuthor().getId()).awardIfCan()) {
|
||||
new MessageBuilder(event.getAuthor().getAsMention() + " has leveled up to level " +
|
||||
rixaGuild.getLevelsModule().getUserData(event.getAuthor().getId()).getLevel())
|
||||
|
@@ -1,10 +1,17 @@
|
||||
package me.savvy.rixa.modules.levels;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import me.savvy.rixa.Rixa;
|
||||
import me.savvy.rixa.commands.handlers.RixaPermission;
|
||||
import me.savvy.rixa.enums.Result;
|
||||
import me.savvy.rixa.guild.RixaGuild;
|
||||
import me.savvy.rixa.guild.user.UserData;
|
||||
import me.savvy.rixa.modules.RixaModule;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -20,6 +27,7 @@ public class LevelsModule implements RixaModule {
|
||||
public LevelsModule(RixaGuild rixaGuild) {
|
||||
this.rixaGuild = rixaGuild;
|
||||
enabled = true;
|
||||
load();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -52,4 +60,42 @@ public class LevelsModule implements RixaModule {
|
||||
(getRixaGuild().getGuild().getJDA().getUserById(key),
|
||||
getRixaGuild().getGuild());
|
||||
}
|
||||
|
||||
private void load() {
|
||||
if (!(checkExists())) {
|
||||
this.enabled = true;
|
||||
insert();
|
||||
}
|
||||
String query = "SELECT `levels` FROM `modules` WHERE `guild_id` = ?;";
|
||||
PreparedStatement ps = null;
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
ps = Rixa.getDbManager().getConnection().prepareStatement(query);
|
||||
ps.setString(1, getRixaGuild().getGuild().getId());
|
||||
rs = Rixa.getDbManager().getObject(ps);
|
||||
this.enabled = rs.getBoolean("levels");
|
||||
ps.close();
|
||||
rs.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkExists() {
|
||||
String query = "SELECT `%s` FROM `%s` WHERE `%s` = '%s';";
|
||||
Result r = Rixa.getDbManager().checkExists(String.format
|
||||
(query, "guild_id", "modules", "guild_id", rixaGuild.getGuild().getId()));
|
||||
return r == Result.TRUE;
|
||||
}
|
||||
|
||||
private void insert() {
|
||||
String query = "INSERT INTO `%s` (`%s`) VALUES ('%s');";
|
||||
Rixa.getDbManager()
|
||||
.insert(String.format(query, "modules", "guild_id", rixaGuild.getGuild().getId()));
|
||||
}
|
||||
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
Rixa.getData().update("modules", "enabled", "guild_id", enabled, rixaGuild.getGuild().getId());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user