per-guild prefix
This commit is contained in:
1 parent
6f5451f37d
commit
054bff8c63
7 files changed
+72
-41
No files matched your search
@@ -27,7 +27,7 @@ public abstract class AbstractMusicCommand extends AbstractCommand {
|
||||
|
||||
@Override
|
||||
public boolean canBeExecutedBy(Guild guild, Member member) {
|
||||
String roleDb = GuildManager.getManager(guild).getSetting(GuildManager.Settings.MUSIC_ROLE);
|
||||
String roleDb = GuildManager.getManager(guild).getSetting(GuildManager.GSettings.MUSIC_ROLE);
|
||||
|
||||
if (roleDb != null && !roleDb.isEmpty()) {
|
||||
if (UserFunction.isAdmin(member)) {
|
||||
@@ -37,7 +37,7 @@ public abstract class AbstractMusicCommand extends AbstractCommand {
|
||||
Role neededRole = guild.getRoleById(roleDb);
|
||||
if (neededRole == null) {
|
||||
// Role doesn't exist on guild anymore, remove from db
|
||||
GuildManager.getManager(guild).setSettingValue(GuildManager.Settings.MUSIC_ROLE, null);
|
||||
GuildManager.getManager(guild).setSettingValue(GuildManager.GSettings.MUSIC_ROLE, null);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ public abstract class AbstractMusicCommand extends AbstractCommand {
|
||||
|
||||
@Override
|
||||
public boolean canBeExecutedFrom(Guild guild, TextChannel channel) {
|
||||
String channelDb = GuildManager.getManager(guild).getSetting(GuildManager.Settings.MUSIC_CHANNEL);
|
||||
String channelDb = GuildManager.getManager(guild).getSetting(GuildManager.GSettings.MUSIC_CHANNEL);
|
||||
|
||||
if (channelDb != null && !channelDb.isEmpty()) {
|
||||
return channelDb.equals(channel.getId());
|
||||
|
||||
@@ -15,6 +15,7 @@ import netneutrality.core.GuildManager;
|
||||
import netneutrality.core.context.CommandContext;
|
||||
import netneutrality.music.MusicManager;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class ConfigureCommand extends AbstractCommand {
|
||||
@@ -65,7 +66,7 @@ public class ConfigureCommand extends AbstractCommand {
|
||||
// Role for music commands
|
||||
if (context.getArgument(0).equals("music-role")) {
|
||||
if (args.length == 1) {
|
||||
String roleDb = guildManager.getSetting(GuildManager.Settings.MUSIC_ROLE);
|
||||
String roleDb = guildManager.getSetting(GuildManager.GSettings.MUSIC_ROLE);
|
||||
Role role = null;
|
||||
if (!roleDb.isEmpty()) {
|
||||
role = context.getGuild().getRoleById(roleDb);
|
||||
@@ -77,8 +78,8 @@ public class ConfigureCommand extends AbstractCommand {
|
||||
|
||||
if (args.length == 2) {
|
||||
if (context.getArgument(1).equals("reset")) {
|
||||
if (!guildManager.getSetting(GuildManager.Settings.MUSIC_ROLE).isEmpty()) {
|
||||
guildManager.setSettingValue(GuildManager.Settings.MUSIC_ROLE, null);
|
||||
if (!guildManager.getSetting(GuildManager.GSettings.MUSIC_ROLE).isEmpty()) {
|
||||
guildManager.setSettingValue(GuildManager.GSettings.MUSIC_ROLE, null);
|
||||
}
|
||||
|
||||
context.reply("Successful reset of the role");
|
||||
@@ -88,7 +89,7 @@ public class ConfigureCommand extends AbstractCommand {
|
||||
if (roles.size() == 1) {
|
||||
Role role = roles.get(0);
|
||||
if (role.getGuild().getId().equals(context.getGuild().getId())) {
|
||||
guildManager.setSettingValue(GuildManager.Settings.MUSIC_ROLE, role.getId());
|
||||
guildManager.setSettingValue(GuildManager.GSettings.MUSIC_ROLE, role.getId());
|
||||
context.reply("Successfully set %s as the role needed for music command", role.getAsMention());
|
||||
}
|
||||
}
|
||||
@@ -98,7 +99,7 @@ public class ConfigureCommand extends AbstractCommand {
|
||||
// Role for music commands
|
||||
if (context.getArgument(0).equals("music-channel")) {
|
||||
if (args.length == 1) {
|
||||
String channelDb = guildManager.getSetting(GuildManager.Settings.MUSIC_CHANNEL);
|
||||
String channelDb = guildManager.getSetting(GuildManager.GSettings.MUSIC_CHANNEL);
|
||||
TextChannel channel = null;
|
||||
if (!channelDb.isEmpty()) {
|
||||
channel = context.getGuild().getTextChannelById(channelDb);
|
||||
@@ -110,8 +111,8 @@ public class ConfigureCommand extends AbstractCommand {
|
||||
|
||||
if (args.length == 2) {
|
||||
if (context.getArgument(1).equals("reset")) {
|
||||
if (!guildManager.getSetting(GuildManager.Settings.MUSIC_CHANNEL).isEmpty()) {
|
||||
guildManager.setSettingValue(GuildManager.Settings.MUSIC_CHANNEL, null);
|
||||
if (!guildManager.getSetting(GuildManager.GSettings.MUSIC_CHANNEL).isEmpty()) {
|
||||
guildManager.setSettingValue(GuildManager.GSettings.MUSIC_CHANNEL, null);
|
||||
}
|
||||
|
||||
context.reply("Successful reset of the channel");
|
||||
@@ -121,7 +122,7 @@ public class ConfigureCommand extends AbstractCommand {
|
||||
if (channels.size() == 1) {
|
||||
TextChannel channel = channels.get(0);
|
||||
if (channel.getGuild().getId().equals(context.getGuild().getId())) {
|
||||
guildManager.setSettingValue(GuildManager.Settings.MUSIC_CHANNEL, channel.getId());
|
||||
guildManager.setSettingValue(GuildManager.GSettings.MUSIC_CHANNEL, channel.getId());
|
||||
context.reply("Successfully set %s as the channel required to execute music command", channel.getAsMention());
|
||||
}
|
||||
}
|
||||
@@ -131,7 +132,7 @@ public class ConfigureCommand extends AbstractCommand {
|
||||
// Default volume for music player
|
||||
if (context.getArgument(0).equals("music-volume")) {
|
||||
if (args.length == 1) {
|
||||
int volume = Integer.parseInt(guildManager.getSetting(GuildManager.Settings.MUSIC_VOLUME));
|
||||
int volume = Integer.parseInt(guildManager.getSetting(GuildManager.GSettings.MUSIC_VOLUME));
|
||||
|
||||
context.reply("Default volume for music player: %d", volume);
|
||||
context.reply("Set using 'conf music-volume <value between 0 and 100>'");
|
||||
@@ -142,7 +143,7 @@ public class ConfigureCommand extends AbstractCommand {
|
||||
int volume = Integer.parseInt(args[1]);
|
||||
|
||||
if (volume > 0 && volume <= 100) {
|
||||
guildManager.setSettingValue(GuildManager.Settings.MUSIC_VOLUME, String.valueOf(volume));
|
||||
guildManager.setSettingValue(GuildManager.GSettings.MUSIC_VOLUME, String.valueOf(volume));
|
||||
MusicManager.get(context.getGuild()).setVolume(volume);
|
||||
|
||||
context.reply("Default volume for music player is now %d", volume);
|
||||
@@ -158,7 +159,7 @@ public class ConfigureCommand extends AbstractCommand {
|
||||
// Music topic change
|
||||
if (context.getArgument(0).equals("music-topic")) {
|
||||
if (args.length == 1) {
|
||||
boolean enabled = "1".equals(guildManager.getSetting(GuildManager.Settings.MUSIC_TOPIC));
|
||||
boolean enabled = "1".equals(guildManager.getSetting(GuildManager.GSettings.MUSIC_TOPIC));
|
||||
|
||||
context.reply("Set currently playing track in text channel topic: %s", (enabled ? "enabled" : "disabled"));
|
||||
context.reply("Use 'conf music-topic 0/1' to toggle between states (0 = disabled, 1 = enabled).");
|
||||
@@ -166,9 +167,9 @@ public class ConfigureCommand extends AbstractCommand {
|
||||
|
||||
if (args.length == 2) {
|
||||
String str = args[1];
|
||||
boolean enabled = "1".equals(guildManager.getSetting(GuildManager.Settings.MUSIC_TOPIC));
|
||||
boolean enabled = "1".equals(guildManager.getSetting(GuildManager.GSettings.MUSIC_TOPIC));
|
||||
if (str.equals("0") || str.equals("1")) {
|
||||
guildManager.setSettingValue(GuildManager.Settings.MUSIC_TOPIC, str);
|
||||
guildManager.setSettingValue(GuildManager.GSettings.MUSIC_TOPIC, str);
|
||||
enabled = "1".equals(str);
|
||||
}
|
||||
|
||||
@@ -202,6 +203,32 @@ public class ConfigureCommand extends AbstractCommand {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Prefix
|
||||
if (context.getArgument(0).equals("prefix")) {
|
||||
String allowedPrefixes = "!$%?&*";
|
||||
|
||||
if (args.length == 1) {
|
||||
String prefix = guildManager.getSetting(GuildManager.GSettings.PREFIX);
|
||||
|
||||
context.reply("Current prefix for commands: '%s'", prefix);
|
||||
context.reply("Allowed prefixes: %s", Arrays.toString(allowedPrefixes.toCharArray()));
|
||||
|
||||
}
|
||||
|
||||
if (args.length == 2) {
|
||||
String prefix = args[1].trim();
|
||||
|
||||
if (prefix.length() == 1 && allowedPrefixes.contains(prefix)) {
|
||||
guildManager.setSettingValue(GuildManager.GSettings.PREFIX, prefix);
|
||||
|
||||
context.reply("Prefix for commands is now '%s'", prefix);
|
||||
} else {
|
||||
context.reply("Allowed prefixes: %s", Arrays.toString(allowedPrefixes.toCharArray()));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
context.reply(getUsage());
|
||||
}
|
||||
|
||||
@@ -28,6 +28,14 @@ public class CommandManager {
|
||||
initAlias();
|
||||
}
|
||||
|
||||
public static boolean isValidCommand(String commandString) {
|
||||
return commands.containsKey(commandString) || commandsAlias.containsKey(commandString);
|
||||
}
|
||||
|
||||
public static AbstractCommand getCommand(String commandString) {
|
||||
return commands.containsKey(commandString) ? commands.get(commandString) : commandsAlias.get(commandString);
|
||||
}
|
||||
|
||||
private static void initCommands() {
|
||||
logger.info("Loading commands..");
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ import netneutrality.handler.ratelimiter.MessageRateLimiterImpl;
|
||||
import netneutrality.thread.ThreadManager;
|
||||
import netneutrality.utils.JpaUtils;
|
||||
import netneutrality.utils.MessageFunction;
|
||||
import netneutrality.utils.Settings;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.slf4j.Logger;
|
||||
@@ -34,7 +35,8 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class GuildManager {
|
||||
|
||||
public enum Settings {
|
||||
public enum GSettings {
|
||||
PREFIX("PREFIX", Settings.getInstance().get("BOT_PREFIX", "$")),
|
||||
MUSIC_ROLE("MUSIC_ROLE", ""),
|
||||
MUSIC_CHANNEL("MUSIC_CHANNEL", ""),
|
||||
MUSIC_VOLUME("MUSIC_VOLUME", "30"),
|
||||
@@ -44,7 +46,7 @@ public class GuildManager {
|
||||
private final String name;
|
||||
private final String defaultValue;
|
||||
|
||||
Settings(String name, String defaultValue) {
|
||||
GSettings(String name, String defaultValue) {
|
||||
this.name = name;
|
||||
this.defaultValue = defaultValue;
|
||||
}
|
||||
@@ -140,7 +142,7 @@ public class GuildManager {
|
||||
return settingsCache;
|
||||
}
|
||||
|
||||
public String getSetting(Settings setting) {
|
||||
public String getSetting(GSettings setting) {
|
||||
String value = settingsCache.get(setting.getName());
|
||||
|
||||
if (value == null) {
|
||||
@@ -150,7 +152,7 @@ public class GuildManager {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setSettingValue(Settings setting, String value) {
|
||||
public void setSettingValue(GSettings setting, String value) {
|
||||
Session session = sessionFactory.openSession();
|
||||
JpaUtils.tryLoad(session, guildEntity, guildEntity.getGuildId());
|
||||
|
||||
|
||||
@@ -22,15 +22,14 @@ public class MessageReceivedHandler extends ListenerAdapter {
|
||||
|
||||
@Override
|
||||
public void onGuildMessageReceived(@NotNull GuildMessageReceivedEvent event) {
|
||||
if (event.getAuthor().isBot()) return;
|
||||
if (event.isWebhookMessage()) return;
|
||||
|
||||
Message message = event.getMessage();
|
||||
Member member = event.getMember();
|
||||
User user = event.getAuthor();
|
||||
Guild guild = event.getGuild();
|
||||
TextChannel channel = event.getChannel();
|
||||
|
||||
if (user.isBot()) return;
|
||||
if (event.isWebhookMessage()) return;
|
||||
|
||||
Sentry.addBreadcrumb(Breadcrumb.info("New message from " + member.getEffectiveName()));
|
||||
|
||||
CommandContext context = CommandContext.createContext(event);
|
||||
@@ -38,17 +37,20 @@ public class MessageReceivedHandler extends ListenerAdapter {
|
||||
GuildManager.getManager(guild).getRateLimiter().check(member, message, channel);
|
||||
GuildManager.getManager(guild).checkAndLogMessage(message, member, channel);
|
||||
|
||||
String msg = message.getContentDisplay().trim();
|
||||
String rawMessage = message.getContentDisplay().trim();
|
||||
//String prefix = Settings.getInstance().get("BOT_PREFIX", "$");
|
||||
String prefix = GuildManager.getManager(guild).getSetting(GuildManager.GSettings.PREFIX);
|
||||
|
||||
if (msg.startsWith(Settings.getInstance().get("BOT_PREFIX", "$"))) {
|
||||
msg = msg.substring(Settings.getInstance().get("BOT_PREFIX", "$").length()).trim();
|
||||
String cmd = msg.split(" ", 2)[0];
|
||||
if (rawMessage.startsWith(prefix)) {
|
||||
rawMessage = rawMessage.replaceFirst(String.format("^[%s\\s]{1,}", prefix), "").trim();
|
||||
// rawMessage = rawMessage.substring(prefix.length()).trim();
|
||||
String commandString = rawMessage.split(" ", 2)[0];
|
||||
|
||||
|
||||
if (CommandManager.commands.containsKey(cmd) || CommandManager.commandsAlias.containsKey(cmd)) {
|
||||
AbstractCommand c = CommandManager.commands.containsKey(cmd) ? CommandManager.commands.get(cmd) : CommandManager.commandsAlias.get(cmd);
|
||||
if (CommandManager.isValidCommand(commandString)) {
|
||||
AbstractCommand command = CommandManager.getCommand(commandString);
|
||||
|
||||
context.dispatch(c);
|
||||
context.dispatch(command);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
@@ -55,7 +55,7 @@ public class MusicManager {
|
||||
this.guild = guild;
|
||||
this.player = playerManager.createPlayer();
|
||||
this.scheduler = new TrackScheduler(this);
|
||||
this.baseVolume = Integer.parseInt(GuildManager.getManager(guild).getSetting(GuildManager.Settings.MUSIC_VOLUME));
|
||||
this.baseVolume = Integer.parseInt(GuildManager.getManager(guild).getSetting(GuildManager.GSettings.MUSIC_VOLUME));
|
||||
|
||||
guild.getAudioManager().setSendingHandler(new AudioPlayerSendHandler(player));
|
||||
player.addListener(scheduler);
|
||||
|
||||
@@ -30,20 +30,12 @@ public class MessageFunction {
|
||||
|
||||
private final static Logger logger = LoggerFactory.getLogger(MessageFunction.class);
|
||||
|
||||
public static void logMessageIfNeeded(Guild guild, TextChannel channel, User author, Message message) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static Member getStartingMention(Message message) {
|
||||
if (isStartingWithMention(message)) {
|
||||
return message.getMentionedMembers().get(0);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static boolean isStartingWithMention(Message message) {
|
||||
@@ -188,7 +180,7 @@ public class MessageFunction {
|
||||
message.setColor(Color.BLUE);
|
||||
}
|
||||
|
||||
message.addField(String.format("%s%s %s", Settings.getInstance().get("BOT_PREFIX"), command.getCommandName(), availAlias), description, false);
|
||||
message.addField(String.format("%s %s", command.getCommandName(), availAlias), description, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user