From 83a1aadc1148d547161073d9d35fe57eeeb18fbc Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Fri, 6 Aug 2021 17:44:51 +0200 Subject: [PATCH 1/4] fixed Reaction in Accept.java, reworked Profile.java & added Spotify Emote --- .../javabot/commands/moderation/Warns.java | 9 +- .../commands/other/suggestions/Accept.java | 2 +- .../commands/user_commands/Profile.java | 249 ++++++++++-------- .../javadiscord/javabot/other/Constants.java | 1 + 4 files changed, 155 insertions(+), 106 deletions(-) diff --git a/src/main/java/com/javadiscord/javabot/commands/moderation/Warns.java b/src/main/java/com/javadiscord/javabot/commands/moderation/Warns.java index d6713be78..cc380b3ba 100644 --- a/src/main/java/com/javadiscord/javabot/commands/moderation/Warns.java +++ b/src/main/java/com/javadiscord/javabot/commands/moderation/Warns.java @@ -21,6 +21,13 @@ public class Warns implements SlashCommandHandler { + public long warnCount (Member member) { + MongoDatabase database = mongoClient.getDatabase("userdata"); + MongoCollection warns = database.getCollection("warns"); + + return warns.countDocuments(eq("user_id", member.getId())); + } + @Override public ReplyAction handle(SlashCommandEvent event) { OptionMapping warnsOption = event.getOption("user"); @@ -42,7 +49,7 @@ public ReplyAction handle(SlashCommandEvent event) { var e = new EmbedBuilder() .setAuthor(member.getUser().getAsTag() + " | Warns", null, member.getUser().getEffectiveAvatarUrl()) - .setDescription("```" + member.getUser().getAsTag() + " has been warned " + warns.count(eq("user_id", member.getId())) + " times so far." + .setDescription("```" + member.getUser().getAsTag() + " has been warned " + warnCount(member) + " times so far." + "\n\n" + sb + "```") .setColor(Constants.YELLOW) .setFooter("ID: " + member.getId()) diff --git a/src/main/java/com/javadiscord/javabot/commands/other/suggestions/Accept.java b/src/main/java/com/javadiscord/javabot/commands/other/suggestions/Accept.java index 9bf9f016b..1d483a8e2 100644 --- a/src/main/java/com/javadiscord/javabot/commands/other/suggestions/Accept.java +++ b/src/main/java/com/javadiscord/javabot/commands/other/suggestions/Accept.java @@ -47,7 +47,7 @@ public ReplyAction handle(SlashCommandEvent event) { .setTimestamp(timestamp) .setFooter("Accepted by " + event.getUser().getAsTag()); - msg.editMessage(eb.build()).queue(message1 -> message1.addReaction(Constants.REACTION_UPVOTE).queue()); + msg.editMessageEmbeds(eb.build()).queue(message1 -> message1.addReaction(Constants.REACTION_SUCCESS).queue()); return event.reply("Done!").setEphemeral(true); } else { diff --git a/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java b/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java index 5ad85d7c2..e2cffc6db 100644 --- a/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java +++ b/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java @@ -1,152 +1,193 @@ package com.javadiscord.javabot.commands.user_commands; import com.javadiscord.javabot.commands.SlashCommandHandler; +import com.javadiscord.javabot.commands.moderation.Warns; import com.javadiscord.javabot.commands.other.qotw.Leaderboard; import com.javadiscord.javabot.other.Constants; import com.javadiscord.javabot.other.Database; -import com.javadiscord.javabot.other.Embeds; import com.javadiscord.javabot.other.TimeUtils; -import com.mongodb.client.MongoCollection; -import com.mongodb.client.MongoDatabase; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.Activity; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.RichPresence; import net.dv8tion.jda.api.events.interaction.SlashCommandEvent; import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.requests.restaction.interactions.ReplyAction; -import org.bson.Document; import java.awt.*; -import java.util.List; -import static com.javadiscord.javabot.events.Startup.mongoClient; -import static com.mongodb.client.model.Filters.eq; - -// TODO: Clean up this a lot. -@Deprecated(forRemoval = true) public class Profile implements SlashCommandHandler { - @Override - public ReplyAction handle(SlashCommandEvent event) { + String getBadges (Member member) { - OptionMapping profileOption = event.getOption("user"); - Member member = profileOption == null ? event.getMember() : profileOption.getAsMember(); + String badges = ""; + + if (member.getUser().isBot()) badges += Constants.BOT; + if (!(member.getTimeBoosted() == null)) badges += Constants.SERVER_BOOST; + + badges += member.getUser().getFlags().toString() + .substring(1, member.getUser().getFlags().toString().length() - 1) + .replace(",", "") + .replace("PARTNER", Constants.PARTNER) + .replace("HYPESQUAD_BRAVERY", Constants.BRAVERY) + .replace("HYPESQUAD_BRILLIANCE", Constants.BRILLIANCE) + .replace("HYPESQUAD_BALANCE", Constants.BALANCE) + .replace("VERIFIED_DEVELOPER", Constants.DEV) + .replace("EARLY_SUPPORTER", Constants.EARLY_SUPPORTER) + .replace("SYSTEM", Constants.STAFF) + .replace("BUG_HUNTER_LEVEL_1", Constants.BUG_HUNTER) + .replace("BUG_HUNTER_LEVEL_2", Constants.BUG_HUNTER) + .replace("VERIFIED_BOT", ""); + + return badges; + } + + String getOnlineStatus (Member member) { + + String statusEmote = member.getOnlineStatus().toString() + .replace("ONLINE", Constants.ONLINE) + .replace("IDLE", Constants.IDLE) + .replace("DO_NOT_DISTURB", Constants.DND) + .replace("OFFLINE", Constants.OFFLINE); + + return statusEmote; + } + + Color getColor (Member member) { + + Color color; + if (member.getColor() == null) color = Constants.GRAY; + else color = member.getColor(); + + return color; + } + + String getColorRoleAsMention (Member member) { String highestRole; try { - highestRole = member.getRoles().get(0).getName(); + highestRole = member.getRoles().get(0).getAsMention(); } catch (IndexOutOfBoundsException e) { - highestRole = "everyone"; + highestRole = "None"; } - String timeJoined = member.getTimeJoined().format(TimeUtils.STANDARD_FORMATTER); - String timeCreated = member.getTimeCreated().format(TimeUtils.STANDARD_FORMATTER); + return highestRole; + } - Color color; - String colorText; - if (member.getColor() == null) { - color = new Color(0x2F3136); - colorText = "None"; - - } else { - color = member.getColor(); - colorText = "#" + Integer.toHexString(member.getColorRaw()); - } + String getColorAsHex (Color color) { + return "#" + Integer.toHexString(color.getRGB()).toUpperCase(); + } - String status = member.getOnlineStatus().toString().substring(0, 1).toUpperCase() + member.getOnlineStatus().toString().substring(1).toLowerCase().replace("_", " "); - List activities = member.getActivities(); + Activity getCustomActivity(Member member) { - String customStatus, gameActivity; + Activity activity = null; - try { - if (activities.get(0).getType().toString().equalsIgnoreCase("CUSTOM_STATUS")) { - customStatus = activities.get(0).getName(); - } else { - customStatus = "None"; - } - } catch (IndexOutOfBoundsException e) { - customStatus = "None"; + for (var act : member.getActivities()) { + + + if (act.getType().name().equals("CUSTOM_STATUS")) { + activity = act; + break; + } else continue; } - try { - if (customStatus.equals("None")) { - gameActivity = activities.get(0).getName(); + return activity; + } - } else { - gameActivity = activities.get(1).getName(); - } - } catch (IndexOutOfBoundsException e) { - gameActivity = "None"; + Activity getGameActivity (Member member) { + + Activity activity = null; + + for (var act : member.getActivities()) { + + if (act.getType().name().equals("CUSTOM_STATUS")) continue; + else activity = act; break; } - try { + return activity; + } - String statusEmote = status - .replace("Online", Constants.ONLINE) - .replace("Idle", Constants.IDLE) - .replace("Do not disturb", Constants.DND) - .replace("Offline", Constants.OFFLINE); + String getGameActivityType (Activity activity) { - String badges = member.getUser().getFlags().toString() - .substring(1, member.getUser().getFlags().toString().length() - 1) - .replace(",", "") - .replace("PARTNER", Constants.PARTNER) - .replace("HYPESQUAD_BRAVERY", Constants.BRAVERY) - .replace("HYPESQUAD_BRILLIANCE", Constants.BRILLIANCE) - .replace("HYPESQUAD_BALANCE", Constants.BALANCE) - .replace("VERIFIED_DEVELOPER", Constants.DEV) - .replace("EARLY_SUPPORTER", Constants.EARLY_SUPPORTER) - .replace("SYSTEM", Constants.STAFF) - .replace("BUG_HUNTER_LEVEL_1", Constants.BUG_HUNTER) - .replace("BUG_HUNTER_LEVEL_2", Constants.BUG_HUNTER) - .replace("VERIFIED_BOT", ""); + String type = activity.getType().name().toLowerCase() + .replace("listening", "Listening to") + .replace("default", "Playing"); + + return type; + } + + String getGameActivityDetails (Activity activity) { + + String details = ""; + + if (activity.getName().equals("Spotify")) { + + RichPresence rp = activity.asRichPresence(); + String spotifyURL = "https://open.spotify.com/track/" + rp.getSyncId(); + + details = Constants.SPOTIFY + " [`\"" + rp.getDetails() + "\""; + if (!(rp.getState() == null)) details += " by " + rp.getState(); + details += "`](" + spotifyURL + ")"; - String boostBadge, botBadge; + } else details = activity.getName(); - if (!(member.getTimeBoosted() == null)) { - boostBadge = Constants.SERVER_BOOST; - } else { - boostBadge = ""; - } + return details; + } + + String getServerJoinedDate (Member member, TimeUtils tu) { + + long timeJoined = member.getTimeJoined().toInstant().getEpochSecond(); + String joinDiff = tu.formatDurationToNow(member.getTimeJoined()); + + return "" + " (" + joinDiff + " ago)"; + } + + String getAccountCreatedDate (Member member, TimeUtils tu) { + + long timeCreated = member.getTimeCreated().toInstant().getEpochSecond(); + String createDiff = tu.formatDurationToNow(member.getTimeCreated()); + + return "" + " (" + createDiff + " ago)"; + } + + String getDescription (Member member) { + + String desc = + "**" + member.getUser().getAsTag() + "** " + getBadges(member); - String name = member.getEffectiveName() - .replace("```", ""); + if (!(getCustomActivity(member) == null)) desc += "\n\"" + getCustomActivity(member).getName() + "\""; + if (!(getGameActivity(member) == null)) desc += "\n• " + getGameActivityType(getGameActivity(member)) + " " + getGameActivityDetails(getGameActivity(member)); - if (member.getUser().isBot()) { - botBadge = Constants.BOT; - } else { - botBadge = ""; - } + desc += + "\n\n⌞ Warnings: `" + new Warns().warnCount(member) + "`" + + "\n⌞ QOTW-Points: `" + new Database().getMemberInt(member, "qotwpoints") + " (#" + Leaderboard.rank(member.getId()) + ")`"; - MongoDatabase database = mongoClient.getDatabase("userdata"); - MongoCollection warns = database.getCollection("warns"); + return desc; + } + + @Override + public ReplyAction handle(SlashCommandEvent event) { - int qotwCount = new Database().getMemberInt(member, "qotwpoints"); - int warnCount = (int) warns.count(eq("user_id", member.getId())); + OptionMapping profileOption = event.getOption("user"); + Member member = profileOption == null ? event.getMember() : profileOption.getAsMember(); - TimeUtils tu = new TimeUtils(); - String joinDiff = " (" + tu.formatDurationToNow(member.getTimeJoined()) + ")"; - String createDiff = " (" + tu.formatDurationToNow(member.getTimeCreated()) + ")"; + TimeUtils tu = new TimeUtils(); - EmbedBuilder eb = new EmbedBuilder() - .setTitle(statusEmote + " " + member.getUser().getAsTag() + " " + botBadge + boostBadge + badges) - .setColor(color) + var e = new EmbedBuilder() + .setTitle(getOnlineStatus(member) + " " + member.getEffectiveName() + "'s Profile") .setThumbnail(member.getUser().getEffectiveAvatarUrl() + "?size=4096") - .addField("Name", "```" + name + " ```", true) - .addField("QOTW", "```" + qotwCount + " (#" + Leaderboard.rank(member.getId()) + ")```", true) - .addField("Warnings", "```" + warnCount + "```", true) - .addField("ID", "```" + member.getId() + "```", false) - .addField("Role Amount", "```" + member.getRoles().size() + " Roles```", true) - .addField("Role Color", "```" + colorText + "```", true) - .addField("Highest Role", "```@" + highestRole + "```", true) - .addField("Custom Status", "```" + customStatus + "```", true) - .addField("Game Activity", "```" + gameActivity + "```", true) - .addField("Server joined on", "```" + timeJoined + joinDiff + "```", false) - .addField("Account created on", "```" + timeCreated + createDiff + "```", false); - return event.replyEmbeds(eb.build()); - } catch (IndexOutOfBoundsException e) { - return event.replyEmbeds(Embeds.emptyError("```" + e.getMessage() + "```", event.getUser())).setEphemeral(true); - } + .setColor(getColor(member)) + .setDescription(getDescription(member)) + .setFooter("ID: " + member.getId()); + + if (member.getRoles().size() > 1 ) e.addField("Roles", getColorRoleAsMention(member) + " (+" + (member.getRoles().size() -1) + " other)", true); + else if (member.getRoles().size() > 0) e.addField("Roles", getColorRoleAsMention(member), true); + + if (member.getRoles().size() > 0) e.addField("Color", "`" + getColorAsHex(getColor(member)) + "`", true); + e.addField("Server joined on", getServerJoinedDate(member, tu), false) + .addField("Account created on", getAccountCreatedDate(member, tu), true); + + return event.replyEmbeds(e.build()); } } diff --git a/src/main/java/com/javadiscord/javabot/other/Constants.java b/src/main/java/com/javadiscord/javabot/other/Constants.java index 255cc67e1..3eb4cf648 100644 --- a/src/main/java/com/javadiscord/javabot/other/Constants.java +++ b/src/main/java/com/javadiscord/javabot/other/Constants.java @@ -23,6 +23,7 @@ public class Constants { public static final String REACTION_SUCCESS = "check:861259759151087627"; public static final String REACTION_UPVOTE = "up_vote:861259760547659786"; public static final String REACTION_DOWNVOTE = "down_vote:861259759562391572"; + public static final String SPOTIFY = "<:spotify:873228785091231795>"; public static final String ONLINE = "<:sOnline:861259760467705877>"; public static final String OFFLINE = "<:sOffline:861259760488677376>"; From 614c6dad480620f1a44b3b03f7270a17f057ae6b Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Fri, 6 Aug 2021 17:49:12 +0200 Subject: [PATCH 2/4] removed unnecessary ``continue;`` --- .../com/javadiscord/javabot/commands/user_commands/Profile.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java b/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java index e2cffc6db..383d6f0e8 100644 --- a/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java +++ b/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java @@ -88,7 +88,7 @@ Activity getCustomActivity(Member member) { if (act.getType().name().equals("CUSTOM_STATUS")) { activity = act; break; - } else continue; + } } return activity; From 5c42a7ac7ae3552274ef97f193e56e925e07c5a2 Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Fri, 6 Aug 2021 19:26:02 +0200 Subject: [PATCH 3/4] changed ``member.getEffectiveName()`` to ``member.getUser().getName()`` --- .../javabot/commands/user_commands/Profile.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java b/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java index 383d6f0e8..9f027ca81 100644 --- a/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java +++ b/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java @@ -109,11 +109,9 @@ Activity getGameActivity (Member member) { String getGameActivityType (Activity activity) { - String type = activity.getType().name().toLowerCase() + return activity.getType().name().toLowerCase() .replace("listening", "Listening to") .replace("default", "Playing"); - - return type; } String getGameActivityDetails (Activity activity) { @@ -129,7 +127,7 @@ String getGameActivityDetails (Activity activity) { if (!(rp.getState() == null)) details += " by " + rp.getState(); details += "`](" + spotifyURL + ")"; - } else details = activity.getName(); + } else details = "`" + activity.getName() + "`"; return details; } @@ -174,7 +172,7 @@ public ReplyAction handle(SlashCommandEvent event) { TimeUtils tu = new TimeUtils(); var e = new EmbedBuilder() - .setTitle(getOnlineStatus(member) + " " + member.getEffectiveName() + "'s Profile") + .setTitle(getOnlineStatus(member) + " " + member.getUser().getName() + "'s Profile") .setThumbnail(member.getUser().getEffectiveAvatarUrl() + "?size=4096") .setColor(getColor(member)) From 5deeb449b1115de43c8a8145fdeae9c954445e8d Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Sat, 7 Aug 2021 12:06:27 +0200 Subject: [PATCH 4/4] made some small changes to the profile --- .../javabot/commands/user_commands/Profile.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java b/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java index 9f027ca81..0fae1c02b 100644 --- a/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java +++ b/src/main/java/com/javadiscord/javabot/commands/user_commands/Profile.java @@ -78,13 +78,12 @@ String getColorAsHex (Color color) { return "#" + Integer.toHexString(color.getRGB()).toUpperCase(); } - Activity getCustomActivity(Member member) { + Activity getCustomActivity (Member member) { Activity activity = null; for (var act : member.getActivities()) { - if (act.getType().name().equals("CUSTOM_STATUS")) { activity = act; break; @@ -123,9 +122,9 @@ String getGameActivityDetails (Activity activity) { RichPresence rp = activity.asRichPresence(); String spotifyURL = "https://open.spotify.com/track/" + rp.getSyncId(); - details = Constants.SPOTIFY + " [`\"" + rp.getDetails() + "\""; + details = "[`\"" + rp.getDetails() + "\""; if (!(rp.getState() == null)) details += " by " + rp.getState(); - details += "`](" + spotifyURL + ")"; + details += "`](" + spotifyURL + ") " + Constants.SPOTIFY; } else details = "`" + activity.getName() + "`"; @@ -150,8 +149,8 @@ String getAccountCreatedDate (Member member, TimeUtils tu) { String getDescription (Member member) { - String desc = - "**" + member.getUser().getAsTag() + "** " + getBadges(member); + String desc = ""; + if (!(getCustomActivity(member) == null)) desc += "\n\"" + getCustomActivity(member).getName() + "\""; if (!(getGameActivity(member) == null)) desc += "\n• " + getGameActivityType(getGameActivity(member)) + " " + getGameActivityDetails(getGameActivity(member)); @@ -172,7 +171,7 @@ public ReplyAction handle(SlashCommandEvent event) { TimeUtils tu = new TimeUtils(); var e = new EmbedBuilder() - .setTitle(getOnlineStatus(member) + " " + member.getUser().getName() + "'s Profile") + .setTitle(getOnlineStatus(member) + " " + member.getUser().getAsTag() + " " + getBadges(member)) .setThumbnail(member.getUser().getEffectiveAvatarUrl() + "?size=4096") .setColor(getColor(member))