Fixed all outstanding issues
This commit is contained in:
277
src/main/java/io/rixa/bot/commands/cmds/admin/ConfigCommand.java
Normal file
277
src/main/java/io/rixa/bot/commands/cmds/admin/ConfigCommand.java
Normal file
@@ -0,0 +1,277 @@
|
||||
package io.rixa.bot.commands.cmds.admin;
|
||||
|
||||
import io.rixa.bot.commands.Command;
|
||||
import io.rixa.bot.commands.perms.RixaPermission;
|
||||
import io.rixa.bot.guild.RixaGuild;
|
||||
import io.rixa.bot.guild.manager.GuildManager;
|
||||
import io.rixa.bot.guild.modules.module.MusicModule;
|
||||
import io.rixa.bot.pagination.Pagination;
|
||||
import io.rixa.bot.user.RixaUser;
|
||||
import io.rixa.bot.user.manager.UserManager;
|
||||
import io.rixa.bot.utils.DiscordUtils;
|
||||
import io.rixa.bot.utils.MessageFactory;
|
||||
import net.dv8tion.jda.core.entities.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class ConfigCommand extends Command {
|
||||
|
||||
private Pagination pagination;
|
||||
public ConfigCommand(String command, RixaPermission rixaPermission, String description) {
|
||||
super(command, rixaPermission, description);
|
||||
|
||||
pagination = new Pagination(Arrays.asList(
|
||||
"%pconfig set greetings ; Set channel where greeting messages are announced!",
|
||||
"%pconfig set farewell ; Set channel where farewell messages are announced!",
|
||||
"%pconfig set prefix <prefix> ; Set Rixa's command prefix!",
|
||||
"%pconfig set defaultRole <role> ; Set role to be assigned when a user joins the server!",
|
||||
"%pconfig set muteRole <role> ; Set role to be assigned when a user is muted!",
|
||||
"%pconfig set musicRole <musicRole> ; Set role required to use the music functions! (Not required)",
|
||||
|
||||
/* "%pconfig set twitterCKey <key> ; Set Twitter Consumer Key!",
|
||||
"%pconfig set twitterCSecret <key> ; Set Twitter Consumer Secret!",
|
||||
"%pconfig set twitterAToken <key> ; Set Twitter Access Key!",
|
||||
"%pconfig set twitterASecret <key> ; Set Twitter Access Secret!",
|
||||
"%config set twitterChannel ; Set the channel for Twitter feed updates!",*/
|
||||
|
||||
"%pconfig set joinMessage <joinMessage> ; Set the greetings message for when a user joins the server!",
|
||||
"%pconfig set quitMessage <quitMessage> ; Set the quit message for when a user leaves the server!",
|
||||
"%pconfig set joinPm <joinPm> ; Set the message to be private messaged when a user joins!",
|
||||
"%pconfig set description <description> ; Set your server description!",
|
||||
"%pconfig addPerm <role> <permission> ; Give a role permission to access a command!",
|
||||
"%pconfig removePerm <role> <permission> ; Remove a role's permission to access a command!",
|
||||
"%pconfig enable <module> ; Enabled a Rixa Module!",
|
||||
"%pconfig disable <module> ; Disable a Rixa Module!"
|
||||
), 6);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(String commandLabel, Guild guild, Member member, TextChannel channel, String[] args) {
|
||||
RixaGuild rixaGuild = GuildManager.getInstance().getGuild(guild);
|
||||
if (args.length == 1) {
|
||||
switch (args[0].toLowerCase()) {
|
||||
case "set":
|
||||
if (args[1].equalsIgnoreCase("greetings")) {
|
||||
rixaGuild.getSettings().setGreetings(channel);
|
||||
MessageFactory.create(channel.getAsMention()).setAuthor("Updated Greetings Channel",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
} else if (args[1].equalsIgnoreCase("farewell")) {
|
||||
rixaGuild.getSettings().setFarewell(channel);
|
||||
MessageFactory.create(channel.getAsMention()).setAuthor("Updated Farewell Channel",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (args.length < 2) {
|
||||
sendHelp(member, 1, rixaGuild.getSettings().getPrefix());
|
||||
return;
|
||||
}
|
||||
String string = join(args, 2, args.length);
|
||||
Role role;
|
||||
switch (args[0].toLowerCase()) {
|
||||
case "set":
|
||||
if (args[1].equalsIgnoreCase("muteRole") ||
|
||||
args[1].equalsIgnoreCase("musicRole") ||
|
||||
args[1].equalsIgnoreCase("defaultRole")) {
|
||||
role = DiscordUtils.searchFirstRole(guild, string);
|
||||
if (role == null) {
|
||||
MessageFactory.create("Sorry I could not find that role!")
|
||||
.setColor(member.getColor()).setTimestamp().queue(channel);
|
||||
// Role not found
|
||||
return;
|
||||
}
|
||||
switch(args[1].toLowerCase()) {
|
||||
case "muterole":
|
||||
rixaGuild.getSettings().setMuteRole(role);
|
||||
break;
|
||||
case "musicrole":
|
||||
((MusicModule) rixaGuild.getModule("Music")).setMusicRole(role);
|
||||
break;
|
||||
case "defaultrole":
|
||||
rixaGuild.getSettings().setDefaultRole(role);
|
||||
break;
|
||||
}
|
||||
// Role set
|
||||
MessageFactory.create(role.getAsMention()).setAuthor("Updated Role",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
} else if (args[1].equalsIgnoreCase("joinMessage")) {
|
||||
rixaGuild.getSettings().setJoinMessage(string);
|
||||
MessageFactory.create(string).setAuthor("Updated Join Message",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
} else if (args[1].equalsIgnoreCase("quitMessage")) {
|
||||
rixaGuild.getSettings().setQuitMessage(string);
|
||||
MessageFactory.create(string).setAuthor("Updated Quit Message",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
} else if (args[1].equalsIgnoreCase("joinPm")) {
|
||||
rixaGuild.getSettings().setJoinPrivateMessage(string);
|
||||
MessageFactory.create(string).setAuthor("Updated Join Private Message",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
} else if (args[1].equalsIgnoreCase("description")) {
|
||||
rixaGuild.setDescription(string);
|
||||
MessageFactory.create(string).setAuthor("Updated Guild Server Description",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
} else if (args[1].equalsIgnoreCase("prefix")) {
|
||||
rixaGuild.getSettings().setPrefix(string);
|
||||
MessageFactory.create(string).setAuthor("Updated Command Prefix",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
} else {
|
||||
sendHelp(member, 1, rixaGuild.getSettings().getPrefix());
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case "enable":
|
||||
if (rixaGuild.isRegistered(args[1].toLowerCase())) {
|
||||
rixaGuild.getModule(args[1].toLowerCase()).setEnabled(true);
|
||||
MessageFactory.create(args[1].toLowerCase()).setAuthor("Module Enabled",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
} else if (args[1].equalsIgnoreCase("joinVerification")) {
|
||||
rixaGuild.getSettings().setJoinVerification(true);
|
||||
MessageFactory.create(args[1].toLowerCase()).setAuthor("Module Enabled",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
} else {
|
||||
MessageFactory.create(args[1].toLowerCase()).setAuthor("Module Not Found",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
}
|
||||
break;
|
||||
case "disable":
|
||||
if (rixaGuild.isRegistered(args[1])) {
|
||||
rixaGuild.getModule(args[1]).setEnabled(false);
|
||||
MessageFactory.create(args[1]).setAuthor("Module Disabled",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
} else if (args[1].equalsIgnoreCase("joinMessage")) {
|
||||
rixaGuild.getSettings().setJoinMessage("default_value");
|
||||
MessageFactory.create(args[1]).setAuthor("Module Disabled",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
} else if (args[1].equalsIgnoreCase("quitMessage")) {
|
||||
rixaGuild.getSettings().setQuitMessage("default_value");
|
||||
MessageFactory.create(args[1]).setAuthor("Module Disabled",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
} else if (args[1].equalsIgnoreCase("joinPrivateMessage")) {
|
||||
rixaGuild.getSettings().setJoinPrivateMessage("default");
|
||||
MessageFactory.create(args[1]).setAuthor("Module Disabled",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
} else if (args[1].equalsIgnoreCase("joinVerification")) {
|
||||
rixaGuild.getSettings().setJoinVerification(false);
|
||||
MessageFactory.create(args[1].toLowerCase()).setAuthor("Module Disabled",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
} else {
|
||||
MessageFactory.create(args[1].toLowerCase()).setAuthor("Module Not Found",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
}
|
||||
break;
|
||||
case "addperm":
|
||||
case "aperm":
|
||||
case "addpermission":
|
||||
case "addperms":
|
||||
case "addpermissions":
|
||||
RixaPermission permission = searchPerms(args);
|
||||
if (permission == null) {
|
||||
MessageFactory.create("That permission does not exist!").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
if (args[1].equalsIgnoreCase("role")) {
|
||||
role = DiscordUtils.searchFirstRole(guild, string);
|
||||
if (role == null) {
|
||||
MessageFactory.create("That role does not exist!").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
rixaGuild.addPermission(role.getId(), permission);
|
||||
MessageFactory.create("Role: " + role.getAsMention() + " | Permission: " +
|
||||
permission.toString()).setAuthor("Permission Given",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
if (args[1].equalsIgnoreCase("user")) {
|
||||
List<Member> targets = DiscordUtils.memberSearch(guild, string, false);
|
||||
if (targets.isEmpty()) {
|
||||
MessageFactory.create("Could not find that user!").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
RixaUser targetUser = UserManager.getInstance().getUser(targets.get(0).getUser());
|
||||
targetUser.addPermission(guild.getId(), permission);
|
||||
MessageFactory.create("User: " + targetUser.getUser().getAsMention() + " | Permission: " +
|
||||
permission.toString()).setAuthor("Permission Given",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
MessageFactory.create("Incorrect Usage! Try " + commandLabel + " addPerm <user/role> <permission>!").setColor(member.getColor())
|
||||
.queue(channel);
|
||||
break;
|
||||
case "removeperm":
|
||||
case "rperm":
|
||||
case "removepermissions":
|
||||
case "removeperms":
|
||||
permission = searchPerms(args);
|
||||
if (permission == null) {
|
||||
MessageFactory.create("That permission does not exist!").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
if (args[1].equalsIgnoreCase("role")) {
|
||||
role = DiscordUtils.searchFirstRole(guild, string);
|
||||
if (role == null) {
|
||||
MessageFactory.create("That role does not exist!").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
rixaGuild.removePermission(role.getId(), permission);
|
||||
MessageFactory.create("Role: " + role.getAsMention() + " | Permission: " +
|
||||
permission.toString()).setAuthor("Permission Revoked",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
if (args[1].equalsIgnoreCase("user")) {
|
||||
List<Member> targets = DiscordUtils.memberSearch(guild, string, false);
|
||||
if (targets.isEmpty()) {
|
||||
MessageFactory.create("Could not find that user!").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
RixaUser targetUser = UserManager.getInstance().getUser(targets.get(0).getUser());
|
||||
targetUser.removePermission(guild.getId(), permission);
|
||||
MessageFactory.create("Role: " + targetUser.getUser().getAsMention() + " | Permission: " +
|
||||
permission.toString()).setAuthor("Permission Revoked",
|
||||
guild.getIconUrl()).setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
MessageFactory.create("Incorrect Usage! Try " + commandLabel + " addPerm <user/role> <permission>!").setColor(member.getColor())
|
||||
.queue(channel);
|
||||
break;
|
||||
default:
|
||||
sendHelp(member, 1, rixaGuild.getSettings().getPrefix());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void sendHelp(Member member, int page, String prefix) {
|
||||
List<Object> objects = pagination.getPage(page);
|
||||
MessageFactory messageFactory = MessageFactory.create("\u2699" + " **Config**" +
|
||||
"\nClick the back or forward reactions to switch between pages.")
|
||||
.setTitle(String.format("Config: %s", member.getGuild().getId()));
|
||||
objects.forEach(obj -> {
|
||||
String object = obj.toString();
|
||||
messageFactory.addField(object.split(" ; ")[0].replace("%p", prefix),
|
||||
object.split(" ; ")[1], false);
|
||||
});
|
||||
messageFactory.footer("Page: (" + page + " / " + (pagination.getMaxPage()) + ")", member.getGuild().getIconUrl())
|
||||
.setColor(member.getColor()).selfDestruct(0).send(member.getUser(), success ->
|
||||
success.addReaction("\u2B05").queue(v -> success.addReaction("\u27A1").queue()));
|
||||
}
|
||||
|
||||
private RixaPermission searchPerms(String[] args) {
|
||||
for (String stringInArgs : args) {
|
||||
for (RixaPermission rixaPermission : RixaPermission.values()) {
|
||||
if (stringInArgs.equalsIgnoreCase(rixaPermission.toString())) {
|
||||
return rixaPermission;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String join(Object[] obj, int startIndex, int endIndex) {
|
||||
return StringUtils.join(obj, " ", startIndex, endIndex);
|
||||
}
|
||||
}
|
||||
@@ -33,16 +33,19 @@ public class PMCommand extends Command {
|
||||
msg = msg.replaceFirst(role.getAsMention(), "").replaceFirst("@" + role.getName(),"");
|
||||
int usersWithRole = 0;
|
||||
int sendingFailed = 0;
|
||||
String finalMsg = msg;
|
||||
for (Member memberWithRole : guild.getMembersWithRoles(role)) {
|
||||
try {
|
||||
memberWithRole.getUser().openPrivateChannel().complete().sendMessage(msg).queue();
|
||||
memberWithRole.getUser().openPrivateChannel().queue(privateChannel -> privateChannel.sendMessage(finalMsg).queue());
|
||||
usersWithRole++;
|
||||
} catch (ErrorResponseException ex) {
|
||||
if (ex.getErrorResponse() == ErrorResponse.CANNOT_SEND_TO_USER)
|
||||
sendingFailed++;
|
||||
}
|
||||
}
|
||||
MessageFactory.create("```" + msg + "```")
|
||||
MessageFactory.create(msg)
|
||||
.setAuthor("Private Message: " + role.getName(), guild.getIconUrl())
|
||||
.setTimestamp()
|
||||
.footer("Successful Deliveries: " + usersWithRole + " | Failed Deliveries: " + sendingFailed, guild.getIconUrl()).queue(channel);
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ public class AdviceCommand extends Command {
|
||||
@Override
|
||||
public void execute(String commandLabel, Guild guild, Member member, TextChannel channel, String[] args) {
|
||||
MessageFactory.create(getAdvice()).setTitle("Advice Request").footer("Requested by: " + member.getEffectiveName(), member.getUser().getEffectiveAvatarUrl())
|
||||
.setColor(member.getColor()).queue(channel);
|
||||
.setColor(member.getColor()).setTimestamp().queue(channel);
|
||||
}
|
||||
|
||||
private String getAdvice() {
|
||||
|
||||
@@ -22,9 +22,8 @@ public class FeaturesCommand extends Command {
|
||||
|
||||
@Override
|
||||
public void execute(String commandLabel, Guild guild, Member member, TextChannel channel, String[] args) {
|
||||
RixaGuild rixaGuild = GuildManager.getInstance().getGuild(guild);
|
||||
MessageFactory.create((features == null || features.length == 0) ? "There are currently no features listed." :
|
||||
"Rixa Features: " + String.join("\n", features
|
||||
)).setColor(member.getColor()).queue(channel);
|
||||
String.join("\n", features)).setAuthor("Rixa Features", guild.getIconUrl())
|
||||
.setColor(member.getColor()).queue(channel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
package io.rixa.bot.commands.cmds.general;
|
||||
|
||||
import io.rixa.bot.commands.Command;
|
||||
import io.rixa.bot.commands.perms.RixaPermission;
|
||||
import io.rixa.bot.guild.RixaGuild;
|
||||
import io.rixa.bot.guild.manager.GuildManager;
|
||||
import io.rixa.bot.guild.modules.module.LevelsModule;
|
||||
import io.rixa.bot.user.RixaUser;
|
||||
import io.rixa.bot.user.manager.UserManager;
|
||||
import io.rixa.bot.utils.DiscordUtils;
|
||||
import io.rixa.bot.utils.MessageFactory;
|
||||
import net.dv8tion.jda.core.MessageBuilder;
|
||||
import net.dv8tion.jda.core.entities.Guild;
|
||||
import net.dv8tion.jda.core.entities.Member;
|
||||
import net.dv8tion.jda.core.entities.TextChannel;
|
||||
import net.dv8tion.jda.core.entities.User;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class LeaderboardsCommand extends Command {
|
||||
|
||||
public LeaderboardsCommand(String command, RixaPermission rixaPermission, String description) {
|
||||
super(command, rixaPermission, description);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(String commandLabel, Guild guild, Member member, TextChannel channel, String[] args) {
|
||||
RixaGuild rixaGuild = GuildManager.getInstance().getGuild(guild);
|
||||
LevelsModule levelsModule = (LevelsModule) rixaGuild.getModule("Levels");
|
||||
int page = 1;
|
||||
List<String> leaderboard = getLeaderboard(rixaGuild, page);
|
||||
MessageFactory.create(leaderboard.isEmpty() ? "No users found!" : (String.join("\n", leaderboard)))
|
||||
.setAuthor("Leaderboard: " + guild.getName(), guild.getIconUrl())
|
||||
.setColor(member.getColor())
|
||||
.queue(channel, message -> {
|
||||
message.addReaction("\u2B05").complete();
|
||||
message.addReaction("\u27A1").complete();
|
||||
}).footer("Page: (" + page + " / " + levelsModule.getObjectPagination().getMaxPage() + ")",
|
||||
member.getGuild().getIconUrl());
|
||||
|
||||
}
|
||||
|
||||
private List<String> getLeaderboard(RixaGuild rixaGuild, int page) {
|
||||
LevelsModule levelsModule = (LevelsModule) rixaGuild.getModule("Levels");
|
||||
List<Object> objects = levelsModule.getObjectPagination().getPage(page);
|
||||
List<String> leaderboard = new ArrayList<>();
|
||||
objects.forEach(s -> {
|
||||
String[] string = String.valueOf(s).split(":");
|
||||
User user = rixaGuild.getGuild().getJDA().getUserById(string[0]);
|
||||
int exp = Integer.parseInt(string[1]);
|
||||
leaderboard.add
|
||||
(user.getName() + "#" + user.getDiscriminator() + " (Lvl. " +
|
||||
DiscordUtils.getLevelFromExperience(exp) + ")");
|
||||
});
|
||||
return leaderboard;
|
||||
}
|
||||
}
|
||||
@@ -23,11 +23,11 @@ public class MinecraftCommand extends Command {
|
||||
@Override
|
||||
public void execute(String commandLabel, Guild guild, Member member, TextChannel channel, String[] args) {
|
||||
if (args.length == 0) {
|
||||
MessageFactory.create("Incorrect Usage! Try " + args[0] + " {IP}:{PORT}").setColor(member.getColor()).queue(channel);
|
||||
MessageFactory.create("Incorrect Usage! Try " + commandLabel + " {IP}:{PORT}").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
|
||||
String ipAddress = args[1];
|
||||
String ipAddress = args[0];
|
||||
|
||||
JSONObject object = get(ipAddress);
|
||||
if (object == null || !object.getBoolean("status")) {
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.rixa.bot.guild.manager.GuildManager;
|
||||
import io.rixa.bot.utils.MessageFactory;
|
||||
import net.dv8tion.jda.core.entities.Guild;
|
||||
import net.dv8tion.jda.core.entities.Member;
|
||||
import net.dv8tion.jda.core.entities.Message;
|
||||
import net.dv8tion.jda.core.entities.TextChannel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -23,10 +24,9 @@ public class ModulesCommand extends Command {
|
||||
RixaGuild rixaGuild = GuildManager.getInstance().getGuild(guild);
|
||||
List<String> modules = new ArrayList<>();
|
||||
rixaGuild.getModules().values().forEach
|
||||
(module -> modules.add(String.format("%s [%s]", module.getName(), (module.isEnabled()) ? "Enabled" : "Disabled")));
|
||||
String moduleMessage = String.format(
|
||||
"Modules: \n%s",
|
||||
String.join(",\n", modules));
|
||||
MessageFactory.create(moduleMessage).setColor(member.getColor()).setThumbnail(guild.getIconId()).queue(channel);
|
||||
(module -> modules.add(String.format("%s [%s]", module.getName(),
|
||||
(module.isEnabled()) ? "Enabled" : "Disabled")));
|
||||
MessageFactory.create(String.join(",\n", modules)).setAuthor("Module List", guild.getIconUrl())
|
||||
.setTimestamp().setColor(member.getColor()).queue(channel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,10 +22,9 @@ import io.rixa.bot.guild.RixaGuild;
|
||||
import io.rixa.bot.guild.manager.GuildManager;
|
||||
import io.rixa.bot.guild.modules.module.MusicModule;
|
||||
import io.rixa.bot.guild.modules.module.music.MusicManager;
|
||||
import io.rixa.bot.pagination.QueuePagination;
|
||||
import io.rixa.bot.pagination.Pagination;
|
||||
import io.rixa.bot.utils.DiscordUtils;
|
||||
import io.rixa.bot.utils.MessageFactory;
|
||||
import net.dv8tion.jda.core.MessageBuilder;
|
||||
import net.dv8tion.jda.core.Permission;
|
||||
import net.dv8tion.jda.core.entities.Guild;
|
||||
import net.dv8tion.jda.core.entities.Member;
|
||||
@@ -37,7 +36,6 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import java.awt.*;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public class MusicCommand extends Command {
|
||||
@@ -62,9 +60,15 @@ public class MusicCommand extends Command {
|
||||
@Override
|
||||
public void execute(String commandLabel, Guild guild, Member member, TextChannel channel, String[] args) {
|
||||
RixaGuild rixaGuild = GuildManager.getInstance().getGuild(guild);
|
||||
MusicModule musicModule = (MusicModule) rixaGuild.getModule("Music");
|
||||
if (musicModule.getMusicRole() != null && !member.getRoles().contains(musicModule.getMusicRole())) {
|
||||
MessageFactory.create("You do not have the required music role (" + musicModule.getMusicRole().getName() +
|
||||
") to use this command").setTimestamp().setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
MusicManager musicManager = getMusicManager(rixaGuild);
|
||||
AudioPlayer player = musicManager.getPlayer();
|
||||
QueuePagination queuePagination = musicManager.getScheduler().getQueuePagination();
|
||||
Pagination queuePagination = musicManager.getScheduler().getQueuePagination();
|
||||
if (args.length == 1) {
|
||||
switch (args[0].toLowerCase()) {
|
||||
case "leave":
|
||||
@@ -117,7 +121,7 @@ public class MusicCommand extends Command {
|
||||
MessageFactory.create("The audio queue is empty! Add a track to the queue first!").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
MessageFactory.create().setAuthor(audioTrack.getInfo().title, "https://i.imgur.com/lOoybhD.png")
|
||||
MessageFactory.create().setAuthor(audioTrack.getInfo().title, "https://i.imgur.com/AnaMjsH.png")
|
||||
.addField("Author", audioTrack.getInfo().author, true)
|
||||
.addField("Duration", getTimestamp(audioTrack.getInfo().length), true)
|
||||
.addField("Position", getTimestamp(audioTrack.getPosition()), true).queue(channel);
|
||||
@@ -129,7 +133,7 @@ public class MusicCommand extends Command {
|
||||
MessageFactory.create("The audio queue is empty! Add a track to the queue first!").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
List<AudioTrack> firstPage = queuePagination.getPage(1);
|
||||
List<Object> firstPage = queuePagination.getPage(1);
|
||||
if (firstPage == null || firstPage.isEmpty()) {
|
||||
MessageFactory.create("The audio queue is empty! Add a track to the queue first!").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
@@ -137,9 +141,13 @@ public class MusicCommand extends Command {
|
||||
List<String> titles = new ArrayList<>();
|
||||
for (int i = 0; i < firstPage.size(); i++) {
|
||||
if (firstPage.get(i) == null) continue;
|
||||
titles.add("`" + (i + 1) + ")` " + firstPage.get(i).getInfo().title);
|
||||
titles.add("`" + (i + 1) + ")` " + ((AudioTrack) firstPage.get(i)).getInfo().title);
|
||||
}
|
||||
MessageFactory.create(String.join("\n", titles)).setAuthor("Music Queue", "https://i.imgur.com/lOoybhD.png").queue(channel);
|
||||
MessageFactory.create(String.join("\n", titles)).setAuthor("Music Queue", "https://i.imgur.com/AnaMjsH.png")
|
||||
.queue(channel, message -> {
|
||||
message.addReaction("\u2B05").queue();
|
||||
message.addReaction("\u27A1").queue();
|
||||
});
|
||||
break;
|
||||
case "restart":
|
||||
audioTrack = player.getPlayingTrack();
|
||||
@@ -265,6 +273,10 @@ public class MusicCommand extends Command {
|
||||
try {
|
||||
channel.getGuild().getAudioManager().openAudioConnection(voiceChannel);
|
||||
MessageFactory.create("Entering Voice Channel: " + voiceChannel.getName()).setColor(member.getColor()).queue(channel);
|
||||
if (voiceChannel.getGuild().getAudioManager().getSendingHandler() == null) {
|
||||
voiceChannel.getGuild().getAudioManager().setSendingHandler
|
||||
(getMusicManager(GuildManager.getInstance().getGuild(voiceChannel.getGuild())).getSendHandler());
|
||||
}
|
||||
} catch (PermissionException e) {
|
||||
if (e.getPermission() == Permission.VOICE_CONNECT) {
|
||||
MessageFactory.create("I do not have permission to join the requested voice channel.").setColor(member.getColor()).queue(channel);
|
||||
|
||||
@@ -20,13 +20,10 @@ public class QuoteCommand extends Command {
|
||||
|
||||
@Override
|
||||
public void execute(String commandLabel, Guild guild, Member member, TextChannel channel, String[] args) {
|
||||
|
||||
}
|
||||
|
||||
public void execute(GuildMessageReceivedEvent event) {
|
||||
String[] quote = getAdvice();
|
||||
MessageFactory.create(quote[0]).setTitle("Author: " + quote[1]).footer("Requested by: " + event.getMember().getEffectiveName(), event.getAuthor().getEffectiveAvatarUrl())
|
||||
.setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
MessageFactory.create(quote[0]).setTitle("Author: " + quote[1]).footer("Requested by: " + member.getEffectiveName(),
|
||||
member.getUser().getEffectiveAvatarUrl()).setTimestamp()
|
||||
.setColor(member.getColor()).queue(channel);
|
||||
}
|
||||
|
||||
private String[] getAdvice() {
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
package io.rixa.bot.commands.cmds.general;
|
||||
|
||||
import io.rixa.bot.Rixa;
|
||||
import io.rixa.bot.commands.Command;
|
||||
import io.rixa.bot.commands.perms.RixaPermission;
|
||||
import io.rixa.bot.data.storage.DatabaseAdapter;
|
||||
import io.rixa.bot.guild.RixaGuild;
|
||||
import io.rixa.bot.guild.manager.GuildManager;
|
||||
import io.rixa.bot.guild.modules.module.LevelsModule;
|
||||
import io.rixa.bot.pagination.ObjectPagination;
|
||||
import io.rixa.bot.user.RixaUser;
|
||||
import io.rixa.bot.user.manager.UserManager;
|
||||
import io.rixa.bot.utils.DiscordUtils;
|
||||
import io.rixa.bot.utils.MessageFactory;
|
||||
import net.dv8tion.jda.core.MessageBuilder;
|
||||
import net.dv8tion.jda.core.entities.Guild;
|
||||
import net.dv8tion.jda.core.entities.Member;
|
||||
import net.dv8tion.jda.core.entities.TextChannel;
|
||||
import net.dv8tion.jda.core.entities.User;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class RankCommand extends Command {
|
||||
|
||||
public RankCommand(String command, RixaPermission rixaPermission, String description) {
|
||||
super(command, rixaPermission, description);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(String commandLabel, Guild guild, Member member, TextChannel channel, String[] args) {
|
||||
RixaGuild rixaGuild = GuildManager.getInstance().getGuild(guild);
|
||||
if (!rixaGuild.getModule("Levels").isEnabled()) {
|
||||
MessageFactory.create("Levels are not enabled on this server!")
|
||||
.setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
if (args.length == 0) {
|
||||
getInfo(rixaGuild, member).queue(channel);
|
||||
return;
|
||||
}
|
||||
List<Member> members = DiscordUtils.memberSearch(guild, String.join(" ", args), false);
|
||||
if (members.isEmpty()) {
|
||||
MessageFactory.create("Could not find valid member! Please try again!").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
getInfo(rixaGuild, members.get(0)).queue(channel);
|
||||
}
|
||||
|
||||
private MessageFactory getInfo(RixaGuild rixaGuild, Member member) {
|
||||
User author = member.getUser();
|
||||
int rank = 1;
|
||||
int count = DatabaseAdapter.getInstance().get().queryForObject
|
||||
("SELECT COUNT(*) FROM `levels`", Integer.class);
|
||||
if (count > 0) {
|
||||
rank = DatabaseAdapter.getInstance().get().queryForObject("SELECT * FROM `levels` WHERE `guild_id` = ? ORDER BY `experience` DESC",
|
||||
new Object[]{member.getGuild().getId()}, (resultSet, i) -> {
|
||||
int main = 1;
|
||||
|
||||
while (resultSet.next()) {
|
||||
if (resultSet.getString("user_id").equalsIgnoreCase(member.getUser().getId())) {
|
||||
return main;
|
||||
}
|
||||
main++;
|
||||
}
|
||||
return main;
|
||||
});
|
||||
}
|
||||
RixaUser rixaUser = UserManager.getInstance().getUser(member.getUser());
|
||||
int levels = rixaUser.getLevels(rixaGuild.getGuild().getId());
|
||||
return MessageFactory.create()
|
||||
.setAuthor(author.getName(), author.getEffectiveAvatarUrl(), author.getEffectiveAvatarUrl())
|
||||
.setTitle(author.getName() + "'s level")
|
||||
.setColor(member.getColor())
|
||||
.addField("Rank", String.valueOf(rank), true)
|
||||
.addField("Level", String.valueOf(DiscordUtils.getLevelFromExperience(rixaUser.getLevels
|
||||
(rixaGuild.getId()))), true)
|
||||
.addField("Exp Needed",
|
||||
DiscordUtils.getRemainingExperience(levels) + "/" + DiscordUtils.getNeededXP
|
||||
(DiscordUtils.getLevelFromExperience(levels)).intValue(), false)
|
||||
.addField("Total Exp", String.valueOf(levels), true);
|
||||
}
|
||||
}
|
||||
@@ -31,11 +31,11 @@ public class RoleMemberList extends Command {
|
||||
MessageFactory.create("Could not find any users with the role " + role.getName()).setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
StringBuilder builder = new StringBuilder("Users With Role `").append(role.getName()).append("`: ");
|
||||
List<String> membersWithRole = new ArrayList<>();
|
||||
roleMembers.forEach(roleMember -> membersWithRole.add(format(roleMember)));
|
||||
builder.append(String.join(", ", membersWithRole));
|
||||
MessageFactory.create(builder.toString().trim()).setColor(member.getColor()).queue(channel);
|
||||
MessageFactory.create(String.join(", ", membersWithRole))
|
||||
.setAuthor("Users with role: " + role.getName(), guild.getIconUrl()).setTimestamp()
|
||||
.setColor(member.getColor()).queue(channel);
|
||||
}
|
||||
|
||||
private String format(Member member) {
|
||||
|
||||
@@ -17,6 +17,7 @@ import net.dv8tion.jda.core.exceptions.PermissionException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ClearCommand extends Command {
|
||||
|
||||
@@ -35,18 +36,14 @@ public class ClearCommand extends Command {
|
||||
commandLabel)).setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
RixaUser user = new RixaUser();
|
||||
if (!(user.hasPermission(rixaPermission))) {
|
||||
MessageFactory.create("Sorry! You do not have permission for this command!").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
int amount = Integer.parseInt(args[0]);
|
||||
if (amount < 1 || amount > 100) {
|
||||
MessageFactory.create("Please try a number less than 100 and greater than 1 and :grimacing:").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
int i = deleteMessages(channel, amount);
|
||||
MessageFactory.create("Successfully deleted *" + i + "* messages in " + channel.getAsMention())
|
||||
MessageFactory.create(((i == 0) ? "Could not find any messages to delete" : "Successfully deleted *" + i +
|
||||
"* messages in " + channel.getAsMention()))
|
||||
.footer("Requested by: " + member.getEffectiveName(), member.getUser().getEffectiveAvatarUrl())
|
||||
.setColor(member.getColor())
|
||||
.queue(channel);
|
||||
@@ -55,17 +52,17 @@ public class ClearCommand extends Command {
|
||||
private int deleteMessages(TextChannel channel, int amount) {
|
||||
List<Message> messageHistory= channel.getHistory().retrievePast(amount).complete();
|
||||
List<Message> pinnedMessages = channel.getPinnedMessages().complete();
|
||||
List<Message> newMessages = new ArrayList<>();
|
||||
int i = 0;
|
||||
messageHistory.forEach(message -> {
|
||||
List<Message> newMessages = new ArrayList<>(messageHistory.stream().filter(message -> !pinnedMessages.contains(message)).collect(Collectors.toList()));
|
||||
/*messageHistory.forEach(message -> {
|
||||
if (!(pinnedMessages.contains(message))) {
|
||||
newMessages.add(message);
|
||||
}
|
||||
});
|
||||
});*/
|
||||
// !mute Savvy 10s Hello Savvy!
|
||||
try {
|
||||
i = newMessages.size();
|
||||
channel.deleteMessages(newMessages).queue();
|
||||
i++;
|
||||
} catch (PermissionException ex) {
|
||||
if (ex.getPermission() == Permission.MESSAGE_MANAGE)
|
||||
MessageFactory.create("I do not have permission to clear messages within this channel!").queue(channel);
|
||||
|
||||
@@ -24,6 +24,7 @@ public class MuteCommand extends Command {
|
||||
Object[] objArray = DiscordUtils.memberSearchArray(guild, argumentString, false);
|
||||
if (objArray.length == 0) {
|
||||
MessageFactory.create("Could not find member!").setColor(member.getColor()).queue(channel);
|
||||
return;
|
||||
}
|
||||
Member targetMember = (Member) objArray[1];
|
||||
String targetMemberName = String.valueOf(objArray[0]);
|
||||
@@ -33,9 +34,14 @@ public class MuteCommand extends Command {
|
||||
}
|
||||
argumentString = argumentString.replaceFirst(targetMemberName, "").trim();
|
||||
args = argumentString.split(" ");
|
||||
if (args[0].length() == 0) {
|
||||
// Incorrect Usage
|
||||
return;
|
||||
}
|
||||
String time = args[0].trim();
|
||||
argumentString = String.join(" ", args).replaceFirst(time, "");
|
||||
long milliseconds = Utils.toMilliSec(time);
|
||||
MessageFactory.create("Duration: " + time + "\nReason: " + argumentString + "\nDuration in Milliseconds: " + milliseconds).queue(channel);
|
||||
MessageFactory.create("Duration: " + time + "\nReason: " + argumentString + "\nDuration in Milliseconds: " + milliseconds)
|
||||
.queue(channel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@ public enum RixaPermission {
|
||||
KICK_MEMBER,
|
||||
BAN_MEMBER,
|
||||
BATCH_MOVE,
|
||||
UNMUTE,
|
||||
TOGGLE_RAIDMODE;
|
||||
|
||||
public static RixaPermission fromString(String string) {
|
||||
|
||||
Reference in New Issue
Block a user