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 LeaveCommand(),
|
||||||
new GuildLeaveCommand(),
|
new GuildLeaveCommand(),
|
||||||
new MemeCommand(),
|
new MemeCommand(),
|
||||||
|
new InviteDetectCommand(),
|
||||||
new LinkCommand()), config, helpCommand);
|
new LinkCommand()), config, helpCommand);
|
||||||
|
|
||||||
builder.addEventListeners(
|
builder.addEventListeners(
|
||||||
|
|
@ -87,6 +88,7 @@ public class Hadder {
|
||||||
new GuildListener(rethink, config),
|
new GuildListener(rethink, config),
|
||||||
new ReadyListener(rethink, config),
|
new ReadyListener(rethink, config),
|
||||||
new LinkListener(rethink),
|
new LinkListener(rethink),
|
||||||
|
new InviteLinkListener(rethink),
|
||||||
new RulesListener(rethink));
|
new RulesListener(rethink));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ public class Rethink {
|
||||||
.connect();
|
.connect();
|
||||||
System.out.println("DB CONNECTED");
|
System.out.println("DB CONNECTED");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println(e.toString());
|
e.printStackTrace();
|
||||||
System.out.println("DB CONNECTION FAILED");
|
System.out.println("DB CONNECTION FAILED");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -59,7 +59,7 @@ public class Rethink {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String update(String table, String wherevalue, String what, String whatvalue) {
|
private String update(String table, String wherevalue, String what, String whatvalue) {
|
||||||
String out="";
|
String out = "";
|
||||||
try {
|
try {
|
||||||
Cursor cursor = r.table(table).get(wherevalue).update(r.hashMap(what, whatvalue)).run(conn);
|
Cursor cursor = r.table(table).get(wherevalue).update(r.hashMap(what, whatvalue)).run(conn);
|
||||||
out=cursor.toString();
|
out=cursor.toString();
|
||||||
|
|
@ -95,16 +95,16 @@ public class Rethink {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String setUserPrefix(String prefix, String userid) {
|
public void setUserPrefix(String prefix, String userid) {
|
||||||
return this.update("user", userid, "prefix", prefix);
|
this.update("user", userid, "prefix", prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUserPrefix(String id) {
|
public String getUserPrefix(String id) {
|
||||||
return (String) this.get("user", "id", id, "prefix");
|
return (String) this.get("user", "id", id, "prefix");
|
||||||
}
|
}
|
||||||
|
|
||||||
public String setGuildPrefix(String prefix, String guildid) {
|
public void setGuildPrefix(String prefix, String guildid) {
|
||||||
return this.update("server", guildid, "prefix", prefix);
|
this.update("server", guildid, "prefix", prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getGuildPrefix(String id) {
|
public String getGuildPrefix(String id) {
|
||||||
|
|
@ -115,12 +115,12 @@ public class Rethink {
|
||||||
return new JSONArray((String) this.get("server", "id", id, "links"));
|
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);
|
JSONArray links = getLinks(guildid);
|
||||||
for (int i = 0; links.length()>i; i++) {
|
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) {
|
public String removeLinkedGuild(String guildid, String linkid) {
|
||||||
|
|
@ -134,26 +134,25 @@ public class Rethink {
|
||||||
return this.update("server", guildid, "links", linkedguildslist.toString());
|
return this.update("server", guildid, "links", linkedguildslist.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String setLinkChannel(String guildid, String channelid) {
|
public void setLinkChannel(String guildid, String channelid) {
|
||||||
return this.update("server", guildid, "linkchannel", channelid);
|
this.update("server", guildid, "linkchannel", channelid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getLinkChannel(String guildid) {
|
public String getLinkChannel(String guildid) {
|
||||||
return (String) this.get("server", "id", guildid, "linkchannel");
|
return (String) this.get("server", "id", guildid, "linkchannel");
|
||||||
}
|
}
|
||||||
|
|
||||||
public String insertGuild(String id) {
|
public void insertGuild(String id) {
|
||||||
return this.insert("server", r.hashMap("id", id).with("prefix", "h.").with("links", "[]").with("linkchannel", "").with("message_id", "").with("role_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) {
|
public void insertUser(String id) {
|
||||||
return this.insert("user", r.hashMap("id", id).with("prefix", "h."));
|
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, "message_id", message_id);
|
||||||
this.update("server", guild_id, "role_id", role_id);
|
this.update("server", guild_id, "role_id", role_id);
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getRulesMID(String guild_id) {
|
public String getRulesMID(String guild_id) {
|
||||||
|
|
@ -164,4 +163,16 @@ public class Rethink {
|
||||||
return (String) this.get("server", "id", guild_id, "role_id");
|
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.core.LinkUtils;
|
||||||
import com.bbn.hadder.utils.MessageEditor;
|
import com.bbn.hadder.utils.MessageEditor;
|
||||||
import net.dv8tion.jda.api.Permission;
|
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.entities.MessageEmbed;
|
||||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
|
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
|
||||||
|
|
@ -70,11 +71,9 @@ public class LinkListener extends ListenerAdapter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
|
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
|
||||||
if (!event.isWebhookMessage()) {
|
if (!event.isWebhookMessage() && event.getChannel().getId().equals(rethink.getLinkChannel(event.getGuild().getId())) && event.isFromType(ChannelType.TEXT)) {
|
||||||
if (event.getChannel().getId().equals(rethink.getLinkChannel(event.getGuild().getId()))) {
|
|
||||||
new LinkUtils().sendAll(rethink.getLinks(event.getGuild().getId()), event.getJDA(), event.getMessage(), event.getAuthor(), new ArrayList<>() {
|
new LinkUtils().sendAll(rethink.getLinks(event.getGuild().getId()), event.getJDA(), event.getMessage(), event.getAuthor(), new ArrayList<>() {
|
||||||
}, rethink, false);
|
}, rethink, false);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue