Added StarBoard

This commit is contained in:
Hax 2019-12-13 20:20:01 +01:00
parent 5979537371
commit 805ac1975e
4 changed files with 149 additions and 5 deletions

View file

@ -88,7 +88,8 @@ public class Hadder {
new RegionChangeCommand(), new RegionChangeCommand(),
new AboutCommand(), new AboutCommand(),
new LanguageCommand(), new LanguageCommand(),
new LinkCommand()), config, helpCommand); new LinkCommand(),
new SetStarBoardCommand()), config, helpCommand);
builder.addEventListeners( builder.addEventListeners(
new MentionListener(rethink), new MentionListener(rethink),
@ -99,7 +100,8 @@ public class Hadder {
// new LinkListener(rethink), // new LinkListener(rethink),
new InviteLinkListener(rethink), new InviteLinkListener(rethink),
new RulesListener(rethink), new RulesListener(rethink),
new SomeoneListener()); new SomeoneListener(),
new StarboardListener(rethink));
try { try {
shardManager = builder.build(); shardManager = builder.build();

View file

@ -55,7 +55,12 @@ public class Rethink {
} }
public Object get(String table, String where, String value, String column) { public Object get(String table, String where, String value, String column) {
return this.getAsArray(table, where, value).getJSONObject(0).get(column); JSONArray array = this.getAsArray(table, where, value);
if (array.length()>0)
if (array.getJSONObject(0).has(column))
return array.getJSONObject(0).get(column);
else return null;
else return null;
} }
public String update(String table, String wherevalue, String what, String whatvalue) { public String update(String table, String wherevalue, String what, String whatvalue) {
@ -92,7 +97,11 @@ public class Rethink {
} catch (ReqlOpFailedError e) { } catch (ReqlOpFailedError e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
} }
try {
r.tableCreate("stars").run(conn);
} catch (ReqlOpFailedError e) {
System.out.println(e.getMessage());
}
} }
public void setUserPrefix(String prefix, String userid) { public void setUserPrefix(String prefix, String userid) {
@ -143,13 +152,47 @@ public class Rethink {
} }
public void insertGuild(String id) { public void insertGuild(String id) {
this.insert("server", r.hashMap("id", id).with("prefix", "h.").with("links", "[]").with("linkchannel", "").with("message_id", "").with("role_id", "").with("invite_detect", false)); this.insert("server", r.hashMap("id", id)
.with("prefix", "h.")
.with("links", "[]")
.with("linkchannel", "")
.with("message_id", "")
.with("role_id", "")
.with("invite_detect", false)
.with("starboard", "")
);
} }
public void insertUser(String id) { public void insertUser(String id) {
this.insert("user", r.hashMap("id", id).with("prefix", "h.").with("language", "en")); this.insert("user", r.hashMap("id", id).with("prefix", "h.").with("language", "en"));
} }
// TODO: Write Command to set
public void setStarboardChannel(String guildid, String channelid) {
this.update("server", guildid, "starboard", channelid);
}
public String getStarboardChannel(String guildid) {
return (String) this.get("server", "id", guildid, "starboard");
}
public boolean hasStarboardChannel(String guildid) {
return !this.get("server", "id", guildid, "starboard").equals("");
}
// TODO: Create Starboardlistener
public void insertStarboardMessage(String messageid, String guildid, String starboardmessageid) {
this.insert("stars", r.hashMap("msg", messageid).with("guild", guildid).with("starboardmsg", starboardmessageid));
}
public String getStarboardMessage(String messageid) {
return (String) this.get("stars", "msg", messageid, "starboardmsg");
}
public boolean hasStarboardMessage(String messageid) {
return this.get("stars", "msg", messageid, "guild") != null;
}
public void updateRules(String guild_id, String message_id, String role_id, String accept_emote, String decline_emote) { public void updateRules(String guild_id, String message_id, String role_id, String accept_emote, String decline_emote) {
this.update("server", guild_id, "message_id", message_id); this.update("server", guild_id, "message_id", message_id);
this.update("server", guild_id, "role_id", role_id); this.update("server", guild_id, "role_id", role_id);

View file

@ -0,0 +1,32 @@
package com.bbn.hadder.commands.moderation;
import com.bbn.hadder.commands.Command;
import com.bbn.hadder.commands.CommandEvent;
import net.dv8tion.jda.api.EmbedBuilder;
public class SetStarBoardCommand implements Command {
@Override
public void executed(String[] args, CommandEvent event) {
if (event.getMessage().getMentionedChannels().size()==1) {
event.getRethink().setStarboardChannel(event.getGuild().getId(), event.getMessage().getMentionedChannels().get(0).getId());
event.getChannel().sendMessage(new EmbedBuilder().setTitle("Successfully set the Channel!").build()).queue();
} else {
event.getHelpCommand().sendHelp(this, event);
}
}
@Override
public String[] labels() {
return new String[]{"setstarboard"};
}
@Override
public String description() {
return "Sets the starboard channel";
}
@Override
public String usage() {
return "<channelid>";
}
}

View file

@ -0,0 +1,67 @@
package com.bbn.hadder.listener;
import com.bbn.hadder.Rethink;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.MessageBuilder;
import net.dv8tion.jda.api.events.message.react.GenericMessageReactionEvent;
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
import net.dv8tion.jda.api.events.message.react.MessageReactionRemoveEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import javax.annotation.Nonnull;
import java.time.format.DateTimeFormatter;
public class StarboardListener extends ListenerAdapter {
private Rethink rethink;
public StarboardListener(Rethink rethink) {
this.rethink = rethink;
}
@Override
public void onMessageReactionAdd(@Nonnull MessageReactionAddEvent event) {
update(event);
}
@Override
public void onMessageReactionRemove(@Nonnull MessageReactionRemoveEvent event) {
update(event);
}
public void update(GenericMessageReactionEvent event) {
if (event.getReaction().getReactionEmote().getName().equals("")) {
if (!rethink.hasStarboardMessage(event.getMessageId())) {
if (rethink.hasStarboardChannel(event.getGuild().getId())) {
event.getChannel().retrieveMessageById(event.getMessageId()).queue(msg -> {
event.getGuild().getTextChannelById(rethink.getStarboardChannel(event.getGuild().getId()))
.sendMessage(new MessageBuilder()
.setContent("⭐1" + " " + event.getTextChannel().getAsMention())
.setEmbed(
new EmbedBuilder()
.setAuthor(event.getUser().getAsTag())
.setDescription(msg.getContentRaw())
.setTimestamp(msg.getTimeCreated()).build()).build()).queue(
starboardmsg -> {
rethink.insertStarboardMessage(msg.getId(), event.getGuild().getId(), starboardmsg.getId());
}
);
});
}
} else {
event.getGuild().getTextChannelById(rethink.getStarboardChannel(event.getGuild().getId()))
.retrieveMessageById(rethink.getStarboardMessage(event.getMessageId())).queue(
msg -> {
msg.editMessage(new MessageBuilder()
.setContent("" + event.getReaction().getCount() + " " + event.getTextChannel().getAsMention())
.setEmbed(
new EmbedBuilder()
.setAuthor(event.getUser().getAsTag())
.setDescription(msg.getContentRaw())
.setTimestamp(msg.getTimeCreated()).build()).build()).queue();
}
);
}
}
}
}