Added new commands, event listeners.

This commit is contained in:
Malcom Green
2017-05-24 09:16:39 -04:00
parent 59057e16ef
commit 3e41476f37
20 changed files with 1046 additions and 93 deletions

View File

@@ -1,9 +1,15 @@
package me.savvy.rixa;
import me.savvy.rixa.commands.admin.BatchMoveCommand;
import me.savvy.rixa.commands.general.HelpCommand;
import me.savvy.rixa.commands.general.InfoCommand;
import me.savvy.rixa.commands.general.PingCommand;
import me.savvy.rixa.commands.general.ServerInfoCommand;
import me.savvy.rixa.commands.handlers.CommandExec;
import me.savvy.rixa.commands.handlers.CommandHandler;
import me.savvy.rixa.commands.mod.DeleteMessagesCommand;
import me.savvy.rixa.commands.mod.PurgeCommand;
import me.savvy.rixa.events.BotEvent;
import me.savvy.rixa.events.MessageEvent;
import me.savvy.rixa.modules.reactions.handlers.ReactionManager;
import me.savvy.rixa.modules.reactions.react.HelpReaction;
@@ -32,28 +38,36 @@ public class Rixa {
public static void main(String[] args) throws LoginException, InterruptedException, RateLimitedException {
instance = new Rixa();
shardsList = new LinkedList<>();
int shards = 4;
for(int i = 1; i < shards; i++){
int shards = 3;
for(int i = 0; i < shards; i++) {
Logger.getLogger("Rixa").info("Loading shard #" + i);
JDABuilder jda = new JDABuilder(AccountType.BOT)
.setToken("MjkxNTM5Njg2NTEyNTI1MzMy.C6r1OA.-hRemXk-b3nP5GvT9kjh2V7RXDo")
.setToken("MjkxNTM5Njg2NTEyNTI1MzMy.DAZKfQ.kIHSmuCJHhklyC3gBAi0c_VKp-w")
.setEventManager(new AnnotatedEventManager())
.addEventListener(new MessageEvent())
.addEventListener(new BotEvent())
.setGame(Game.of("Rixa 1.0 | In Dev", "http://rixa.io"))
.setAutoReconnect(true)
.setStatus(OnlineStatus.ONLINE)
.setAudioEnabled(true)
.useSharding(i, shards);
shardsList.add(jda.buildBlocking());
Logger.getLogger("Rixa").info("Shard #" + i + " has been loaded");
getInstance().getLogger().info("Shard #" + i + " has been loaded");
}
timeUp = System.currentTimeMillis();
CommandHandler.registerCommand(new InfoCommand());
CommandHandler.registerCommand(new ServerInfoCommand());
CommandHandler.registerCommand(new HelpCommand());
register(new CommandExec[] {
new InfoCommand(), new ServerInfoCommand(), new HelpCommand(),
new DeleteMessagesCommand(), new PingCommand(), new PurgeCommand(),
new BatchMoveCommand() });
ReactionManager.registerReaction(new HelpReaction());
}
private static void register(CommandExec commandExecs[]) {
for (CommandExec command: commandExecs) {
CommandHandler.registerCommand(command);
}
}
public static Rixa getInstance() {
return instance;
}
@@ -61,4 +75,8 @@ public class Rixa {
public long getTimeUp() {
return timeUp;
}
public Logger getLogger() {
return Logger.getLogger("Rixa");
}
}

View File

@@ -0,0 +1,57 @@
package me.savvy.rixa.commands.admin;
import me.savvy.rixa.commands.handlers.Command;
import me.savvy.rixa.commands.handlers.CommandExec;
import me.savvy.rixa.commands.handlers.RixaPermission;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.guild.RixaManager;
import me.savvy.rixa.utils.MessageBuilder;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.entities.Role;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.core.exceptions.PermissionException;
import java.awt.*;
import java.util.List;
/**
* Created by Timber on 5/23/2017.
*/
public class BatchMoveCommand implements CommandExec {
@Override
@Command(mainCommand = "batchmove",
aliases = "bmove",
description = "Move users within one role to another!",
channelType = ChannelType.TEXT)
public void execute(GuildMessageReceivedEvent event) {
RixaGuild rixaGuild = RixaManager.getGuild(event.getGuild());
if(!rixaGuild.hasPermission(event.getMember(), RixaPermission.CLEAR_CHAT)) {
new MessageBuilder(event.getMember().getAsMention() + ", you do not have permission for this command.").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
if(event.getMessage().getMentionedRoles().size() < 2) {
new MessageBuilder("You need to include two roles!").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
Role old_role = event.getMessage().getMentionedRoles().get(0);
Role new_role = event.getMessage().getMentionedRoles().get(1);
List<Member> userWithRole = event.getGuild().getMembersWithRoles(old_role);
new MessageBuilder("Moving **" + userWithRole.size() + "** users with role: " + old_role.getAsMention()
+ " to " + new_role.getAsMention()).setColor(old_role.getColor()).queue(event.getChannel());
int success = 0;
for(Member member: userWithRole) {
try {
event.getGuild().getController().removeRolesFromMember(member, old_role).queue();
event.getGuild().getController().addRolesToMember(member, new_role).queue();
success++;
} catch(PermissionException ex) {
new MessageBuilder("I do not have permission to modify " + member.getAsMention() + "'s role").setColor(Color.RED).queue(event.getChannel());
}
}
if(success > 0) {
new MessageBuilder("Successfully moved **" + success + "** users to role " +
new_role.getAsMention()).setColor(new_role.getColor()).queue(event.getChannel());
}
}
}

View File

@@ -2,6 +2,7 @@ package me.savvy.rixa.commands.general;
import me.savvy.rixa.commands.handlers.Command;
import me.savvy.rixa.commands.handlers.CommandExec;
import me.savvy.rixa.utils.MessageBuilder;
import net.dv8tion.jda.core.EmbedBuilder;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.Message;
@@ -34,8 +35,8 @@ public class HelpCommand implements CommandExec {
.addField("3 - Music Commands", "Reveals usable commands to configure Rixa for your discord!", false)
.setColor(event.getMember().getColor());
Message message = event.getAuthor().openPrivateChannel().complete().sendMessage(embedBuilder.build()).complete();
event.getChannel().sendMessage(event.getMember().getAsMention()
+ ", the help menu has been private messaged to you!").queue();
new MessageBuilder(event.getMember().getAsMention()
+ ", the help menu has been private messaged to you!").setColor(event.getMember().getColor()).queue(event.getChannel());
try {
message.addReaction("\u0031\u20E3").queue();
message.addReaction("\u0032\u20E3").queue();

View File

@@ -1,9 +1,9 @@
package me.savvy.rixa.commands.general;
import me.savvy.rixa.Rixa;
import com.lunaticdev.rixa.commands.handler.CommandType;
import me.savvy.rixa.commands.handlers.Command;
import me.savvy.rixa.commands.handlers.CommandExec;
import me.savvy.rixa.commands.handlers.CommandType;
import net.dv8tion.jda.core.EmbedBuilder;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.User;

View File

@@ -0,0 +1,21 @@
package me.savvy.rixa.commands.general;
import me.savvy.rixa.commands.handlers.Command;
import me.savvy.rixa.commands.handlers.CommandExec;
import me.savvy.rixa.utils.MessageBuilder;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
/**
* Created by Timber on 5/23/2017.
*/
public class PingCommand implements CommandExec {
@Override
@Command(mainCommand = "ping",
aliases = "",
description = "Check your ping!",
channelType = ChannelType.TEXT)
public void execute(GuildMessageReceivedEvent event) {
new MessageBuilder("Pong!").setColor(event.getMember().getColor()).queue(event.getChannel());
}
}

View File

@@ -0,0 +1,10 @@
package me.savvy.rixa.commands.handlers;
/**
* Created by Timber on 5/23/2017.
*/
public enum RixaPermission {
MUTE, ADD_ROLE, REMOVE_ROLE, CLEAR_CHAT, ACCESS_CONFIG, PM_MESSAGE, KICK_MEMBER, BAN_MEMBER
}

View File

@@ -0,0 +1,76 @@
package me.savvy.rixa.commands.mod;
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.commands.handlers.RixaPermission;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.guild.RixaManager;
import me.savvy.rixa.utils.MessageBuilder;
import me.savvy.rixa.utils.Utils;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.core.exceptions.PermissionException;
import net.dv8tion.jda.core.requests.RestAction;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Timber on 5/23/2017.
*/
public class DeleteMessagesCommand implements CommandExec {
@Override
@Command(mainCommand = "clear",
aliases = { "delmessages", "dmessages", "delmsg", "deletemessages" },
description = "Clear messages from chat!",
channelType = ChannelType.TEXT,
type = CommandType.MOD,
usage = "%pclear")
public void execute(GuildMessageReceivedEvent event) {
RixaGuild rixaGuild = RixaManager.getGuild(event.getGuild());
if(!rixaGuild.hasPermission(event.getMember(), RixaPermission.CLEAR_CHAT)) {
new MessageBuilder(event.getMember().getAsMention() + ", you do not have permission for this command.").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
String[] messages = event.getMessage().getContent().split(" ");
if(messages.length < 2) {
new MessageBuilder(event.getMember().getAsMention() + ", please enter an amount. Example /delmessages 5").setColor(event.getMember().getColor()).queue(event.getChannel());
messages = null;
return;
}
if(!Utils.isInt(messages[1])) {
new MessageBuilder(event.getMember().getAsMention() + ", Amount must be a number. Example /delmessages 3").setColor(event.getMember().getColor()).queue(event.getChannel());
messages = null;
return;
}
int amount = Integer.parseInt(messages[1]);
if (amount < 2 || amount > 100) {
new MessageBuilder(event.getMember().getAsMention() + ", please provide at least 2 or at most 100 messages to be deleted").setColor(event.getMember().getColor()).queue(event.getChannel());
messages = null;
return;
}
try {
RestAction<List<Message>> messageList = event.getChannel().getHistory().retrievePast(amount);
List<Message> messages1 = new ArrayList<Message>();
messageList.complete().forEach(message -> {
if(!event.getChannel().getPinnedMessages().complete().contains(message)) {
messages1.add(message);
}
});
event.getChannel().deleteMessages(messages1).complete();
new MessageBuilder(event.getMember().getAsMention() + " has cleared **" + amount + "** messages from the chat history.").setColor(event.getMember().getColor()).queue(event.getChannel());
} catch (PermissionException ex) {
try {
new MessageBuilder(event.getMember().getAsMention() + ", sorry I do not have permission for this!").setColor(event.getMember().getColor()).queue(event.getChannel());
} catch (PermissionException e) {
event.getAuthor()
.openPrivateChannel().complete()
.sendMessage(event.getMember().getAsMention() + ", sorry I do not have permission for this!").queue();
}
} catch(IllegalArgumentException ex) {
new MessageBuilder(event.getMember().getAsMention() + ", sorry I do not have permission for this!").setColor(event.getMember().getColor()).queue(event.getChannel());
}
}
}

View File

@@ -0,0 +1,90 @@
package me.savvy.rixa.commands.mod;
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.commands.handlers.RixaPermission;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.guild.RixaManager;
import me.savvy.rixa.utils.MessageBuilder;
import me.savvy.rixa.utils.Utils;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.entities.TextChannel;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.core.exceptions.PermissionException;
import net.dv8tion.jda.core.requests.RestAction;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Timber on 5/23/2017.
*/
public class PurgeCommand implements CommandExec {
@Override
@Command(mainCommand = "purge",
aliases = { "pmessages", "purgemessages", "purgeuser" },
description = "Remove a users messages!",
channelType = ChannelType.TEXT,
type = CommandType.MOD,
usage = "%ppurge")
public void execute(GuildMessageReceivedEvent event) {
RixaGuild rixaGuild = RixaManager.getGuild(event.getGuild());
if(!rixaGuild.hasPermission(event.getMember(), RixaPermission.CLEAR_CHAT)) {
new MessageBuilder(event.getMember().getAsMention() + ", you do not have permission for this command.").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
if(event.getMessage().getMentionedUsers().size() < 1) {
new MessageBuilder(event.getMember().getAsMention() + ", could not find user. Try /purge <user>").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
String[] message = event.getMessage().getContent().split(" ");
if(message.length < 2) {
new MessageBuilder(event.getMember().getAsMention() + ", incorrect usage. Example /purge <user> [amount]").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
int amount = 100;
for(String s: message) {
if(Utils.isInt(s)) {
amount = Integer.parseInt(s);
break;
}
}
Member memberToDel = event.getGuild().getMember(event.getMessage().getMentionedUsers().get(0));
deleteMessage(event.getChannel(), event.getMember(), memberToDel, amount);
}
private void deleteMessage(TextChannel channel, Member user, Member userToDel, int amount) {
try {
RestAction<List<Message>> messageList = channel.getHistory().retrievePast(amount);
List<Message> messages = messageList.complete();
int newAmount = messages.size();
if(userToDel != null) {
List<Message> newMsgs = new ArrayList<>();
for(Message message: messages) {
if(message.getAuthor().getId().equals(userToDel.getUser().getId())) {
newMsgs.add(message);
}
}
newAmount = newMsgs.size();
channel.deleteMessages(newMsgs).complete();
} else {
channel.deleteMessages(messages).complete();
}
new MessageBuilder(user.getAsMention() + " has cleared **" + newAmount + "** messages from the chat history.").setColor(user.getColor()).queue(channel);
} catch (PermissionException ex) {
try {
new MessageBuilder(user.getAsMention() + ", sorry I do not have permission for this!").setColor(user.getColor()).queue(channel);
} catch (PermissionException e) {
user.getUser()
.openPrivateChannel().complete()
.sendMessage(user.getAsMention() + ", sorry I do not have permission for this!").queue();
}
} catch (IllegalArgumentException ex) {
new MessageBuilder(user.getAsMention() + ", sorry I cannot delete messages older than 2 weeks!").setColor(user.getColor()).queue(channel);
}
}
}

View File

@@ -0,0 +1,31 @@
package me.savvy.rixa.events;
import me.savvy.rixa.Rixa;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.guild.RixaManager;
import net.dv8tion.jda.core.events.ReadyEvent;
import net.dv8tion.jda.core.events.guild.GuildJoinEvent;
import net.dv8tion.jda.core.events.guild.GuildLeaveEvent;
import net.dv8tion.jda.core.hooks.SubscribeEvent;
/**
* Created by Timber on 5/23/2017.
*/
public class BotEvent {
@SubscribeEvent
public void onJoin(GuildJoinEvent event) {
new RixaGuild(event.getGuild());
}
@SubscribeEvent
public void onReady(ReadyEvent event) {
Rixa.getInstance().getLogger().info("Successfully loaded...");
event.getJDA().getGuilds().forEach(RixaGuild::new);
}
@SubscribeEvent
public void onQuit(GuildLeaveEvent event) {
RixaManager.removeGuild(RixaManager.getGuild(event.getGuild()));
}
}

View File

@@ -3,6 +3,8 @@ package me.savvy.rixa.events;
import com.mysql.jdbc.StringUtils;
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.RixaManager;
import me.savvy.rixa.modules.reactions.handlers.ReactRegistrar;
import me.savvy.rixa.modules.reactions.handlers.ReactionManager;
import net.dv8tion.jda.core.entities.Message;
@@ -21,14 +23,16 @@ public class MessageEvent {
@SubscribeEvent
public void handle(GuildMessageReceivedEvent event) {
if (event.getGuild() == null) return;
String prefix = "/";
if (!event.getMessage().getContent().startsWith(prefix)) return;
// Map<String, CommandRegistrar> commands = CommandHandler.getCommands();
RixaGuild rixaGuild = RixaManager.getGuild(event.getGuild());
String prefix = rixaGuild
.getGuildSettings()
.getPrefix();
if (!event.getMessage().getContent().startsWith(prefix)) {return; }
String[] splitContent = event.getMessage().getContent().replace(prefix, "").split(" ");
if(!CommandHandler.hasCommand(splitContent[0])) { return; }
//if (!commands.containsKey(splitContent[0])) return;
if(!CommandHandler.hasCommand(splitContent[0])) {
return; }
CommandRegistrar cmd = CommandHandler.get(splitContent[0]);
//CommandRegistrar cmd = commands.get(splitContent[0]);
Method m = cmd.getMethod();
try {
m.invoke(cmd.getExecutor(), event);

View File

@@ -0,0 +1,11 @@
package me.savvy.rixa.extras.polls;
/**
* Created by Timber on 5/23/2017.
*/
public class Poll {
public Poll() {
}
}

View File

@@ -0,0 +1,49 @@
package me.savvy.rixa.guild;
import me.savvy.rixa.commands.handlers.RixaPermission;
import me.savvy.rixa.guild.management.GuildSettings;
import net.dv8tion.jda.core.entities.Guild;
import net.dv8tion.jda.core.entities.Member;
/**
* Created by Timber on 5/23/2017.
*/
public class RixaGuild {
private Guild guild;
private GuildSettings guildSettings;
public RixaGuild(Guild guild) {
this.guild = guild;
load();
}
private void load() {
if(check()) return;
setGuildSettings(new GuildSettings(this.guild));
RixaManager.addGuild(this);
}
public GuildSettings getGuildSettings() {
return (guildSettings == null) ? this.guildSettings = new GuildSettings(getGuild()) : guildSettings;
}
public void setGuildSettings(GuildSettings guildSettings) {
this.guildSettings = guildSettings;
}
/**
* TODO: Check if Guild exists in database if not create new instance;
*/
public boolean check() {
return guildSettings == null;
}
public Guild getGuild() {
return guild;
}
public boolean hasPermission(Member member, RixaPermission clearChat) {
return member.getUser().getId().equalsIgnoreCase("202944101333729280");
}
}

View File

@@ -0,0 +1,39 @@
package me.savvy.rixa.guild;
import net.dv8tion.jda.core.entities.Guild;
import java.util.HashMap;
import java.util.Map;
/**
* Created by Timber on 5/23/2017.
*/
public class RixaManager {
private static Map<String, RixaGuild> guilds = new HashMap<>();
public static Map<String, RixaGuild> getGuilds() {
return guilds;
}
public static void addGuild(RixaGuild guild) {
if(check(guild.getGuild())) return;
guilds.put(guild.getGuild().getId(), guild);
}
public static RixaGuild getGuild(Guild guild) {
if(!check(guild)) {
addGuild(new RixaGuild(guild));
}
return guilds.get(guild.getId());
}
public static void removeGuild(RixaGuild guild) {
if(!check(guild.getGuild())) return;
guilds.remove(guild.getGuild().getId());
}
private static boolean check(Guild guild) {
return guilds.containsKey(guild.getId());
}
}

View File

@@ -0,0 +1,87 @@
package me.savvy.rixa.guild.management;
import net.dv8tion.jda.core.entities.Guild;
import net.dv8tion.jda.core.entities.TextChannel;
/**
* Created by Timber on 5/23/2017.
*/
public class GuildSettings {
private Guild guild;
private String prefix = ".", defaultRole, joinMessage, quitMessage, joinPrivateMessage;
private TextChannel joinMessageChannel, quitMessageChannel;
public GuildSettings(Guild guild) {
this.guild = guild;
load();
}
private void load() {
}
public void unload() {
}
public Guild getGuild() {
return guild;
}
public String getJoinMessage() {
return joinMessage;
}
public void setJoinMessage(String joinMessage) {
this.joinMessage = joinMessage;
}
public String getQuitMessage() {
return quitMessage;
}
public void setQuitMessage(String quitMessage) {
this.quitMessage = quitMessage;
}
public String getJoinPrivateMessage() {
return joinPrivateMessage;
}
public void setJoinPrivateMessage(String joinPrivateMessage) {
this.joinPrivateMessage = joinPrivateMessage;
}
public TextChannel getJoinMessageChannel() {
return joinMessageChannel;
}
public void setJoinMessageChannel(TextChannel joinMessageChannel) {
this.joinMessageChannel = joinMessageChannel;
}
public TextChannel getQuitMessageChannel() {
return quitMessageChannel;
}
public void setQuitMessageChannel(TextChannel quitMessageChannel) {
this.quitMessageChannel = quitMessageChannel;
}
public String getDefaultRole() {
return defaultRole;
}
public void setDefaultRole(String defaultRole) {
this.defaultRole = defaultRole;
}
public String getPrefix() {
return prefix;
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
}

View File

@@ -1,7 +1,8 @@
package me.savvy.rixa.modules.reactions.react;
import com.lunaticdev.rixa.commands.handler.CommandHandler;
import com.lunaticdev.rixa.commands.handler.CommandType;
import me.savvy.rixa.commands.handlers.CommandHandler;
import me.savvy.rixa.commands.handlers.CommandType;
import me.savvy.rixa.guild.RixaManager;
import me.savvy.rixa.modules.reactions.handlers.React;
import me.savvy.rixa.modules.reactions.handlers.ReactHandle;
import net.dv8tion.jda.core.EmbedBuilder;
@@ -23,6 +24,8 @@ public class HelpReaction implements React {
return;
}
Message message = event.getChannel().getMessageById(event.getMessageId()).complete();
String prefix = (event.getChannel().getType() != ChannelType.PRIVATE) ?
RixaManager.getGuild(event.getGuild()).getGuildSettings().getPrefix() : "/";
EmbedBuilder embedBuilder;
try {
switch(event.getReaction().getEmote().getName()) {
@@ -39,9 +42,10 @@ public class HelpReaction implements React {
"Click a number below for information about other commands.";
embedBuilder.setTitle("Help", "http://rixa.io");
embedBuilder.setDescription(stringBuilder);
CommandHandler.getCommands().values().stream().filter(cmd -> cmd.getType() == CommandType.USER)
.forEach(cmd -> embedBuilder.addField("/"/*prefix*/ + cmd.getPrefix(), cmd.getDescription(), false));
message.editMessage(embedBuilder.build()).queue();// = event.getChannel().sendMessage(embedBuilder.build()).complete();
CommandHandler.getCommands().values().stream().filter(cmd -> cmd.getCommandAnnotation().type() == CommandType.USER)
.forEach(cmd -> embedBuilder.addField(prefix + cmd.getCommandAnnotation().mainCommand(),
cmd.getCommandAnnotation().description(), false));
message.editMessage(embedBuilder.build()).queue();
break;
case "\u0032\u20E3": // two emoji
embedBuilder = new EmbedBuilder();
@@ -51,8 +55,9 @@ public class HelpReaction implements React {
"Click a number below for information about other commands.";
embedBuilder.setTitle("Help", "http://rixa.io");
embedBuilder.setDescription(stringBuilder);
CommandHandler.getCommands().values().stream().filter(cmd -> cmd.getType() == CommandType.ADMIN || cmd.getType() == CommandType.MOD)
.forEach(cmd -> embedBuilder.addField("/"/*prefix*/ + cmd.getPrefix(), cmd.getDescription(), false));
CommandHandler.getCommands().values().stream().filter(cmd -> cmd.getCommandAnnotation().type() == CommandType.ADMIN
|| cmd.getCommandAnnotation().type() == CommandType.MOD)
.forEach(cmd -> embedBuilder.addField(prefix, cmd.getCommandAnnotation().description(), false));
message.editMessage(embedBuilder.build()).queue();
break;
case "\u0033\u20E3": // three emoji
@@ -63,7 +68,6 @@ public class HelpReaction implements React {
"Click a number below for information about other commands.";
embedBuilder.setTitle("Help", "http://rixa.io");
embedBuilder.setDescription(stringBuilder);
String prefix = "/";
embedBuilder.addField(prefix + "music join [name]", "Joins a voice channel that has the provided name", false)
.addField(prefix + "music join [id]", "Joins a voice channel based on the provided id.", false)
.addField(prefix + "music leave", "Leaves the voice channel that the bot is currently in.", false)

View File

@@ -0,0 +1,49 @@
package me.savvy.rixa.utils;
import net.dv8tion.jda.core.EmbedBuilder;
import net.dv8tion.jda.core.entities.MessageEmbed;
import net.dv8tion.jda.core.entities.TextChannel;
import java.awt.*;
/**
* Created by Timber on 5/23/2017.
*/
public class MessageBuilder {
private EmbedBuilder builder;
public MessageBuilder(String description) {
this.builder = new EmbedBuilder().setDescription(description);
}
public MessageBuilder setTitle(String title, String url) {
builder.setTitle(title, url);
return this;
}
public MessageBuilder setTitle(String title) {
setTitle(title, "http://rixa.io/");
return this;
}
public MessageBuilder setColor(Color color) {
builder.setColor(color);
return this;
}
public EmbedBuilder getBuilder() {
return builder;
}
public void queue(TextChannel channel) {
channel.sendMessage(builder.build()).queue();
}
public void complete(TextChannel channel) {
channel.sendMessage(builder.build()).complete();
}
public MessageEmbed build() {
return builder.build();
}
}

View File

@@ -0,0 +1,16 @@
package me.savvy.rixa.utils;
/**
* Created by Timber on 5/23/2017.
*/
public class Utils {
public static boolean isInt(String s) {
try {
Integer.parseInt(s);
return true;
} catch (NumberFormatException ex) {
return false;
}
}
}