diff --git a/README.md b/README.md index f7a3ccf..67adf75 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Hax#6775 | h.help | Shows each command and explains its usage. | | h.about | Shows information about Hadder. | | h.equals | Checks if two strings are the same. | -| h.invite | Shows the invite link to invite Hadder to your server. | +| h.invite | Shows the invite link to invite Hadder to your server. | | h.ping | Shows the ping to the Discord API. | | h.avatar | Sends the avatar of the specified member. | | h.gif | Looks for a GIF on Giphy. | diff --git a/pom.xml b/pom.xml index ae33d40..87e9493 100644 --- a/pom.xml +++ b/pom.xml @@ -1,11 +1,11 @@ - 4.0.0 + 4.0.0 Hadder Hadder - 1.0.0 + 1.0.1 Hadder @@ -13,8 +13,32 @@ UTF-8 1.13 1.13 + yyyy-MM-dd'T'HH:mm:ss'Z' + + + Hax#6775 + Hax + hax@bigbotnetwork.com + https://bigbotnetwork.com/ + Europe/Berlin + + https://cdn.discordapp.com/avatars/261083609148948488/f2c9efc629ef65fffa634f0d63cd467e.webp + + + + Skidder#6775 + Greg + skidder@bigbotnetwork.com + https://bigbotnetwork.com/ + Europe/Berlin + + https://cdn.discordapp.com/avatars/477141528981012511/a_ba4bd8e5b381874edcd06a68d1acd3aa.gif + + + + jcenter @@ -24,10 +48,15 @@ + + org.apache.maven + maven-model + 3.6.3 + net.dv8tion JDA - 4.1.1_101 + 4.1.1_105 org.json @@ -52,12 +81,12 @@ org.kohsuke github-api - 1.103 + 1.106 com.sedmelluq lavaplayer - 1.3.33 + 1.3.34 diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index ca360af..8db6557 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -31,6 +31,7 @@ import net.dv8tion.jda.api.OnlineStatus; import net.dv8tion.jda.api.entities.Activity; import net.dv8tion.jda.api.sharding.DefaultShardManagerBuilder; import net.dv8tion.jda.api.sharding.ShardManager; +import net.dv8tion.jda.api.utils.ChunkingFilter; import java.util.List; @@ -54,7 +55,9 @@ public class Hadder { builder.setAutoReconnect(true); builder.setShardsTotal(1); - builder.setActivity(Activity.streaming("on the BigBotNetwork", "https://twitch.tv/BigBotNetwork")); + builder.setChunkingFilter(ChunkingFilter.ALL); + builder.setBulkDeleteSplittingEnabled(true); + builder.setActivity(Activity.listening("to h.help")); builder.setStatus(OnlineStatus.DO_NOT_DISTURB); builder.setToken(config.getBotToken()); @@ -120,7 +123,9 @@ public class Hadder { new PauseCommand(), new LoopCommand(), new BassCommand(), - new EchoCommand()), config, helpCommand); + new EchoCommand(), + new ServerStatsCommand(), + new ProfileCommand()), config, helpCommand); builder.addEventListeners( new MentionListener(rethink), diff --git a/src/main/java/com/bbn/hadder/Rethink.java b/src/main/java/com/bbn/hadder/Rethink.java index 6b2b137..a714fd2 100644 --- a/src/main/java/com/bbn/hadder/Rethink.java +++ b/src/main/java/com/bbn/hadder/Rethink.java @@ -174,7 +174,7 @@ public class Rethink { } } } - r.table("server").get(server.getId()).update(object).run(conn); + r.table("server").get(server.getId()).update(object.toMap()).run(conn); } public void pushUser(RethinkUser user) { @@ -188,7 +188,7 @@ public class Rethink { } } } - r.table("user").get(user.getId()).update(object).run(conn); + r.table("user").get(user.getId()).update(object.toMap()).run(conn); } } diff --git a/src/main/java/com/bbn/hadder/RethinkUser.java b/src/main/java/com/bbn/hadder/RethinkUser.java index 26376f5..1d99ac5 100644 --- a/src/main/java/com/bbn/hadder/RethinkUser.java +++ b/src/main/java/com/bbn/hadder/RethinkUser.java @@ -43,18 +43,10 @@ public class RethinkUser { this.rethink = rethink; } - public RethinkUser(String id) { - this.id = id; - } - public Rethink getRethink() { return rethink; } - public void setRethink(Rethink rethink) { - this.rethink = rethink; - } - public String getId() { return id; } diff --git a/src/main/java/com/bbn/hadder/audio/AudioManager.java b/src/main/java/com/bbn/hadder/audio/AudioManager.java index 05ae700..fe45e59 100644 --- a/src/main/java/com/bbn/hadder/audio/AudioManager.java +++ b/src/main/java/com/bbn/hadder/audio/AudioManager.java @@ -18,16 +18,12 @@ package com.bbn.hadder.audio; import com.bbn.hadder.commands.CommandEvent; import com.bbn.hadder.utils.MessageEditor; -import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler; -import com.sedmelluq.discord.lavaplayer.player.AudioPlayer; -import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager; -import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager; +import com.sedmelluq.discord.lavaplayer.player.*; import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers; import com.sedmelluq.discord.lavaplayer.tools.FriendlyException; import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist; import com.sedmelluq.discord.lavaplayer.track.AudioTrack; import net.dv8tion.jda.api.entities.Guild; -import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; import java.util.AbstractMap; diff --git a/src/main/java/com/bbn/hadder/commands/fun/AvatarCommand.java b/src/main/java/com/bbn/hadder/commands/fun/AvatarCommand.java index ffc9c76..d40f71e 100644 --- a/src/main/java/com/bbn/hadder/commands/fun/AvatarCommand.java +++ b/src/main/java/com/bbn/hadder/commands/fun/AvatarCommand.java @@ -111,7 +111,7 @@ public class AvatarCommand implements Command { @Override public String usage() { - return "[User]"; + return "[user]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/fun/ClydeCommand.java b/src/main/java/com/bbn/hadder/commands/fun/ClydeCommand.java index e456876..29e01e4 100644 --- a/src/main/java/com/bbn/hadder/commands/fun/ClydeCommand.java +++ b/src/main/java/com/bbn/hadder/commands/fun/ClydeCommand.java @@ -85,7 +85,7 @@ public class ClydeCommand implements Command { @Override public String usage() { - return "[Content]"; + return "[content]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java b/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java index 22e4e14..239e681 100644 --- a/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java +++ b/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java @@ -70,11 +70,11 @@ public class GifCommand implements Command { @Override public String usage() { - return "[Term]"; + return "[term]"; } @Override public String example() { - return "Cute cat"; + return "cute cat"; } } diff --git a/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java b/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java index 533e688..d643576 100644 --- a/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java +++ b/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java @@ -104,7 +104,7 @@ public class HelpCommand implements Command { @Override public String usage() { - return "[Command name]"; + return "[command]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/misc/GitHubCommand.java b/src/main/java/com/bbn/hadder/commands/misc/GitHubCommand.java index 343bc5c..606c9bb 100644 --- a/src/main/java/com/bbn/hadder/commands/misc/GitHubCommand.java +++ b/src/main/java/com/bbn/hadder/commands/misc/GitHubCommand.java @@ -117,7 +117,7 @@ public class GitHubCommand implements Command { @Override public String usage() { - return "[GH name]"; + return "[user]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/misc/ProfileCommand.java b/src/main/java/com/bbn/hadder/commands/misc/ProfileCommand.java new file mode 100644 index 0000000..87d1901 --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/misc/ProfileCommand.java @@ -0,0 +1,92 @@ +/* + * Copyright 2019-2020 GregTCLTK and Schlauer-Hax + * + * Licensed under the GNU Affero General Public License, Version 3.0; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bbn.hadder.commands.misc; + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.entities.User; +import org.apache.commons.lang3.StringUtils; + +import java.time.format.DateTimeFormatter; + +public class ProfileCommand implements Command { + + @Override + public void executed(String[] args, CommandEvent e) { + User u = null; + if (args.length == 0) { + u = e.getAuthor(); + } else if (StringUtils.isNumeric(args[0]) && args[0].length() == 18) { + u = e.getJDA().getUserById(args[0]); + } else if (!StringUtils.isNumeric(args[0]) && args[0].contains("#")) { + try { + u = e.getJDA().getUserByTag(args[0]); + } catch (Exception ex) { + e.getChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR, + "commands.misc.profile.error.title", + "commands.misc.profile.error.description").build()).queue(); + return; + } + } else if (e.getMessage().getMentionedUsers().size() == 1) { + u = e.getMessage().getMentionedUsers().get(0); + } + try { + // TODO: Translate + EmbedBuilder embed = e.getMessageEditor() + .getMessage(MessageEditor.MessageType.INFO) + .setTitle("User Information") + .addField("Username", u.getName(), true) + .addField("Tag", u.getAsTag(), true) + .addField("ID", u.getId(), true) + .addField("Account Creation Date", u.getTimeCreated() + .format(DateTimeFormatter.ISO_DATE_TIME).replace("T", " ").replace("Z", ""), true) + .addField("Nickname", e.getGuild().getMember(u).getEffectiveName(), true) + .addField("Guild Join Date", e.getGuild().getMember(u).getTimeJoined() + .format(DateTimeFormatter.ISO_DATE_TIME).replace("T", " ").replace("Z", ""), true) + .addField("Roles", String.valueOf(e.getGuild().getMember(u).getRoles().size()), true); + + e.getChannel().sendMessage(embed.build()).queue(); + } catch (NullPointerException ex) { + e.getChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR, + "commands.misc.profile.error.title", + "commands.misc.profile.error.description").build()).queue(); + } + + } + + @Override + public String[] labels() { + return new String[]{"profile", "user", "userinfo"}; + } + + @Override + public String description() { + return "commands.misc.profile.help.description"; + } + + @Override + public String usage() { + return "[user/id]"; + } + + @Override + public String example() { + return "Hax#6775"; + } +} diff --git a/src/main/java/com/bbn/hadder/commands/misc/ScreenShareCommand.java b/src/main/java/com/bbn/hadder/commands/misc/ScreenShareCommand.java index e8bb036..30265d7 100644 --- a/src/main/java/com/bbn/hadder/commands/misc/ScreenShareCommand.java +++ b/src/main/java/com/bbn/hadder/commands/misc/ScreenShareCommand.java @@ -91,11 +91,11 @@ public class ScreenShareCommand implements Command { @Override public String usage() { - return "[Channel]"; + return "[channel]"; } @Override public String example() { - return "Gaming-Lounge"; + return "Talk"; } } diff --git a/src/main/java/com/bbn/hadder/commands/misc/ServerStatsCommand.java b/src/main/java/com/bbn/hadder/commands/misc/ServerStatsCommand.java new file mode 100644 index 0000000..788701c --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/misc/ServerStatsCommand.java @@ -0,0 +1,74 @@ +/* + * Copyright 2019-2020 GregTCLTK and Schlauer-Hax + * + * Licensed under the GNU Affero General Public License, Version 3.0; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bbn.hadder.commands.misc; + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; + +import java.util.Date; + +public class ServerStatsCommand implements Command { + + @Override + public void executed(String[] args, CommandEvent e) { + EmbedBuilder eb = e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, + "commands.misc.serverstats.title", "", + "commands.misc.serverstats.description", e.getGuild().getName()) + .addField("Owner", e.getGuild().getOwner().getUser().getAsTag(), true) + .addField("ID", e.getGuild().getId(), true) + .addField("Region", e.getGuild().getRegion().getName(), true) + .addField("Time created", new Date(e.getGuild().getTimeCreated().toInstant().toEpochMilli()).toString(), true) + .addField("Roles", String.valueOf(e.getGuild().getRoles().size()), true) + .addField("Emotes", String.valueOf(e.getGuild().getEmotes().size()), true) + .addField("Categories", String.valueOf(e.getGuild().getCategories().size()), true) + .addField("Text/Voice/Store Channels", "`" + e.getGuild().getTextChannels().size() + "`" + "/" + "`" + e.getGuild().getVoiceChannels().size() + "`" + "/" + "`" + e.getGuild().getStoreChannels().size() + "`", true) + .addField("Verification Level", e.getGuild().getVerificationLevel().getKey() + ": " + e.getGuild().getVerificationLevel(), true) + .addField("MFA Level", String.valueOf(e.getGuild().getRequiredMFALevel().getKey()), true) + .addField("Member Count", String.valueOf(e.getGuild().getMemberCount()), true) + .addField("Explicit Content Level", e.getGuild().getExplicitContentLevel().getKey() + ": " + e.getGuild().getExplicitContentLevel(), true) + //TODO: Features + .setThumbnail(e.getGuild().getIconUrl()) + .setImage(e.getGuild().getBannerUrl()); + + if (e.getGuild().getDescription() != null) eb.addField("Description", e.getGuild().getDescription(), true); + if (e.getGuild().getVanityCode() != null) eb.addField("Vanity Code", "[" + e.getGuild().getVanityCode() + "](https://discord.gg/" + e.getGuild().getVanityCode() + ")", true); + + e.getTextChannel().sendMessage(eb.build()).queue(); + } + + @Override + public String[] labels() { + return new String[]{"serverstats", "guildstats"}; + } + + @Override + public String description() { + return "commands.misc.serverstats.help.description"; + } + + @Override + public String usage() { + return null; + } + + @Override + public String example() { + return null; + } +} diff --git a/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java index cb62cec..6fd6bb2 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java @@ -104,7 +104,7 @@ public class BanCommand implements Command { @Override public String usage() { - return "[User(s)]"; + return "[user]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java index 290a6af..9f6fc14 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java @@ -109,7 +109,7 @@ public class ClearCommand implements Command { @Override public String usage() { - return "[Amount]"; + return "[amount]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java index 87db3de..990042f 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java @@ -89,7 +89,7 @@ public class KickCommand implements Command { @Override public String usage() { - return "[User(s)]"; + return "[user]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java index 2f838f7..1849238 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java @@ -117,7 +117,7 @@ public class NickCommand implements Command { @Override public String usage() { - return "[User(s)] [New nickname]"; + return "[user] [nickname]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/moderation/PrefixCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/PrefixCommand.java index 7d2293e..a6db1db 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/PrefixCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/PrefixCommand.java @@ -62,7 +62,7 @@ public class PrefixCommand implements Command { @Override public String usage() { - return "[New Prefix]"; + return "[new prefix]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/moderation/RegionChangeCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/RegionChangeCommand.java index 51a9e3d..59c7a0d 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/RegionChangeCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/RegionChangeCommand.java @@ -134,7 +134,7 @@ public class RegionChangeCommand implements Command { @Override public String usage() { - return "[New region]"; + return "[new region]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/moderation/RoleCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/RoleCommand.java index 3d774d7..3799f7f 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/RoleCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/RoleCommand.java @@ -112,7 +112,7 @@ public class RoleCommand implements Command { @Override public String usage() { - return "[add/remove] [Role>] [User]"; + return "[add/remove] [role] [user]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/moderation/StarboardCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/StarboardCommand.java index 2c497e3..59bdb7b 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/StarboardCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/StarboardCommand.java @@ -63,7 +63,7 @@ public class StarboardCommand implements Command { @Override public String usage() { - return "[Channel] [Needed stars]"; + return "[channel] [needed stars]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/music/BassCommand.java b/src/main/java/com/bbn/hadder/commands/music/BassCommand.java index 2df554a..61facab 100644 --- a/src/main/java/com/bbn/hadder/commands/music/BassCommand.java +++ b/src/main/java/com/bbn/hadder/commands/music/BassCommand.java @@ -63,7 +63,7 @@ public class BassCommand implements Command { @Override public String usage() { - return "[Bass-Level]"; + return "[bass level]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java b/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java index 794c960..45c3855 100644 --- a/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java +++ b/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java @@ -83,7 +83,7 @@ public class PlayCommand implements Command { @Override public String usage() { - return "[Song URL/Name]"; + return "[URL/name]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/music/VolumeCommand.java b/src/main/java/com/bbn/hadder/commands/music/VolumeCommand.java index 994224b..dec010d 100644 --- a/src/main/java/com/bbn/hadder/commands/music/VolumeCommand.java +++ b/src/main/java/com/bbn/hadder/commands/music/VolumeCommand.java @@ -19,6 +19,7 @@ package com.bbn.hadder.commands.music; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; import com.bbn.hadder.utils.MessageEditor; +import org.jsoup.internal.StringUtil; public class VolumeCommand implements Command { @@ -27,7 +28,7 @@ public class VolumeCommand implements Command { if (args.length > 0) { if (e.getAudioManager().hasPlayer(e.getGuild()) && e.getAudioManager().getPlayer(e.getGuild()).getPlayingTrack() != null) { if (e.getMember().getVoiceState().inVoiceChannel() && e.getGuild().getSelfMember().getVoiceState().inVoiceChannel() && e.getGuild().getSelfMember().getVoiceState().getChannel().equals(e.getMember().getVoiceState().getChannel())) { - try { + if (StringUtil.isNumeric(args[0])) { int volume = Integer.parseInt(args[0]); if (volume < 201 && volume > 0 || e.getConfig().getOwners().contains(e.getAuthor().getIdLong())) { e.getAudioManager().getPlayer(e.getGuild()).setVolume(volume); @@ -39,9 +40,7 @@ public class VolumeCommand implements Command { "commands.music.volume.error.int.title", "commands.music.volume.error.int.description").build()).queue(); } - } catch (NumberFormatException ex) { - e.getHelpCommand().sendHelp(this, e); - } + } else e.getHelpCommand().sendHelp(this, e); } else { e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR, "commands.music.volume.error.connected.title", @@ -68,7 +67,7 @@ public class VolumeCommand implements Command { @Override public String usage() { - return "[New volume]"; + return "[volume]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/owner/BlacklistCommand.java b/src/main/java/com/bbn/hadder/commands/owner/BlacklistCommand.java index 5bd8f3e..54298c6 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/BlacklistCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/BlacklistCommand.java @@ -21,7 +21,6 @@ import com.bbn.hadder.commands.CommandEvent; import com.bbn.hadder.core.Perm; import com.bbn.hadder.core.Perms; import com.bbn.hadder.utils.MessageEditor; -import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.User; import java.util.ArrayList; @@ -50,9 +49,9 @@ public class BlacklistCommand implements Command { String newblacklisted = ((commandsWithoutDuplicates.size()!=0) ? String.join(",", commandsWithoutDuplicates) : "none"); e.getRethinkUser().setBlacklisted(newblacklisted); e.getTextChannel().sendMessage( - e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) - .setTitle("Removed Blacklisted Commands from User") - .setDescription("Blacklisted commands: "+newblacklisted) + e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, + "commands.owner.blacklist.success.add.title", "", + "commands.owner.blacklist.success.add.description", newblacklisted) .build()).queue(); e.getRethinkUser().push(); } @@ -70,9 +69,9 @@ public class BlacklistCommand implements Command { String newblacklisted = ((commandsWithoutDuplicates.size()!=0) ? String.join(",", commandsWithoutDuplicates) : "none"); e.getRethinkUser().setBlacklisted(newblacklisted); e.getTextChannel().sendMessage( - e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) - .setTitle("Removed Blacklisted Commands from User") - .setDescription("Blacklisted commands: "+newblacklisted) + e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, + "commands.owner.blacklist.success.remove.title", "", + "commands.owner.blacklist.success.remove.description", newblacklisted) .build()).queue(); e.getRethinkUser().push(); } @@ -114,7 +113,7 @@ public class BlacklistCommand implements Command { @Override public String usage() { - return "add|remove|list command @User"; + return "[add|remove|list] [command] [user]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/owner/EvalCommand.java b/src/main/java/com/bbn/hadder/commands/owner/EvalCommand.java index 146d4a6..5b5f512 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/EvalCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/EvalCommand.java @@ -114,7 +114,7 @@ public class EvalCommand implements Command { @Override public String usage() { - return "[Code]"; + return "[code]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/owner/GuildLeaveCommand.java b/src/main/java/com/bbn/hadder/commands/owner/GuildLeaveCommand.java index feb16ae..15bc1a9 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/GuildLeaveCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/GuildLeaveCommand.java @@ -58,7 +58,7 @@ public class GuildLeaveCommand implements Command { @Override public String usage() { - return "[Guild-ID]"; + return "[id]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/settings/LanguageCommand.java b/src/main/java/com/bbn/hadder/commands/settings/LanguageCommand.java index 9cece7a..e09a44a 100644 --- a/src/main/java/com/bbn/hadder/commands/settings/LanguageCommand.java +++ b/src/main/java/com/bbn/hadder/commands/settings/LanguageCommand.java @@ -19,7 +19,6 @@ package com.bbn.hadder.commands.settings; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; import com.bbn.hadder.utils.MessageEditor; -import net.dv8tion.jda.api.EmbedBuilder; public class LanguageCommand implements Command { @@ -83,7 +82,7 @@ public class LanguageCommand implements Command { @Override public String usage() { - return "[Language code]"; + return "[language code]"; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/settings/UserPrefixCommand.java b/src/main/java/com/bbn/hadder/commands/settings/UserPrefixCommand.java index b83da2c..4b17d3f 100644 --- a/src/main/java/com/bbn/hadder/commands/settings/UserPrefixCommand.java +++ b/src/main/java/com/bbn/hadder/commands/settings/UserPrefixCommand.java @@ -49,7 +49,7 @@ public class UserPrefixCommand implements Command { @Override public String usage() { - return "[New Prefix]"; + return "[new prefix]"; } @Override diff --git a/src/main/java/com/bbn/hadder/listener/MentionListener.java b/src/main/java/com/bbn/hadder/listener/MentionListener.java index 886ab51..1e637b5 100644 --- a/src/main/java/com/bbn/hadder/listener/MentionListener.java +++ b/src/main/java/com/bbn/hadder/listener/MentionListener.java @@ -19,12 +19,17 @@ package com.bbn.hadder.listener; import com.bbn.hadder.Rethink; import com.bbn.hadder.RethinkServer; import com.bbn.hadder.RethinkUser; -import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.ChannelType; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; +import org.apache.maven.model.Model; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; import javax.annotation.Nonnull; +import java.io.FileReader; +import java.io.IOException; import java.util.Random; public class MentionListener extends ListenerAdapter { @@ -42,14 +47,34 @@ public class MentionListener extends ListenerAdapter { RethinkUser rethinkUser = new RethinkUser(rethink.getObjectByID("user", e.getAuthor().getId()), rethink); if (e.isFromType(ChannelType.TEXT) && (e.getMessage().getContentRaw().equals(e.getGuild().getSelfMember().getAsMention()) || e.getMessage().getContentRaw().equals(e.getGuild().getSelfMember().getAsMention().replace("@", "@!")))) { - e.getChannel().sendMessage(new MessageEditor(rethinkUser, e.getAuthor()).getMessage(MessageEditor.MessageType.INFO) - .setTitle("Hello I'm Hadder.") - .setAuthor(e.getJDA().getSelfUser().getName(), e.getJDA().getSelfUser().getAvatarUrl(), e.getJDA().getSelfUser().getAvatarUrl()) - .addField("Users", String.valueOf(e.getJDA().getUsers().size()), false) - .addField("Guilds", String.valueOf(e.getJDA().getGuilds().size()), false) - .addField("Prefix (User)", rethinkUser.getPrefix(), false) - .addField("Prefix (Guild)", rethinkServer.getPrefix(), false) - .build()).queue(); + + MavenXpp3Reader reader = new MavenXpp3Reader(); + Model model = null; + try { + model = reader.read(new FileReader("pom.xml")); + } catch (IOException | XmlPullParserException ex) { + ex.printStackTrace(); + } + EmbedBuilder builder = new EmbedBuilder() + .setTitle("Hi!") + .addField("Version", model.getVersion(), false) + .addField("User-Prefix", rethinkUser.getPrefix(), true) + .addField("Guild-Prefix", rethinkServer.getPrefix(), true); + StringBuilder stringBuilder = new StringBuilder(); + model.getDependencies().forEach( + dependency -> stringBuilder.append(dependency.getArtifactId()).append(" - ").append(dependency.getVersion()).append("\n") + ); + builder.addField("Dependencies", stringBuilder.toString(), false); + StringBuilder devs = new StringBuilder(); + //TODO: Fix Mail stuff + model.getDevelopers().forEach( + developer -> devs.append(developer.getId()).append(" - [Website](").append(developer.getUrl()).append("), [E-Mail](https://hax.bigbotnetwork.de/redirect.html?url=mailto:").append(developer.getEmail()).append(")\n") + ); + builder.addField("Developer", devs.toString(), false); + builder.addField("Join our Dev Server!", "[Click here!](https://discord.gg/58My2dM)", true); + builder.addField("Github", "[Click here!](https://github.com/BigBotNetwork/Hadder)",false); + builder.addField("Twitch", "[Click here!](https://www.twitch.tv/bigbotnetwork)", false); + e.getChannel().sendMessage(builder.build()).queue(); } else if (e.getMessage().getContentRaw().equalsIgnoreCase("@someone")) { int member = new Random().nextInt(e.getGuild().getMembers().size() - 1); if (member > 0 && member < e.getGuild().getMembers().size()) { diff --git a/src/main/java/com/bbn/hadder/utils/EventWaiter.java b/src/main/java/com/bbn/hadder/utils/EventWaiter.java index 525dd15..2d44b8c 100644 --- a/src/main/java/com/bbn/hadder/utils/EventWaiter.java +++ b/src/main/java/com/bbn/hadder/utils/EventWaiter.java @@ -19,6 +19,7 @@ package com.bbn.hadder.utils; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.User; import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; +import net.dv8tion.jda.api.events.message.guild.react.GuildMessageReactionAddEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; import javax.annotation.Nonnull; @@ -42,4 +43,20 @@ public class EventWaiter { jda.getShardManager().addEventListener(listener); } + public void newOnReactionEventWaiter(Consumer onEvent, JDA jda, User user) { + Object listener = new ListenerAdapter() { + @Override + public void onGuildMessageReactionAdd(@Nonnull GuildMessageReactionAddEvent event) { + if (user==null) { + onEvent.accept(event); + event.getJDA().getShardManager().removeEventListener(this); + } else if (event.getUser().getId().equals(user.getId())) { + onEvent.accept(event); + event.getJDA().getShardManager().removeEventListener(this); + } + } + }; + jda.getShardManager().addEventListener(listener); + } + } diff --git a/src/main/resources/Translations/Translations_en.properties b/src/main/resources/Translations/Translations_en.properties index bef41a8..d638b91 100644 --- a/src/main/resources/Translations/Translations_en.properties +++ b/src/main/resources/Translations/Translations_en.properties @@ -87,6 +87,12 @@ commands.misc.screenshare.number.error.description = This isn't a Number. commands.misc.screenshare.channel.existing.error = Hol' up commands.misc.screenshare.channel.existing.description = There is no Voice Channel named like this. \n\nNote\: Make sure the Voice Channel is in this Guild. commands.misc.screenshare.help.description = Shows you the link to share your screen. +commands.misc.serverstats.title = Serverstats +commands.misc.serverstats.description = This message contains some information about `%extra%` +commands.misc.serverstats.help.description = Shows information about a server. +commands.misc.profile.error.title = Not found +commands.misc.profile.error.description = I can't find the specified user. +commands.misc.profile.help.description = Shows some information about the specified user. commands.moderation.ban.success.title = Successfully banned commands.moderation.ban.success.description = I successfully baned %extra% @@ -299,6 +305,10 @@ commands.owner.shutdown.success.title = Shutdown commands.owner.shutdown.help.description = Shuts the Bot down commands.owner.test.success = TEST my friends commands.owner.test.help.description = Just a little Test Command +commands.owner.blacklist.success.add.title = Successfully blacklisted the specified commands +commands.owner.blacklist.success.add.description = I successfully added the following commands from the blacklist:\n %extra% +commands.owner.blacklist.success.remove.title = Successfully removed the commands from the blacklist +commands.owner.blacklist.success.remove.description = I successfully removed the following commands from the blacklist:\n %extra% commands.owner.blacklist.help.description = Blacklist a user for specific commands commands.settings.language.success.title = Language set