Merge pull request #256 from BigBotNetwork/greg-dev

Merged!
This commit is contained in:
Skidder 2019-12-26 22:34:52 +01:00 committed by GitHub
commit 4bbb27b79b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 168 additions and 50 deletions

View file

@ -19,7 +19,7 @@
<dependency>
<groupId>net.dv8tion</groupId>
<artifactId>JDA</artifactId>
<version>4.1.0_81</version>
<version>4.1.0_84</version>
</dependency>
<dependency>
<groupId>org.json</groupId>

View file

@ -94,6 +94,7 @@ public class Hadder {
new QueueCommand(),
new InfoCommand(),
new SkipCommand(),
new EditRulesCommand(),
new StopCommand()), config, helpCommand);
builder.addEventListeners(

View file

@ -4,7 +4,6 @@ import com.bbn.hadder.core.Config;
import com.rethinkdb.RethinkDB;
import com.rethinkdb.gen.exc.ReqlOpFailedError;
import com.rethinkdb.net.Connection;
import com.rethinkdb.net.Cursor;
import org.json.JSONArray;
import java.util.NoSuchElementException;
@ -63,26 +62,24 @@ public class Rethink {
else return null;
}
public String update(String table, String wherevalue, String what, String whatvalue) {
String out = "";
public void update(String table, String value, String what, String whatvalue) {
try {
Cursor cursor = r.table(table).get(wherevalue).update(r.hashMap(what, whatvalue)).run(conn);
out=cursor.toString();
} catch (ClassCastException ignored) {}
return out;
r.table(table).get(value).update(r.hashMap(what, whatvalue)).run(conn);
} catch (ClassCastException e) {
e.printStackTrace();
}
}
public String insert(String table, Object object) {
String out = "";
public void insert(String table, Object object) {
try {
Cursor cursor = r.table(table).insert(object).run(conn);
out = cursor.next().toString();
} catch (ClassCastException ignored) {}
return out;
r.table(table).insert(object).run(conn);
} catch (ClassCastException e) {
e.printStackTrace();
}
}
public void remove(String table, String where, String wherevalue) {
r.table(table).filter(row -> row.g(where.toLowerCase()).eq(wherevalue)).delete().run(conn);
public void remove(String table, String where, String value) {
r.table(table).filter(row -> row.g(where.toLowerCase()).eq(value)).delete().run(conn);
}
public void setup() {
@ -108,16 +105,16 @@ public class Rethink {
}
}
public void setUserPrefix(String prefix, String userid) {
this.update("user", userid, "prefix", prefix);
public void setUserPrefix(String prefix, String user_id) {
this.update("user", user_id, "prefix", prefix);
}
public String getUserPrefix(String id) {
return (String) this.get("user", "id", id, "prefix");
}
public void setGuildPrefix(String prefix, String guildid) {
this.update("server", guildid, "prefix", prefix);
public void setGuildPrefix(String prefix, String guild_id) {
this.update("server", guild_id, "prefix", prefix);
}
public String getGuildPrefix(String id) {
@ -139,40 +136,40 @@ public class Rethink {
this.insert("user", r.hashMap("id", id).with("prefix", "h.").with("language", "en"));
}
public void setNeededstars(String stars, String guildid) {
this.update("server", guildid, "neededstars", stars);
public void setNeededstars(String stars, String guild_id) {
this.update("server", guild_id, "neededstars", stars);
}
public String getNeededstars(String guildid) {
return (String) this.get("server", "id", guildid, "neededstars");
public String getNeededstars(String guild_id) {
return (String) this.get("server", "id", guild_id, "neededstars");
}
public void setStarboardChannel(String guildid, String channelid) {
this.update("server", guildid, "starboard", channelid);
public void setStarboardChannel(String guild_id, String channel_id) {
this.update("server", guild_id, "starboard", channel_id);
}
public String getStarboardChannel(String guildid) {
return (String) this.get("server", "id", guildid, "starboard");
public String getStarboardChannel(String guild_id) {
return (String) this.get("server", "id", guild_id, "starboard");
}
public boolean hasStarboardChannel(String guildid) {
return !this.get("server", "id", guildid, "starboard").equals("");
public boolean hasStarboardChannel(String guild_id) {
return !this.get("server", "id", guild_id, "starboard").equals("");
}
public void insertStarboardMessage(String messageid, String guildid, String starboardmessageid) {
this.insert("stars", r.hashMap("id", messageid).with("guild", guildid).with("starboardmsg", starboardmessageid));
public void insertStarboardMessage(String message_id, String guild_id, String starboardmessageid) {
this.insert("stars", r.hashMap("id", message_id).with("guild", guild_id).with("starboardmsg", starboardmessageid));
}
public String getStarboardMessage(String messageid) {
return (String) this.get("stars", "id", messageid, "starboardmsg");
public String getStarboardMessage(String message_id) {
return (String) this.get("stars", "id", message_id, "starboardmsg");
}
public void removeStarboardMessage(String messageid) {
this.remove("stars", "id", messageid);
public void removeStarboardMessage(String message_id) {
this.remove("stars", "id", message_id);
}
public boolean hasStarboardMessage(String messageid) {
return this.get("stars", "id", messageid, "guild") != null;
public boolean hasStarboardMessage(String message_id) {
return this.get("stars", "id", message_id, "guild") != null;
}
public void updateRules(String guild_id, String message_id, String role_id, String accept_emote, String decline_emote) {

View file

@ -4,6 +4,7 @@ import com.bbn.hadder.Rethink;
import com.bbn.hadder.commands.general.HelpCommand;
import com.bbn.hadder.core.CommandHandler;
import com.bbn.hadder.core.Config;
import com.bbn.hadder.utils.EventWaiter;
import com.bbn.hadder.utils.MessageEditor;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Message;
@ -18,14 +19,16 @@ public class CommandEvent extends MessageReceivedEvent {
private CommandHandler commandHandler;
private HelpCommand helpCommand;
private MessageEditor messageEditor;
private EventWaiter eventWaiter;
public CommandEvent(@Nonnull JDA api, long responseNumber, @Nonnull Message message, Rethink rethink, Config config, CommandHandler commandHandler, HelpCommand helpCommand, MessageEditor messageEditor) {
public CommandEvent(@Nonnull JDA api, long responseNumber, @Nonnull Message message, Rethink rethink, Config config, CommandHandler commandHandler, HelpCommand helpCommand, MessageEditor messageEditor, EventWaiter eventWaiter) {
super(api, responseNumber, message);
this.rethink = rethink;
this.config = config;
this.commandHandler = commandHandler;
this.helpCommand = helpCommand;
this.messageEditor = messageEditor;
this.eventWaiter = eventWaiter;
}
public Rethink getRethink() {
@ -47,4 +50,8 @@ public class CommandEvent extends MessageReceivedEvent {
public MessageEditor getMessageEditor() {
return messageEditor;
}
public EventWaiter getEventWaiter() {
return eventWaiter;
}
}

View file

@ -37,6 +37,7 @@ public class FeedbackCommand implements Command {
GitHub connection = GitHub.connectUsingOAuth(event.getConfig().getGitHubToken());
GHRepository Hadder = connection.getOrganization("BigBotNetwork").getRepository("Hadder");
GHIssue issue = Hadder.createIssue(title).body("<strong>Feedback by " + event.getAuthor().getAsTag() + "</strong><br>" + description).label("feedback").create();
issue.addLabels("feedback");
event.getTextChannel().sendMessage(
event.getMessageEditor().getMessage(
MessageEditor.MessageType.INFO,

View file

@ -0,0 +1,98 @@
package com.bbn.hadder.commands.moderation;
import com.bbn.hadder.commands.Command;
import com.bbn.hadder.commands.CommandEvent;
import com.bbn.hadder.core.Perm;
import com.bbn.hadder.core.Perms;
import com.bbn.hadder.utils.MessageEditor;
import net.dv8tion.jda.api.entities.TextChannel;
/**
* @author Skidder / GregTCLTK
*/
@Perms(Perm.MANAGE_SERVER)
public class EditRulesCommand implements Command {
@Override
public void executed(String[] args, CommandEvent event) {
if (event.getRethink().getRulesMID(event.getGuild().getId()).length() == 18) {
event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
"commands.moderation.editrules.message.title",
"commands.moderation.editrules.message.description").build()).queue();
event.getEventWaiter().newOnMessageEventWaiter(event1 -> {
String rules = event1.getMessage().getContentRaw();
event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
"commands.moderation.editrules.channel.title",
"commands.moderation.editrules.channel.description").build()).queue();
event.getEventWaiter().newOnMessageEventWaiter(event2 -> {
if (event2.getMessage().getMentionedChannels().size() == 1) {
try {
TextChannel channel = event2.getMessage().getMentionedChannels().get(0);
checkChannel(event, rules, channel);
} catch (Exception e) {
event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
"commands.moderation.editrules.channel.error.title",
"commands.moderation.editrules.channel.error.description")
.build()).queue();
}
} else {
try {
TextChannel channel = event1.getGuild().getTextChannelsByName(event2.getMessage().getContentRaw(), true).get(0);
checkChannel(event, rules, channel);
} catch (Exception e) {
event.getTextChannel().sendMessage(
event.getMessageEditor().getMessage(
MessageEditor.MessageType.ERROR,
"commands.moderation.editrules.channel.error.title",
"commands.moderation.editrules.channel.error.description")
.build()).queue();
}
}
}, event.getJDA(), event.getAuthor());
}, event.getJDA(), event.getAuthor());
} else {
event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
"commands.moderation.editrules.error.title", "",
"commands.moderation.editrules.error.description", event.getRethink().getGuildPrefix(event.getGuild().getId())).build()).queue();
}
}
public void checkChannel(CommandEvent event, String rules, TextChannel channel) {
try {
channel.retrieveMessageById(event.getRethink().getRulesMID(event.getGuild().getId())).queue();
setRules(event, rules, channel);
event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
"commands.moderation.editrules.success.title",
"commands.moderation.editrules.success.description").build()).queue();
} catch (Exception e) {
event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
"commands.moderation.editrules.channel.message.error.title",
"commands.moderation.editrules.channel.message.error.description").build()).queue();
}
}
public void setRules(CommandEvent event, String rules, TextChannel channel) {
channel.retrieveMessageById(event.getRethink().getRulesMID(event.getGuild().getId())).complete().editMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
.setTitle("Rules")
.setDescription(rules)
.build()).queue();
}
@Override
public String[] labels() {
return new String[]{"editrules", "rulesedit", "edit_rules", "rules_edit"};
}
@Override
public String description() {
return "commands.moderation.editrules.help.description";
}
@Override
public String usage() {
return "";
}
}

View file

@ -29,7 +29,7 @@ public class RulesCommand implements Command {
"commands.moderation.rules.setup.title",
"commands.moderation.rules.setup.description")
.build()).queue();
new EventWaiter().newOnMessageEventWaiter(event1 -> {
event.getEventWaiter().newOnMessageEventWaiter(event1 -> {
if (event1.getMessage().getMentionedChannels().size() == 1) {
try {
TextChannel channel = event1.getMessage().getMentionedChannels().get(0);
@ -70,7 +70,7 @@ public class RulesCommand implements Command {
"commands.moderation.rules.rules.description",
channel.getName())
.build()).queue();
new EventWaiter().newOnMessageEventWaiter(event2 -> {
event.getEventWaiter().newOnMessageEventWaiter(event2 -> {
String message = event2.getMessage().getContentRaw();
event2.getChannel().sendMessage(
event.getMessageEditor().getMessage(
@ -120,16 +120,16 @@ public class RulesCommand implements Command {
"",
"commands.moderation.rules.emote.accept.description", role.getName())
.build()).queue();
new EventWaiter().newOnMessageEventWaiter(event4 -> {
event.getEventWaiter().newOnMessageEventWaiter(event4 -> {
if (event4.getMessage().getEmotes().size() == 1) {
Emote aemote = event4.getMessage().getEmotes().get(0);
event4.getChannel().sendMessage(
event.getMessageEditor().getMessage(
MessageEditor.MessageType.INFO,
"commands.moderation.rules.emote.decline.title", "",
"commands.moderation.rules.emote.decline.title", String.valueOf(aemote))
"commands.moderation.rules.emote.decline.description", String.valueOf(aemote))
.build()).queue();
new EventWaiter().newOnMessageEventWaiter(event5 -> {
event.getEventWaiter().newOnMessageEventWaiter(event5 -> {
Emote demote = event5.getMessage().getEmotes().get(0);
if (!aemote.equals(demote)) {
Message rules = channel.sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
@ -174,7 +174,7 @@ public class RulesCommand implements Command {
"commands.moderation.rules.emote.decline.title",
"commands.moderation.rules.emoji.decline.description")
.build()).queue();
new EventWaiter().newOnMessageEventWaiter(event5 -> {
event.getEventWaiter().newOnMessageEventWaiter(event5 -> {
String demote = event5.getMessage().getContentRaw();
if (!aemote.equals(demote)) {
Message rules = channel.sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)

View file

@ -4,6 +4,7 @@ import com.bbn.hadder.Rethink;
import com.bbn.hadder.commands.Command;
import com.bbn.hadder.commands.CommandEvent;
import com.bbn.hadder.commands.general.HelpCommand;
import com.bbn.hadder.utils.EventWaiter;
import com.bbn.hadder.utils.MessageEditor;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
@ -34,7 +35,7 @@ public class CommandHandler {
if (args.length > 0 && args[0].equals("")) args = new String[0];
CommandEvent commandEvent = new CommandEvent(event.getJDA(), event.getResponseNumber(), event.getMessage(), rethink,
config, this, helpCommand, new MessageEditor(rethink, event.getAuthor()));
config, this, helpCommand, new MessageEditor(rethink, event.getAuthor()), new EventWaiter());
if (cmd.getClass().getAnnotations().length > 0 && !Arrays.asList(cmd.getClass().getAnnotations()).contains(Perms.class)) {
for (Perm perm : cmd.getClass().getAnnotation(Perms.class).value()) {
if (!perm.check(commandEvent)) {

View file

@ -136,7 +136,7 @@ commands.moderation.rules.setup.title = Set up rules
commands.moderation.rules.setup.description = Welcome to the Hadder rules setup. Please mention the channel in which I should send the rules. Your message should look like\: \#rules or \#verify.
commands.moderation.rules.channel.error.title = Channel not found
commands.moderation.rules.channel.error.description = I can't find the specified channel. Please start the setup again.
commands.moderation.rules.rules.title = Rules
commands.moderation.rules.rules.title = Rules message
commands.moderation.rules.rules.description = The channel was successfully set to %extra%. Please send me the rules now.
commands.moderation.rules.role.title = Role to assign
commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives after he accepted the rules.
@ -148,17 +148,30 @@ commands.moderation.rules.emote.accept.title = Custom Accept Emote
commands.moderation.rules.emote.accept.description = The role has been successfully set to %extra%. Now send me the emote on which your user should react to to get verified.
commands.moderation.rules.emote.decline.title = Custom Decline Emote
commands.moderation.rules.emote.decline.description = The first emote has been successfully set to %extra%. Please send me now the decline emote.
commands.moderation.rules.success.title = Successfully set the rules
commands.moderation.rules.success.description = I successfully send the rules in %extra%.
commands.moderation.rules.emote.error.access.description = I can not access the custom emote(s).
commands.moderation.rules.emote.error.equal.title = Emotes are equal
commands.moderation.rules.emote.error.equal.description = The 1st and 2nd emote equals each other.
commands.moderation.rules.emoji.decline.description = The first emote has been successfully set. Please send me now the decline emote.
commands.moderation.rules.emoji.error.description = The given emote can't be used.
commands.moderation.rules.success.title = Successfully set the rules
commands.moderation.rules.success.description = I successfully send the rules in %extra%.
commands.moderation.rules.error.message.title = Can't write messages
commands.moderation.rules.error.message.description = I can not write messages in the specified channel
commands.moderation.rules.help.description = Setup the rules on your Discord server
commands.moderation.starboard.success.title = Successfully set the Channel\!
commands.moderation.editrules.channel.title = Rules channel
commands.moderation.editrules.channel.description = Please send me the channel with the rules as mention
commands.moderation.editrules.channel.found.error.title = Channel not found
commands.moderation.editrules.channel.found.error.description = I can't find the specified channel. Please start the edit process again.
commands.moderation.editrules.channel.message.error.title = No rules message
commands.moderation.editrules.channel.message.error.description = I can not find the rules message in the specified channel.
commands.moderation.editrules.message.title = New message
commands.moderation.editrules.message.description = Please send me the new rules message now.
commands.moderation.editrules.error.title = No rules
commands.moderation.editrules.error.description = There is nor rules message in this server. Please setup the rules first with %extra%rules
commands.moderation.editrules.success.title = Successfully changed
commands.moderation.editrules.success.description = I successfully changed the rules
commands.moderation.editrules.help.description = Edits the rules message.
commands.music.join.success.title = Successfully connected
commands.music.join.success.description = I successfully connected to %extra%.