Discord wants privacy, discord gets privacy.
This commit is contained in:
parent
466b27eb02
commit
b58b8676c1
@ -2,6 +2,7 @@ package xyz.sheepstar.global.api;
|
|||||||
|
|
||||||
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
|
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
|
||||||
import xyz.sheepstar.global.api.models.GlobalUserSlowMode;
|
import xyz.sheepstar.global.api.models.GlobalUserSlowMode;
|
||||||
|
import xyz.sheepstar.global.api.models.UserPrivacyManager;
|
||||||
import xyz.sheepstar.global.api.models.ban.ServerBanManager;
|
import xyz.sheepstar.global.api.models.ban.ServerBanManager;
|
||||||
import xyz.sheepstar.global.api.models.ban.UserBanManager;
|
import xyz.sheepstar.global.api.models.ban.UserBanManager;
|
||||||
import xyz.sheepstar.util.bot.command.GuildEventController;
|
import xyz.sheepstar.util.bot.command.GuildEventController;
|
||||||
@ -13,6 +14,7 @@ public class GlobalValidation extends GuildListener {
|
|||||||
GlobalUserSlowMode slowMode = (GlobalUserSlowMode) table(GlobalUserSlowMode.class);
|
GlobalUserSlowMode slowMode = (GlobalUserSlowMode) table(GlobalUserSlowMode.class);
|
||||||
UserBanManager userBan = (UserBanManager) table(UserBanManager.class);
|
UserBanManager userBan = (UserBanManager) table(UserBanManager.class);
|
||||||
ServerBanManager serverBan = (ServerBanManager) table(ServerBanManager.class);
|
ServerBanManager serverBan = (ServerBanManager) table(ServerBanManager.class);
|
||||||
|
UserPrivacyManager privacyManager = (UserPrivacyManager) table(UserPrivacyManager.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validates the global message received event
|
* Validates the global message received event
|
||||||
@ -25,6 +27,8 @@ public class GlobalValidation extends GuildListener {
|
|||||||
String messageContent = receivedEvent.getMessage().getContentRaw();
|
String messageContent = receivedEvent.getMessage().getContentRaw();
|
||||||
String lowerContent = messageContent.toLowerCase();
|
String lowerContent = messageContent.toLowerCase();
|
||||||
|
|
||||||
|
if (privacyManager.isPrivateClient(event.getAuthor().getId())) throw new PublicCommandException("global.user_privacy");
|
||||||
|
|
||||||
// Check if the bot is tagged
|
// Check if the bot is tagged
|
||||||
if (messageContent.startsWith(String.format("<@!%s>", jda.getSelfUser().getId()))) return false;
|
if (messageContent.startsWith(String.format("<@!%s>", jda.getSelfUser().getId()))) return false;
|
||||||
|
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
package xyz.sheepstar.global.api.models;
|
||||||
|
|
||||||
|
import de.gnmyt.sqltoolkit.types.SQLType;
|
||||||
|
import xyz.sheepstar.util.sql.SheepManager;
|
||||||
|
|
||||||
|
public class UserPrivacyManager extends SheepManager {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String tableName() {
|
||||||
|
return "global_privacy";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void tableFields() {
|
||||||
|
custom("clientId").type(SQLType.VARCHAR).length(38).add();
|
||||||
|
custom("status").type(SQLType.INTEGER).length(1).add();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean exists(String clientId) {
|
||||||
|
return containsRow("clientId", clientId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPrivateClient(String clientId) {
|
||||||
|
if (!exists(clientId)) return false;
|
||||||
|
return select().where("clientId", clientId).getResult().getInteger("status") == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void registerPrivateClient(String clientId, boolean status) {
|
||||||
|
if (exists(clientId)) return;
|
||||||
|
insert().value("clientId", clientId).value("status", status ? 1 : 0).execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrivateClient(String clientId, boolean status) {
|
||||||
|
if (!exists(clientId)) {
|
||||||
|
registerPrivateClient(clientId, status);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
update().where("clientId", clientId).set("status", status ? 1 : 0).execute();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package xyz.sheepstar.global.commands;
|
||||||
|
|
||||||
|
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||||
|
import xyz.sheepstar.global.api.GlobalCommand;
|
||||||
|
import xyz.sheepstar.global.api.models.UserPrivacyManager;
|
||||||
|
import xyz.sheepstar.util.bot.command.Arguments;
|
||||||
|
import xyz.sheepstar.util.bot.command.GuildEventController;
|
||||||
|
import xyz.sheepstar.util.bot.command.annotations.CommandMeta;
|
||||||
|
|
||||||
|
@CommandMeta(aliases = "global", subAliases = "privacy", description = "Updates the privacy of your user account")
|
||||||
|
public class PrivacyCommand extends GlobalCommand {
|
||||||
|
|
||||||
|
private final UserPrivacyManager privacyManager = (UserPrivacyManager) table(UserPrivacyManager.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void usage() {
|
||||||
|
usage(OptionType.BOOLEAN, "tracking", "Allow sheepstar to read the content of messages written to a global channel")
|
||||||
|
.required(true).add();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GuildEventController event, Arguments args) throws Exception {
|
||||||
|
privacyManager.setPrivateClient(event.getAuthor().getId(), !args.getBoolean("tracking"));
|
||||||
|
|
||||||
|
event.primary("global.user.privacy_updated", args.getBoolean("tracking") ? "Yes" : "No");
|
||||||
|
}
|
||||||
|
}
|
@ -2,20 +2,14 @@ package xyz.sheepstar.global.core;
|
|||||||
|
|
||||||
import xyz.sheepstar.global.api.DesignManager;
|
import xyz.sheepstar.global.api.DesignManager;
|
||||||
import xyz.sheepstar.global.api.GlobalValidator;
|
import xyz.sheepstar.global.api.GlobalValidator;
|
||||||
import xyz.sheepstar.global.api.models.GlobalManager;
|
import xyz.sheepstar.global.api.models.*;
|
||||||
import xyz.sheepstar.global.api.models.GlobalUserSlowMode;
|
|
||||||
import xyz.sheepstar.global.api.models.RoomCategoryManager;
|
|
||||||
import xyz.sheepstar.global.api.models.RoomManager;
|
|
||||||
import xyz.sheepstar.global.api.models.ban.*;
|
import xyz.sheepstar.global.api.models.ban.*;
|
||||||
import xyz.sheepstar.global.api.models.emote.EmotePackManager;
|
import xyz.sheepstar.global.api.models.emote.EmotePackManager;
|
||||||
import xyz.sheepstar.global.api.models.emote.EnabledEmotePackManager;
|
import xyz.sheepstar.global.api.models.emote.EnabledEmotePackManager;
|
||||||
import xyz.sheepstar.global.api.models.emote.GlobalEmoteManager;
|
import xyz.sheepstar.global.api.models.emote.GlobalEmoteManager;
|
||||||
import xyz.sheepstar.global.api.models.log.LogManager;
|
import xyz.sheepstar.global.api.models.log.LogManager;
|
||||||
import xyz.sheepstar.global.api.models.log.OriginalLogManager;
|
import xyz.sheepstar.global.api.models.log.OriginalLogManager;
|
||||||
import xyz.sheepstar.global.commands.EmotePackCommand;
|
import xyz.sheepstar.global.commands.*;
|
||||||
import xyz.sheepstar.global.commands.ListEmotesCommand;
|
|
||||||
import xyz.sheepstar.global.commands.LogCommand;
|
|
||||||
import xyz.sheepstar.global.commands.RulesCommand;
|
|
||||||
import xyz.sheepstar.global.commands.ban.*;
|
import xyz.sheepstar.global.commands.ban.*;
|
||||||
import xyz.sheepstar.global.commands.design.ChangeDesignCommand;
|
import xyz.sheepstar.global.commands.design.ChangeDesignCommand;
|
||||||
import xyz.sheepstar.global.commands.language.ChangeLanguageCommand;
|
import xyz.sheepstar.global.commands.language.ChangeLanguageCommand;
|
||||||
@ -145,6 +139,8 @@ public class GlobalBootstrap extends SheepstarModule {
|
|||||||
|
|
||||||
registerTable(new EmotePackManager());
|
registerTable(new EmotePackManager());
|
||||||
registerTable(new EnabledEmotePackManager());
|
registerTable(new EnabledEmotePackManager());
|
||||||
|
|
||||||
|
registerTable(new UserPrivacyManager());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -181,6 +177,9 @@ public class GlobalBootstrap extends SheepstarModule {
|
|||||||
// Register report commands
|
// Register report commands
|
||||||
importManager.registerCommands(new ReportCommand());
|
importManager.registerCommands(new ReportCommand());
|
||||||
|
|
||||||
|
// Register privacy command
|
||||||
|
importManager.registerCommands(new PrivacyCommand());
|
||||||
|
|
||||||
// Register listeners
|
// Register listeners
|
||||||
importManager.registerListener(new GlobalListener());
|
importManager.registerListener(new GlobalListener());
|
||||||
importManager.registerListener(new DeleteListener());
|
importManager.registerListener(new DeleteListener());
|
||||||
|
Reference in New Issue
Block a user