Invite Link Detector
This commit is contained in:
parent
fd2258a6fb
commit
40e4215d60
5 changed files with 221 additions and 20 deletions
|
|
@ -78,6 +78,7 @@ public class Hadder {
|
|||
new LeaveCommand(),
|
||||
new GuildLeaveCommand(),
|
||||
new MemeCommand(),
|
||||
new InviteDetectCommand(),
|
||||
new LinkCommand()), config, helpCommand);
|
||||
|
||||
builder.addEventListeners(
|
||||
|
|
@ -87,6 +88,7 @@ public class Hadder {
|
|||
new GuildListener(rethink, config),
|
||||
new ReadyListener(rethink, config),
|
||||
new LinkListener(rethink),
|
||||
new InviteLinkListener(rethink),
|
||||
new RulesListener(rethink));
|
||||
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public class Rethink {
|
|||
.connect();
|
||||
System.out.println("DB CONNECTED");
|
||||
} catch (Exception e) {
|
||||
System.out.println(e.toString());
|
||||
e.printStackTrace();
|
||||
System.out.println("DB CONNECTION FAILED");
|
||||
}
|
||||
}
|
||||
|
|
@ -59,7 +59,7 @@ public class Rethink {
|
|||
}
|
||||
|
||||
private String update(String table, String wherevalue, String what, String whatvalue) {
|
||||
String out="";
|
||||
String out = "";
|
||||
try {
|
||||
Cursor cursor = r.table(table).get(wherevalue).update(r.hashMap(what, whatvalue)).run(conn);
|
||||
out=cursor.toString();
|
||||
|
|
@ -95,16 +95,16 @@ public class Rethink {
|
|||
|
||||
}
|
||||
|
||||
public String setUserPrefix(String prefix, String userid) {
|
||||
return this.update("user", userid, "prefix", prefix);
|
||||
public void setUserPrefix(String prefix, String userid) {
|
||||
this.update("user", userid, "prefix", prefix);
|
||||
}
|
||||
|
||||
public String getUserPrefix(String id) {
|
||||
return (String) this.get("user", "id", id, "prefix");
|
||||
}
|
||||
|
||||
public String setGuildPrefix(String prefix, String guildid) {
|
||||
return this.update("server", guildid, "prefix", prefix);
|
||||
public void setGuildPrefix(String prefix, String guildid) {
|
||||
this.update("server", guildid, "prefix", prefix);
|
||||
}
|
||||
|
||||
public String getGuildPrefix(String id) {
|
||||
|
|
@ -115,12 +115,12 @@ public class Rethink {
|
|||
return new JSONArray((String) this.get("server", "id", id, "links"));
|
||||
}
|
||||
|
||||
public String addLinkedGuild(String guildid, String linkid) {
|
||||
public void addLinkedGuild(String guildid, String linkid) {
|
||||
JSONArray links = getLinks(guildid);
|
||||
for (int i = 0; links.length()>i; i++) {
|
||||
if (links.getString(i).equals(linkid)) return null;
|
||||
if (links.getString(i).equals(linkid)) return;
|
||||
}
|
||||
return this.update("server", guildid, "links", this.getLinks(guildid).put(linkid).toString());
|
||||
this.update("server", guildid, "links", this.getLinks(guildid).put(linkid).toString());
|
||||
}
|
||||
|
||||
public String removeLinkedGuild(String guildid, String linkid) {
|
||||
|
|
@ -134,26 +134,25 @@ public class Rethink {
|
|||
return this.update("server", guildid, "links", linkedguildslist.toString());
|
||||
}
|
||||
|
||||
public String setLinkChannel(String guildid, String channelid) {
|
||||
return this.update("server", guildid, "linkchannel", channelid);
|
||||
public void setLinkChannel(String guildid, String channelid) {
|
||||
this.update("server", guildid, "linkchannel", channelid);
|
||||
}
|
||||
|
||||
public String getLinkChannel(String guildid) {
|
||||
return (String) this.get("server", "id", guildid, "linkchannel");
|
||||
}
|
||||
|
||||
public String insertGuild(String id) {
|
||||
return this.insert("server", r.hashMap("id", id).with("prefix", "h.").with("links", "[]").with("linkchannel", "").with("message_id", "").with("role_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));
|
||||
}
|
||||
|
||||
public String insertUser(String id) {
|
||||
return this.insert("user", r.hashMap("id", id).with("prefix", "h."));
|
||||
public void insertUser(String id) {
|
||||
this.insert("user", r.hashMap("id", id).with("prefix", "h."));
|
||||
}
|
||||
|
||||
public String updateRules(String guild_id, String message_id, String role_id) {
|
||||
public void updateRules(String guild_id, String message_id, String role_id) {
|
||||
this.update("server", guild_id, "message_id", message_id);
|
||||
this.update("server", guild_id, "role_id", role_id);
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getRulesMID(String guild_id) {
|
||||
|
|
@ -164,4 +163,16 @@ public class Rethink {
|
|||
return (String) this.get("server", "id", guild_id, "role_id");
|
||||
}
|
||||
|
||||
public void setInviteDetection(String guild_id, boolean b) {
|
||||
try {
|
||||
r.table("server").get(guild_id).update(r.hashMap("invite_detect", b)).run(conn);
|
||||
} catch (ClassCastException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public Boolean getInviteDetection(String guild_id) {
|
||||
return (Boolean) this.get("server", "id", guild_id, "invite_detect");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
package com.bbn.hadder.commands.moderation;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
import com.bbn.hadder.commands.Command;
|
||||
import com.bbn.hadder.commands.CommandEvent;
|
||||
import com.bbn.hadder.utils.MessageEditor;
|
||||
import net.dv8tion.jda.api.Permission;
|
||||
|
||||
public class InviteDetectCommand implements Command {
|
||||
|
||||
@Override
|
||||
public void executed(String[] args, CommandEvent event) {
|
||||
if (args.length == 1) {
|
||||
if (event.getMember().hasPermission(Permission.MANAGE_SERVER)) {
|
||||
switch (args[0].toLowerCase()) {
|
||||
case "on":
|
||||
if (!event.getRethink().getInviteDetection(event.getGuild().getId())) {
|
||||
event.getRethink().setInviteDetection(event.getGuild().getId(), true);
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
|
||||
.setTitle("Successfully activated")
|
||||
.setDescription("I successfully activated the invite link detection for this guild.")
|
||||
.build()).queue();
|
||||
} else {
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING)
|
||||
.setTitle("Already activated")
|
||||
.setDescription("The invite link detection is already activated on this guild.")
|
||||
.build()).queue();
|
||||
}
|
||||
break;
|
||||
|
||||
case "off":
|
||||
if (event.getRethink().getInviteDetection(event.getGuild().getId())) {
|
||||
event.getRethink().setInviteDetection(event.getGuild().getId(), false);
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
|
||||
.setTitle("Successfully deactivated")
|
||||
.setDescription("I successfully deactivated the invite link detection for this guild.")
|
||||
.build()).queue();
|
||||
} else {
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING)
|
||||
.setTitle("Already deactivated")
|
||||
.setDescription("The invite link detection is already deactivated on this guild.")
|
||||
.build()).queue();
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_PERMISSION).build()).queue();
|
||||
}
|
||||
} else {
|
||||
event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] labels() {
|
||||
return new String[]{"invitedetect", "detectinvite"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return "Activate or deactivate the Discord invite link detection.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String usage() {
|
||||
return "<on/off>";
|
||||
}
|
||||
}
|
||||
118
src/main/java/com/bbn/hadder/listener/InviteLinkListener.java
Normal file
118
src/main/java/com/bbn/hadder/listener/InviteLinkListener.java
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
package com.bbn.hadder.listener;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
import com.bbn.hadder.Rethink;
|
||||
import com.bbn.hadder.utils.MessageEditor;
|
||||
import net.dv8tion.jda.api.Permission;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.events.message.MessageUpdateEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class InviteLinkListener extends ListenerAdapter {
|
||||
|
||||
private Rethink rethink;
|
||||
|
||||
public InviteLinkListener(Rethink rethink) {
|
||||
this.rethink = rethink;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
|
||||
if (event.isFromType(ChannelType.TEXT)) {
|
||||
if (event.getMessage().getContentRaw().contains("discord.gg/")) {
|
||||
if (!event.getMember().hasPermission(Permission.ADMINISTRATOR)) {
|
||||
if (rethink.getInviteDetection(event.getGuild().getId())) {
|
||||
String split = event.getMessage().getContentRaw().split("discord.gg/", 10)[1];
|
||||
String invite = split.split(" ")[0];
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
Request request = new Request.Builder().url("https://canary.discordapp.com/api/v6/invites/" + invite).build();
|
||||
try {
|
||||
Response response = client.newCall(request).execute();
|
||||
JSONObject json = new JSONObject(response.body().string());
|
||||
if (!json.toString().contains("\"message\":")) {
|
||||
event.getMessage().delete().reason("Invite Link detected").queue();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_PERMISSION).build()).queue();
|
||||
}
|
||||
} else if (event.getMessage().getContentRaw().contains("discordapp.com/invite")) {
|
||||
if (!event.getMember().hasPermission(Permission.ADMINISTRATOR)) {
|
||||
if (rethink.getInviteDetection(event.getGuild().getId())) {
|
||||
String split = event.getMessage().getContentRaw().split("discordapp.com/invite/", 10)[1];
|
||||
String invite = split.split(" ")[0];
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
Request request = new Request.Builder().url("https://canary.discordapp.com/api/v6/invites/" + invite).build();
|
||||
try {
|
||||
Response response = client.newCall(request).execute();
|
||||
JSONObject json = new JSONObject(response.body().string());
|
||||
if (!json.toString().contains("\"message\":")) {
|
||||
event.getMessage().delete().reason("Invite Link detected").queue();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessageUpdate(@Nonnull MessageUpdateEvent event) {
|
||||
if (event.isFromType(ChannelType.TEXT)) {
|
||||
if (event.getMessage().getContentRaw().contains("discord.gg/")) {
|
||||
if (event.getMember().hasPermission(Permission.MANAGE_SERVER)) {
|
||||
if (rethink.getInviteDetection(event.getGuild().getId())) {
|
||||
String split = event.getMessage().getContentRaw().split("discord.gg/", 10)[1];
|
||||
String invite = split.split(" ")[0];
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
Request request = new Request.Builder().url("https://canary.discordapp.com/api/v6/invites/" + invite).build();
|
||||
try {
|
||||
Response response = client.newCall(request).execute();
|
||||
JSONObject json = new JSONObject(response.body().string());
|
||||
if (!json.toString().contains("\"message\":")) {
|
||||
event.getMessage().delete().reason("Invite Link detected").queue();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_PERMISSION).build()).queue();
|
||||
}
|
||||
} else if (event.getMessage().getContentRaw().contains("discordapp.com/invite")) {
|
||||
if (event.getMember().hasPermission(Permission.MANAGE_SERVER)) {
|
||||
if (rethink.getInviteDetection(event.getGuild().getId())) {
|
||||
String split = event.getMessage().getContentRaw().split("discordapp.com/invite/", 10)[1];
|
||||
String invite = split.split(" ")[0];
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
Request request = new Request.Builder().url("https://canary.discordapp.com/api/v6/invites/" + invite).build();
|
||||
try {
|
||||
Response response = client.newCall(request).execute();
|
||||
JSONObject json = new JSONObject(response.body().string());
|
||||
if (!json.toString().contains("\"message\":")) {
|
||||
event.getMessage().delete().reason("Invite Link detected").queue();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@ import com.bbn.hadder.Rethink;
|
|||
import com.bbn.hadder.core.LinkUtils;
|
||||
import com.bbn.hadder.utils.MessageEditor;
|
||||
import net.dv8tion.jda.api.Permission;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
|
||||
|
|
@ -70,11 +71,9 @@ public class LinkListener extends ListenerAdapter {
|
|||
|
||||
@Override
|
||||
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
|
||||
if (!event.isWebhookMessage()) {
|
||||
if (event.getChannel().getId().equals(rethink.getLinkChannel(event.getGuild().getId()))) {
|
||||
if (!event.isWebhookMessage() && event.getChannel().getId().equals(rethink.getLinkChannel(event.getGuild().getId())) && event.isFromType(ChannelType.TEXT)) {
|
||||
new LinkUtils().sendAll(rethink.getLinks(event.getGuild().getId()), event.getJDA(), event.getMessage(), event.getAuthor(), new ArrayList<>() {
|
||||
}, rethink, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue