✅ #217
4 changed files with 149 additions and 5 deletions
|
|
@ -88,7 +88,8 @@ public class Hadder {
|
|||
new RegionChangeCommand(),
|
||||
new AboutCommand(),
|
||||
new LanguageCommand(),
|
||||
new LinkCommand()), config, helpCommand);
|
||||
new LinkCommand(),
|
||||
new SetStarBoardCommand()), config, helpCommand);
|
||||
|
||||
builder.addEventListeners(
|
||||
new MentionListener(rethink),
|
||||
|
|
@ -99,7 +100,8 @@ public class Hadder {
|
|||
// new LinkListener(rethink),
|
||||
new InviteLinkListener(rethink),
|
||||
new RulesListener(rethink),
|
||||
new SomeoneListener());
|
||||
new SomeoneListener(),
|
||||
new StarboardListener(rethink));
|
||||
|
||||
try {
|
||||
shardManager = builder.build();
|
||||
|
|
|
|||
|
|
@ -55,7 +55,12 @@ public class Rethink {
|
|||
}
|
||||
|
||||
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) {
|
||||
|
|
@ -92,7 +97,11 @@ public class Rethink {
|
|||
} catch (ReqlOpFailedError e) {
|
||||
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) {
|
||||
|
|
@ -143,13 +152,47 @@ public class Rethink {
|
|||
}
|
||||
|
||||
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) {
|
||||
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) {
|
||||
this.update("server", guild_id, "message_id", message_id);
|
||||
this.update("server", guild_id, "role_id", role_id);
|
||||
|
|
|
|||
|
|
@ -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>";
|
||||
}
|
||||
}
|
||||
67
src/main/java/com/bbn/hadder/listener/StarboardListener.java
Normal file
67
src/main/java/com/bbn/hadder/listener/StarboardListener.java
Normal 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();
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue