Skip to content

Commit 8226111

Browse files
committed
regulate voting
1 parent 39b43ea commit 8226111

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

src/main/java/net/javadiscord/javabot/listener/SuggestionListener.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ private MessageEmbed buildSuggestionEmbed(Message message) {
8787
.setColor(Responses.Type.DEFAULT.getColor())
8888
.setTimestamp(Instant.now())
8989
.setDescription(message.getContentRaw())
90+
.setFooter(message.getAuthor().getId())
9091
.build();
9192
}
9293
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package net.javadiscord.javabot.listener;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import net.dv8tion.jda.api.entities.Message;
5+
import net.dv8tion.jda.api.entities.emoji.Emoji;
6+
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
7+
import net.dv8tion.jda.api.hooks.ListenerAdapter;
8+
import net.javadiscord.javabot.data.config.BotConfig;
9+
10+
/**
11+
* Makes sure users don't vote on/star their own messages.
12+
*/
13+
@RequiredArgsConstructor
14+
public class VotingRegulationListener extends ListenerAdapter{
15+
16+
private final BotConfig botConfig;
17+
18+
@Override
19+
public void onMessageReactionAdd(MessageReactionAddEvent event) {
20+
if(isCriticalEmoji(event)) {
21+
event.retrieveMessage().queue(msg->{
22+
if(doesAuthorMatch(event.getUserIdLong(), msg)) {
23+
msg.removeReaction(event.getEmoji(), event.getUser()).queue();
24+
}
25+
});
26+
}
27+
}
28+
29+
private boolean doesAuthorMatch(long userId, Message msg) {
30+
long suggestionChannelId = botConfig.get(msg.getGuild()).getModerationConfig().getSuggestionChannelId();
31+
return msg.getAuthor().getIdLong()==userId||
32+
msg.getChannel().getIdLong() == suggestionChannelId &&
33+
!msg.getEmbeds().isEmpty() &&
34+
msg.getEmbeds().get(0).getFooter()!=null &&
35+
String.valueOf(userId).equals(msg.getEmbeds().get(0).getFooter().getText());
36+
}
37+
38+
private boolean isCriticalEmoji(MessageReactionAddEvent event) {
39+
return getUpvoteEmoji(event).equals(event.getEmoji()) ||
40+
event.getEmoji().getType() == Emoji.Type.UNICODE &&
41+
botConfig.get(event.getGuild()).getStarboardConfig().getEmojis().contains(event.getEmoji().asUnicode());
42+
}
43+
44+
private Emoji getUpvoteEmoji(MessageReactionAddEvent event) {
45+
return botConfig.getSystems().getEmojiConfig().getUpvoteEmote(event.getJDA());
46+
}
47+
}

0 commit comments

Comments
 (0)