Added new commands, event listeners.
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
@@ -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();
|
||||
|
@@ -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;
|
||||
|
@@ -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());
|
||||
}
|
||||
}
|
@@ -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
|
||||
|
||||
}
|
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
90
src/main/java/me/savvy/rixa/commands/mod/PurgeCommand.java
Normal file
90
src/main/java/me/savvy/rixa/commands/mod/PurgeCommand.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
31
src/main/java/me/savvy/rixa/events/BotEvent.java
Normal file
31
src/main/java/me/savvy/rixa/events/BotEvent.java
Normal 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()));
|
||||
}
|
||||
}
|
@@ -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);
|
||||
|
11
src/main/java/me/savvy/rixa/extras/polls/Poll.java
Normal file
11
src/main/java/me/savvy/rixa/extras/polls/Poll.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package me.savvy.rixa.extras.polls;
|
||||
|
||||
/**
|
||||
* Created by Timber on 5/23/2017.
|
||||
*/
|
||||
public class Poll {
|
||||
|
||||
public Poll() {
|
||||
|
||||
}
|
||||
}
|
49
src/main/java/me/savvy/rixa/guild/RixaGuild.java
Normal file
49
src/main/java/me/savvy/rixa/guild/RixaGuild.java
Normal 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");
|
||||
}
|
||||
}
|
39
src/main/java/me/savvy/rixa/guild/RixaManager.java
Normal file
39
src/main/java/me/savvy/rixa/guild/RixaManager.java
Normal 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());
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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)
|
||||
|
49
src/main/java/me/savvy/rixa/utils/MessageBuilder.java
Normal file
49
src/main/java/me/savvy/rixa/utils/MessageBuilder.java
Normal 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();
|
||||
}
|
||||
}
|
16
src/main/java/me/savvy/rixa/utils/Utils.java
Normal file
16
src/main/java/me/savvy/rixa/utils/Utils.java
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user