diff --git a/SheepstarGlobal/.github/workflows/maven.yml b/SheepstarGlobal/.github/workflows/maven.yml
new file mode 100644
index 0000000..e2586e1
--- /dev/null
+++ b/SheepstarGlobal/.github/workflows/maven.yml
@@ -0,0 +1,22 @@
+# This workflow will build a Java project with Maven
+# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
+
+name: Java CI with Maven
+
+on:
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up JDK 1.8
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.8
+ - name: Build with Maven
+ run: mvn -B package --file pom.xml
diff --git a/SheepstarGlobal/.gitignore b/SheepstarGlobal/.gitignore
new file mode 100755
index 0000000..c1aca7e
--- /dev/null
+++ b/SheepstarGlobal/.gitignore
@@ -0,0 +1,2 @@
+# Project exclude paths.
+/target/
diff --git a/SheepstarGlobal/.idea/.gitignore b/SheepstarGlobal/.idea/.gitignore
new file mode 100755
index 0000000..26d3352
--- /dev/null
+++ b/SheepstarGlobal/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/SheepstarGlobal/.idea/artifacts/sheepstar.xml b/SheepstarGlobal/.idea/artifacts/sheepstar.xml
new file mode 100755
index 0000000..0d9a049
--- /dev/null
+++ b/SheepstarGlobal/.idea/artifacts/sheepstar.xml
@@ -0,0 +1,26 @@
+
+
+ $PROJECT_DIR$/out/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SheepstarGlobal/.idea/compiler.xml b/SheepstarGlobal/.idea/compiler.xml
new file mode 100755
index 0000000..e61a32f
--- /dev/null
+++ b/SheepstarGlobal/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SheepstarGlobal/.idea/discord.xml b/SheepstarGlobal/.idea/discord.xml
new file mode 100755
index 0000000..cd711a0
--- /dev/null
+++ b/SheepstarGlobal/.idea/discord.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SheepstarGlobal/.idea/jarRepositories.xml b/SheepstarGlobal/.idea/jarRepositories.xml
new file mode 100755
index 0000000..026f8ad
--- /dev/null
+++ b/SheepstarGlobal/.idea/jarRepositories.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SheepstarGlobal/.idea/libraries/mysql_connector_java_8_0_22.xml b/SheepstarGlobal/.idea/libraries/mysql_connector_java_8_0_22.xml
new file mode 100644
index 0000000..9f8a0fc
--- /dev/null
+++ b/SheepstarGlobal/.idea/libraries/mysql_connector_java_8_0_22.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SheepstarGlobal/.idea/misc.xml b/SheepstarGlobal/.idea/misc.xml
new file mode 100755
index 0000000..4b661a5
--- /dev/null
+++ b/SheepstarGlobal/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SheepstarGlobal/.idea/uiDesigner.xml b/SheepstarGlobal/.idea/uiDesigner.xml
new file mode 100755
index 0000000..e96534f
--- /dev/null
+++ b/SheepstarGlobal/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/SheepstarGlobal/.idea/vcs.xml b/SheepstarGlobal/.idea/vcs.xml
new file mode 100755
index 0000000..94a25f7
--- /dev/null
+++ b/SheepstarGlobal/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SheepstarGlobal/README.md b/SheepstarGlobal/README.md
new file mode 100644
index 0000000..5d263e7
--- /dev/null
+++ b/SheepstarGlobal/README.md
@@ -0,0 +1,2 @@
+# Sheepstar Old Global Bot
+Dies ist der alte Sheepstar Global Bot. Er wird in der Zukunft entfernt, sobald der richtige Sheepstar Bot vollständig programmiert wurde. :)
diff --git a/SheepstarGlobal/pom.xml b/SheepstarGlobal/pom.xml
new file mode 100755
index 0000000..292a84c
--- /dev/null
+++ b/SheepstarGlobal/pom.xml
@@ -0,0 +1,56 @@
+
+
+ 4.0.0
+
+ de.sheepstar
+ global
+ 1.0
+
+
+ 8
+ 8
+
+
+
+
+
+ maven-assembly-plugin
+
+
+
+ de.sheepstar.globalWrapper.core.Main
+
+
+
+ jar-with-dependencies
+
+
+
+
+
+
+
+
+ jcenter
+ jcenter-bintray
+ https://jcenter.bintray.com
+
+
+
+
+
+ net.dv8tion
+ JDA
+ 4.2.0_222
+
+
+ mysql
+ mysql-connector-java
+ 8.0.25
+
+
+
+
+
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/GlobalManager.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/GlobalManager.java
new file mode 100755
index 0000000..f441a78
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/GlobalManager.java
@@ -0,0 +1,223 @@
+package de.sheepstar.globalWrapper.api;
+
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.TextChannel;
+
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.Arrays;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class GlobalManager {
+
+ public boolean isRegistered(Guild guild, TextChannel channel) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM guilds WHERE guildID=? AND channelID=?", guild.getId(), channel.getId());
+ try {
+ while (rs.next()) return true;
+ } catch (Exception err) {}
+ return false;
+ }
+
+ public boolean isDescRegistered(Guild guild, TextChannel channel) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM server_autoupdate WHERE guildID=? AND channelID=?", guild.getId(), channel.getId());
+ try {
+ while (rs.next()) return true;
+ } catch (Exception err) {}
+ return false;
+ }
+
+
+ public void register(Guild guild, TextChannel channel) {
+ if (isRegistered(guild, channel)) return;
+ MySQL.update("INSERT INTO guilds (guildID, channelID, languageCode, roomID) VALUES (?, ?, 'EN', '1')", guild.getId(), channel.getId());
+ }
+
+ public void unregister(Guild guild, TextChannel channel) {
+ if (!isRegistered(guild, channel)) return;
+ MySQL.update("DELETE FROM guilds WHERE guildID=? AND channelID=?", guild.getId(), channel.getId());
+ }
+
+ public boolean isValidRoom(String str) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM rooms WHERE code=?", str);
+ try {
+ while (rs.next()) return true;
+ } catch (Exception err) {}
+ return false;
+ }
+
+ public boolean hasPremium(Guild guild) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM premium WHERE guildID=?", guild.getId());
+ try {
+ while (rs.next()) return true;
+ } catch (Exception err) {}
+ return false;
+ }
+
+ public boolean isValidLanguage(String str) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM languages WHERE code=?", str.toUpperCase());
+ try {
+ while (rs.next()) return true;
+ } catch (Exception err) {}
+ return false;
+ }
+
+ public void changeLanguageCode(Guild guild, TextChannel channel, String newLanguage) {
+ if (!isValidLanguage(newLanguage)) return;
+ MySQL.update("UPDATE guilds SET languageCode=? WHERE guildID=? AND channelID=?", newLanguage.toUpperCase(), guild.getId(), channel.getId());
+ }
+
+ public void changeRoomID(Guild guild, TextChannel channel, String newRoom) {
+ if (!isValidRoom(newRoom)) return;
+ MySQL.update("UPDATE guilds SET roomID=? WHERE guildID=? AND channelID=?", newRoom, guild.getId(), channel.getId());
+ }
+
+ public void setPremium(Guild guild) {
+ if (!hasPremium(guild)) {
+ MySQL.update("INSERT INTO premium (guildID) VALUES (?)", guild.getId());
+ }
+ }
+
+ public String getDesign(Guild guild) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM designs WHERE guildID=?", guild.getId());
+ try {
+ while (rs.next()) {
+ return rs.getString("designID");
+ }
+ } catch (Exception ignore) {}
+ return "1";
+ }
+
+ public boolean isDesignRegistered(Guild guild) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM designs WHERE guildID=?", guild.getId());
+ try { while (rs.next()) { return true; } } catch (Exception ignore) {}
+ return false;
+ }
+
+ public boolean isValidDesign(String designID) {
+ return new ArrayList<>(Arrays.asList("1", "2", "3", "4", "5")).contains(designID);
+ }
+
+ public void registerDesign(Guild guild, String design) {
+ if (!isDesignRegistered(guild) && isValidDesign(design)) {
+ MySQL.update("INSERT INTO designs (guildID, designID) VALUES (?, ?)", guild.getId(), design);
+ }
+ }
+
+ public void updateDesign(Guild guild, String design) {
+ if (!isDesignRegistered(guild)) registerDesign(guild, design);
+ if (isDesignRegistered(guild) && isValidDesign(design)) {
+ MySQL.update("UPDATE designs SET designID=? WHERE guildID=?", design, guild.getId());
+ }
+ }
+
+ public boolean isBanned(Guild guild) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM server_bans WHERE guildID=?", guild.getId());
+ try {
+ while (rs.next()) return true;
+ } catch (Exception err) {}
+ return false;
+ }
+
+ public void banServer(Guild guild) {
+ if (!isBanned(guild)) {
+ MySQL.update("INSERT INTO server_bans (guildID) VALUES (?)", guild.getId());
+ }
+ }
+
+ public void unbanServer(Guild guild) {
+ if (isBanned(guild)) {
+ MySQL.update("DELETE FROM server_bans WHERE guildID=? ", guild.getId());
+ }
+ }
+
+ public boolean isGlobalUserBanned(String userID) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM user_bans WHERE clientID=?", userID);
+ try {
+ while (rs.next()) return true;
+ } catch (Exception err) {}
+ return false;
+ }
+
+ public void banUserGlobal(String userID) {
+ if (!isGlobalUserBanned(userID)) {
+ MySQL.update("INSERT INTO user_bans (clientID) VALUES (?)", userID);
+ }
+ }
+
+ public void unbanUserGlobal(String userID) {
+ if (isGlobalUserBanned(userID)) {
+ MySQL.update("DELETE FROM user_bans WHERE clientID=? ", userID);
+ }
+ }
+
+ public boolean isGuildUserBanned(Guild guild, String userID) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM suser_bans WHERE guildID=? AND clientID=?", guild.getId(), userID);
+ try {
+ while (rs.next()) return true;
+ } catch (Exception err) {}
+ return false;
+ }
+
+ public void banUserGuild(Guild guild, String userID) {
+ if (!isGuildUserBanned(guild, userID)) {
+ MySQL.update("INSERT INTO suser_bans (guildID, clientID) VALUES (?, ?)", guild.getId(), userID);
+ }
+ }
+
+ public void unbanUserGuild(Guild guild, String userID) {
+ if (isGuildUserBanned(guild, userID)) {
+ MySQL.update("DELETE FROM suser_bans WHERE guildID=? AND clientID=? ", guild.getId(), userID);
+ }
+ }
+
+
+ public int getCount(String language, String room) {
+ int count = 0;
+ ResultSet rs = MySQL.getResult("SELECT * FROM guilds WHERE languageCode=? AND roomID=?", language, room);
+ try { while (rs.next()) {count++;} } catch (Exception err) {}
+ return count;
+ }
+
+ public int getCount() {
+ int count = 0;
+ ResultSet rs = MySQL.getResult("SELECT * FROM guilds");
+ try { while (rs.next()) {count++;} } catch (Exception err) {}
+ return count;
+ }
+
+ public int getCount(Guild guild) {
+ int count = 0;
+ ResultSet rs = MySQL.getResult("SELECT * FROM guilds WHERE guildID=?", guild.getId());
+ try { while (rs.next()) {count++;} } catch (Exception err) {}
+ return count;
+ }
+
+ public boolean alreadyServerBlacklisted(Guild guild, String word) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM sword_blacklist WHERE guildID=? AND word=?", guild.getId(), word);
+ try {
+ while (rs.next()) return true;
+ } catch (Exception err) {}
+ return false;
+ }
+
+ public boolean alreadyGlobalBlacklisted(String word) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM word_blacklist WHERE word=?", word);
+ try {
+ while (rs.next()) return true;
+ } catch (Exception err) {}
+ return false;
+ }
+
+
+ public void insertLog(String guildID, String senderID, String message, String language, String roomID) {
+ if (message.isEmpty()) message = "empty";
+ MySQL.update("INSERT INTO log (guildID, senderID, message, language, roomID) VALUES (?, ?, ?, ?, ?)",
+ guildID, senderID, message , language, roomID);
+ }
+
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/LevelManager.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/LevelManager.java
new file mode 100755
index 0000000..5cb3727
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/LevelManager.java
@@ -0,0 +1,119 @@
+package de.sheepstar.globalWrapper.api;
+
+import de.sheepstar.globalWrapper.api.messagebuilder.MessageBuilder;
+import de.sheepstar.globalWrapper.api.messagebuilder.MessageType;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.TextChannel;
+
+import java.math.BigDecimal;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 18.12.20
+ ********************************/
+
+public class LevelManager {
+
+ private Guild guild;
+
+ public LevelManager(Guild guild) {
+ this.guild = guild;
+ }
+
+
+ public void updateXP(String newXP) {
+ if (!isRegistered()) register();
+ MySQL.update("UPDATE levels SET xp=? WHERE guildID=?", newXP, guild.getId());
+ }
+
+ public void increaseXP(String addXP) {
+ if (!isRegistered()) register();
+ MySQL.update("UPDATE levels SET xp=xp+? WHERE guildID=?", addXP, guild.getId());
+ }
+
+ public void updateLevel(String newLevel) {
+ if (!isRegistered()) register();
+ MySQL.update("UPDATE levels SET level=? WHERE guildID=?", newLevel, guild.getId());
+ }
+
+ public void removeLevel(String removeLevel) {
+ if (!isRegistered()) register();
+ MySQL.update("UPDATE levels SET level=level-? WHERE guildID=?", removeLevel, guild.getId());
+ }
+
+ public void increaseLevel(String addLevel) {
+ if (!isRegistered()) register();
+ MySQL.update("UPDATE levels SET level=level+? WHERE guildID=?", addLevel, guild.getId());
+ }
+
+ public void increase(TextChannel channel, String addXP) {
+ increaseXP(addXP);
+ int currentXP = Integer.parseInt(getXP());
+ int neededXP = getNeededXP();
+ if (currentXP >= neededXP) {
+ levelUp(channel);
+ if (currentXP != 0) updateXP(String.valueOf(currentXP - neededXP));
+ }
+ }
+
+ public int getNeededXP() {
+ return Integer.parseInt(getLevel())*50+5;
+ }
+
+ private boolean isRegistered() {
+ ResultSet rs = MySQL.getResult("SELECT * FROM levels WHERE guildID=?", guild.getId());
+ try { while (rs.next()) { return true; } } catch (Exception ignored) {}
+ return false;
+ }
+
+ private void register() {
+ if (isRegistered()) return;
+ MySQL.update("INSERT INTO levels (guildID, xp, level) VALUES (?, '0', '0')", guild.getId());
+ }
+
+ public void levelUp(TextChannel channel) {
+ if (!isRegistered()) register();
+ MySQL.update("UPDATE levels SET level=level+1 WHERE guildID=?", guild.getId());
+ MySQL.update("UPDATE levels SET xp=0 WHERE guildID=?", guild.getId());
+ new MessageBuilder(MessageType.GREEN_MESSAGE)
+ .setTitle("Level up!")
+ .setDescription("You reached level " + getLevel())
+ .send(channel);
+ }
+
+ public String getXP() {
+ if (!isRegistered()) register();
+ ResultSet rs = MySQL.getResult("SELECT * FROM levels WHERE guildID=?", guild.getId());
+ try { while (rs.next()) { return rs.getString("xp"); } } catch (Exception ignored) {}
+ return "0";
+ }
+
+ public String getLevel() {
+ if (!isRegistered()) register();
+ ResultSet rs = MySQL.getResult("SELECT * FROM levels WHERE guildID=?", guild.getId());
+ try { while (rs.next()) { return rs.getString("level"); } } catch (Exception ignored) {}
+ return "0";
+ }
+
+ public String getLevel(Guild guild) {
+ if (!isRegistered()) register();
+ ResultSet rs = MySQL.getResult("SELECT * FROM levels WHERE guildID=?", guild.getId());
+ try { while (rs.next()) { return rs.getString("level"); } } catch (Exception ignored) {}
+ return "0";
+ }
+
+ public ArrayList getTopList(int limit) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM levels ORDER BY `level` DESC LIMIT " + limit);
+ ArrayList topList = new ArrayList<>();
+ try { while (rs.next()) { try { topList.add(Main.getInstance().getGuildById(rs.getString("guildID"))); } catch (Exception ignored) { } } } catch (Exception ignored) { }
+ return topList;
+ }
+
+ public Guild getGuild() {
+ return guild;
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/LogManager.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/LogManager.java
new file mode 100755
index 0000000..91c42d1
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/LogManager.java
@@ -0,0 +1,42 @@
+package de.sheepstar.globalWrapper.api;
+
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.User;
+
+import java.sql.Array;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 13.12.20
+ ********************************/
+
+public class LogManager {
+
+ public ArrayList getServerMessages(String guildID, int limit) {
+ String limitLine = (limit > 1 ? " LIMIT " + limit : "");
+ ResultSet rs = MySQL.getResult("SELECT * FROM log WHERE guildID=?" + limitLine, guildID);
+ ArrayList arrayList = new ArrayList<>();
+ try {
+ while (rs.next()) {
+ arrayList.add(rs.getString("message"));
+ }
+ } catch (Exception err) {}
+ return arrayList;
+ }
+
+ public ArrayList getUserMessages(String userID, int limit) {
+ String limitLine = (limit > 1 ? " LIMIT " + limit : "");
+ ResultSet rs = MySQL.getResult("SELECT * FROM log WHERE senderID=?" + limitLine, userID);
+ ArrayList arrayList = new ArrayList<>();
+ try {
+ while (rs.next()) {
+ arrayList.add(rs.getString("message"));
+ }
+ } catch (Exception err) {}
+ return arrayList;
+ }
+
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/SheepManager.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/SheepManager.java
new file mode 100755
index 0000000..cb1917b
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/SheepManager.java
@@ -0,0 +1,68 @@
+package de.sheepstar.globalWrapper.api;
+
+import de.sheepstar.globalWrapper.api.sql.SqlParam;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.entities.Role;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 11.12.20
+ ********************************/
+
+public class SheepManager {
+
+ public static boolean BETA_INSTANCE = false;
+
+ public ArrayList botOwners = new ArrayList<>();
+
+ public Role supporterRole;
+
+ private HashMap sqlParams = new HashMap<>();
+
+ public String getSQLParam(SqlParam param) {
+ return sqlParams.getOrDefault(param, "null");
+ }
+
+ private void registerSQLParam(SqlParam param, String value) {
+ if (!sqlParams.containsKey(param))
+ sqlParams.put(param, value);
+ }
+
+ public String getBetaToken() {
+ return "protected";
+ }
+
+ public String getDefaultToken() {
+ return "protected";
+ }
+
+ public String getToken() {
+ if (BETA_INSTANCE) {
+ return getBetaToken();
+ } else {
+ return getDefaultToken();
+ }
+ }
+
+ public static String getPrefix() {
+ return "» Sheepstar | ";
+ }
+
+ public SheepManager register() {
+ registerSQLParam(SqlParam.HOSTNAME, "protected");
+ registerSQLParam(SqlParam.USERNAME, "protected");
+ registerSQLParam(SqlParam.PASSWORD, "protected");
+ registerSQLParam(SqlParam.DATABASE, "protected");
+ botOwners.add("357214370188492802");
+ botOwners.add("386242172632170496");
+ return this;
+ }
+
+ public static void sendConsoleMessage(String message) {
+ System.out.println(getPrefix() + message);
+ }
+
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/SheepPermission.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/SheepPermission.java
new file mode 100755
index 0000000..90eef58
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/SheepPermission.java
@@ -0,0 +1,10 @@
+package de.sheepstar.globalWrapper.api;
+
+public enum SheepPermission {
+
+ ADMINISTRATOR,
+ SUPPORTER,
+ BOT_OWNER,
+ UNKNOWN;
+
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/SheepstarGuildCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/SheepstarGuildCommand.java
new file mode 100755
index 0000000..cc27cc1
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/SheepstarGuildCommand.java
@@ -0,0 +1,120 @@
+package de.sheepstar.globalWrapper.api;
+
+import de.sheepstar.globalWrapper.api.messagebuilder.MessageBuilder;
+import de.sheepstar.globalWrapper.api.messagebuilder.MessageType;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.JDA;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.Message;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+import net.dv8tion.jda.api.hooks.ListenerAdapter;
+
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 11.12.20
+ ********************************/
+
+public abstract class SheepstarGuildCommand extends ListenerAdapter {
+
+ public String replaceUserMention(String content) {
+ return content
+ .replace("<@!", "")
+ .replace("<@", "")
+ .replace("", "");
+ }
+
+ public String getPrefix() {
+ if (SheepManager.BETA_INSTANCE) {
+ return "st!";
+ } else {
+ return "s!";
+ }
+ }
+
+ public StrangerManager getStrangerManager() {
+ return Main.getStrangerManager();
+ }
+
+ public GlobalManager getGlobalManager() {
+ return Main.getGlobalManager();
+ }
+
+ public MessageBuilder sendErrorMessage() {
+ return new MessageBuilder(MessageType.RED_MESSAGE);
+ }
+
+ public MessageBuilder sendMessage() {
+ return new MessageBuilder(MessageType.GREEN_MESSAGE);
+ }
+
+ public JDA getJDA() { return Main.getInstance(); }
+
+ public abstract List getAlias();
+
+ public abstract SheepPermission getPermission();
+
+ public abstract void executeCommand(String[] args, GuildMessageReceivedEvent e);
+
+ @Override
+ public void onGuildMessageReceived(GuildMessageReceivedEvent e) {
+ if (e.getAuthor() == null || e.getChannel() == null) return;
+ if (e.getAuthor().isBot()) return;
+ if (!isValidCommand(e.getGuild(), e.getMessage())) return;
+
+ if (!getPermission().equals(null)) {
+
+ if (getPermission() == SheepPermission.ADMINISTRATOR) {
+ if (!e.getMember().hasPermission(Permission.ADMINISTRATOR)) {
+ sendErrorMessage()
+ .setDescription("You dont have the permission to do this.")
+ .send(e.getChannel());
+ return;
+ }
+ } else if (getPermission() == SheepPermission.BOT_OWNER) {
+ if (!Main.getSheepManager().botOwners.contains(e.getAuthor().getId())) {
+ sendErrorMessage()
+ .setDescription("Only Bot Owners have Permission for this Command")
+ .send(e.getChannel());
+ return;
+ }
+ } else if (getPermission() == SheepPermission.SUPPORTER) {
+ if (!(e.getMember().getRoles().contains(Main.getSheepManager().supporterRole) || Main.getSheepManager().botOwners.contains(e.getAuthor().getId()))) {
+ sendErrorMessage()
+ .setDescription("You dont have the permission to do this.")
+ .send(e.getChannel());
+ return;
+ }
+ }
+ }
+
+ String[] args = commandArgs(e.getGuild(), e.getMessage());
+ executeCommand(args, e);
+ }
+
+ private boolean isValidCommand(Guild guild, Message msg) {
+ String prefix = getPrefix();
+ if (!msg.getContentRaw().startsWith(prefix)) return false;
+ String cmdName = msg.getContentRaw().substring(prefix.length()).toLowerCase();
+ if (cmdName.contains(" ")) {
+ cmdName = cmdName.substring(0, cmdName.indexOf(" "));
+ }
+ if (cmdName.contains("\n")) {
+ cmdName = cmdName.substring(0, cmdName.indexOf("\n"));
+ }
+ return getAlias().contains(cmdName);
+ }
+
+ private String[] commandArgs(Guild guild, Message msg) {
+ String prefix = getPrefix();
+ String noPrefix = msg.getContentRaw().substring(prefix.length());
+ if (!noPrefix.contains(" ")) {
+ return new String[]{};
+ }
+ return noPrefix.substring(noPrefix.indexOf(" ") + 1).split("\\s+");
+ }
+
+}
\ No newline at end of file
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/ShopItem.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/ShopItem.java
new file mode 100755
index 0000000..0facb8a
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/ShopItem.java
@@ -0,0 +1,53 @@
+package de.sheepstar.globalWrapper.api;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 18.12.20
+ ********************************/
+
+public class ShopItem {
+
+ private String price;
+ private String premiumPrice;
+ private String description;
+ private boolean multiple_buyable;
+
+ public ShopItem(String price, String premiumPrice, String description, boolean multiple_buyable) {
+ this.price = price;
+ this.premiumPrice = premiumPrice;
+ this.description = description;
+ this.multiple_buyable = multiple_buyable;
+ }
+
+ public String getPrice() {
+ return price;
+ }
+
+ public String getPremiumPrice() {
+ return premiumPrice;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public boolean isMultiple_buyable() {
+ return multiple_buyable;
+ }
+
+ public void setPrice(String price) {
+ this.price = price;
+ }
+
+ public void setPremiumPrice(String premiumPrice) {
+ this.premiumPrice = premiumPrice;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public void setMultiple_buyable(boolean multiple_buyable) {
+ this.multiple_buyable = multiple_buyable;
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/ShopItems.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/ShopItems.java
new file mode 100755
index 0000000..a5dcef9
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/ShopItems.java
@@ -0,0 +1,29 @@
+package de.sheepstar.globalWrapper.api;
+
+import java.util.Collections;
+import java.util.HashMap;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 18.12.20
+ ********************************/
+
+public class ShopItems {
+
+ public static HashMap shopItems = new HashMap<>();
+
+ public static void register() {
+ add("premium", new ShopItem("250", "250", "A nice item", false));
+ add("design_2", new ShopItem("150", "120", "2nd Design", false));
+ add("design_3", new ShopItem("175", "135", "3rd Design", false));
+ add("design_4", new ShopItem("150", "120", "4rd Design", false));
+ add("channel", new ShopItem("150", "120", "Another Global Chat Channel", true));
+ add("booster", new ShopItem("200", "170", "Boosts your xp", true));
+ }
+
+ public static void add(String name, ShopItem item) {
+ shopItems.put(name, item);
+ }
+
+
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/ShopManager.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/ShopManager.java
new file mode 100755
index 0000000..020f20f
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/ShopManager.java
@@ -0,0 +1,61 @@
+package de.sheepstar.globalWrapper.api;
+
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.entities.Guild;
+
+import java.sql.ResultSet;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 18.12.20
+ ********************************/
+
+public class ShopManager {
+
+ LevelManager levelManager;
+ Guild guild;
+
+ public ShopManager(LevelManager lm) {
+ this.levelManager = lm;
+ this.guild = lm.getGuild();
+ }
+
+ public void buyItem(String price, String item, boolean checkItemOwnership) {
+ if (checkItemOwnership && hasItem(item)) return;
+ if (Integer.parseInt(levelManager.getLevel()) >= Integer.parseInt(price)) {
+ if (item.equals("premium")) {
+ Main.getGlobalManager().setPremium(guild);
+ return;
+ }
+ MySQL.update("INSERT INTO items_buyed (guildID, item) VALUES (?, ?)", guild.getId(), item);
+ levelManager.removeLevel(price);
+ }
+ }
+
+ public boolean hasItem(String item) {
+ if (item.equals("premium")) {
+ return Main.getGlobalManager().hasPremium(guild);
+ }
+ ResultSet rs = MySQL.getResult("SELECT * FROM items_buyed WHERE guildID=? AND item=?", guild.getId(), item);
+ try {
+ while (rs.next()) {
+ return true;
+ }
+ } catch (Exception ignored) {}
+ return false;
+ }
+
+ public int getItemCount(String item) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM items_buyed WHERE guildID=? AND item=?", guild.getId(), item);
+ int count=0;
+ try {
+ while (rs.next()) {
+ count++;
+ }
+ } catch (Exception ignored) {}
+ return count;
+ }
+
+
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/StrangerManager.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/StrangerManager.java
new file mode 100755
index 0000000..5ea28dd
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/StrangerManager.java
@@ -0,0 +1,129 @@
+package de.sheepstar.globalWrapper.api;
+
+import de.sheepstar.globalWrapper.api.messagebuilder.MessageBuilder;
+import de.sheepstar.globalWrapper.api.messagebuilder.MessageType;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.TextChannel;
+
+import java.sql.ResultSet;
+import java.util.Objects;
+import java.util.Random;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 14.12.20
+ ********************************/
+
+public class StrangerManager {
+
+ public boolean isRegistered(Guild guild, TextChannel channel) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM strangers WHERE guildID=? AND channelID=?", guild.getId(), channel.getId());
+ try { while (rs.next()) { return true; } } catch (Exception err) {}
+ return false;
+ }
+
+ public void register(Guild guild, TextChannel channel, String languageCode) {
+ if (isRegistered(guild, channel)) return;
+ MySQL.update("INSERT INTO strangers (guildID, channelID, language) VALUES (?, ?, ?)", guild.getId(), channel.getId(), languageCode);
+ }
+
+ public void unregister(Guild guild, TextChannel channel) {
+ if (!isRegistered(guild, channel)) return;
+ MySQL.update("DELETE FROM strangers WHERE guildID=? AND channelID=?", guild.getId(), channel.getId());
+ }
+
+ public int getCount() {
+ int count = 0;
+ ResultSet rs = MySQL.getResult("SELECT * FROM strangers");
+ try { while (rs.next()) {count++;} } catch (Exception err) {}
+ return count;
+ }
+
+ public int getCount(Guild guild) {
+ int count = 0;
+ ResultSet rs = MySQL.getResult("SELECT * FROM strangers WHERE guildID=?", guild.getId());
+ try { while (rs.next()) {count++;} } catch (Exception err) {}
+ return count;
+ }
+
+ public void disconnect(TextChannel textChannel, String connectID) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM strangers WHERE connectID=?", connectID);
+ try {
+ while (rs.next()) {
+ new MessageBuilder(MessageType.GREEN_MESSAGE)
+ .setTitle("**Good bye!**")
+ .setDescription("Connection closed.")
+ .send(Objects.requireNonNull(Main.getInstance().getTextChannelById(rs.getString("channelID"))));
+ if (!textChannel.getId().equals(rs.getString("channelID"))) {
+ // auto reconnect
+ new MessageBuilder(MessageType.GREEN_MESSAGE)
+ .setTitle("Reconnecting...")
+ .setDescription("Waiting until an other server is connecting to yours")
+ .send(Objects.requireNonNull(Main.getInstance().getTextChannelById(rs.getString("channelID"))));
+ connect(
+ Main.getInstance().getGuildById(rs.getString("guildID")),
+ Main.getInstance().getTextChannelById(rs.getString("channelID")),
+ rs.getString("language")
+ );
+ }
+ }
+ } catch (Exception err) {}
+ MySQL.update("UPDATE strangers SET connectID='' WHERE connectID=?", connectID);
+ }
+
+ public String getConnectID(Guild guild, TextChannel channel) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM strangers WHERE guildID=? AND channelID=?", guild.getId(), channel.getId());
+ try {
+ while (rs.next()) { return rs.getString("connectID"); }
+ } catch (Exception err) {}
+ return "null";
+ }
+
+ public String getLanguage(Guild guild, TextChannel channel) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM strangers WHERE guildID=? AND channelID=?", guild.getId(), channel.getId());
+ try {
+ while (rs.next()) {
+ return rs.getString("language");
+ }
+ } catch (Exception err) {}
+ return "EN";
+ }
+
+ public void connect(Guild guild, TextChannel channel, String languageCode) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM strangers WHERE connectID='' AND language=? ORDER BY RAND() LIMIT 2", languageCode);
+ boolean connected = false;
+ String connectID = String.valueOf(new Random().nextInt(999999999));
+ try {
+ while (rs.next()) {
+ String currentGuildID = rs.getString("guildID");
+ String channelID = rs.getString("channelID");
+ int id=rs.getInt("id");
+ if (!connected) {
+ if (!(currentGuildID.equals(guild.getId()) && channelID.equals(channel.getId()))) {
+ MySQL.update("UPDATE strangers SET connectID=? WHERE id=?", connectID, String.valueOf(id));
+ MySQL.update("UPDATE strangers SET connectID=? WHERE guildID=? AND channelID=?", connectID, guild.getId(), channel.getId());
+ new MessageBuilder(MessageType.GREEN_MESSAGE)
+ .setTitle("Connected!")
+ .setDescription("You are connected with `"+Main.getInstance().getGuildById(currentGuildID).getName()+"`")
+ .send(channel);
+ new MessageBuilder(MessageType.GREEN_MESSAGE)
+ .setTitle("Connected!")
+ .setDescription("You are connected with `"+guild.getName()+"`")
+ .send(Objects.requireNonNull(Main.getInstance().getTextChannelById(channelID)));
+ connected = true;
+ }
+ }
+
+ }
+ } catch (Exception err) {}
+ if (!connected) {
+ new MessageBuilder(MessageType.RED_MESSAGE)
+ .setTitle("Currently all servers are connected")
+ .setDescription("You are now in the queue, please wait until another server connects with yours")
+ .send(channel);
+ }
+ }
+
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/ValidationCheck.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/ValidationCheck.java
new file mode 100755
index 0000000..9d9954f
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/ValidationCheck.java
@@ -0,0 +1,101 @@
+package de.sheepstar.globalWrapper.api;
+
+import de.sheepstar.globalWrapper.api.messagebuilder.MessageBuilder;
+import de.sheepstar.globalWrapper.api.messagebuilder.MessageType;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.sql.ResultSet;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 17.12.20
+ ********************************/
+
+public class ValidationCheck {
+
+ public boolean validate(GuildMessageReceivedEvent e) {
+ GlobalManager gm = Main.getGlobalManager();
+ if (e.getAuthor().isBot()) return false;
+
+ if (SheepManager.BETA_INSTANCE) {
+ if (e.getMessage().getContentRaw().toLowerCase().startsWith("st!")) return false;
+ } else {
+ if (e.getMessage().getContentRaw().toLowerCase().startsWith("s!")) return false;
+ }
+
+ if (e.getMessage().getContentRaw().startsWith("=")) {
+ e.getMessage().addReaction(Main.getInstance().getEmotesByName("Sstar_cross", false).get(0)).queue();
+ return false;
+ }
+
+ try {
+ e.getMessage().delete().queue();
+ } catch (Exception err) { return false; }
+
+ if (!(e.getChannel().getSlowmode() > 4)) {
+ new MessageBuilder(MessageType.RED_MESSAGE)
+ .setDescription("This channel requires a slow mode of at least 5 seconds for writing")
+ .send(e.getChannel());
+ return false;
+ }
+
+ if (gm.isBanned(e.getGuild())) {
+ new MessageBuilder(MessageType.RED_MESSAGE)
+ .setDescription("This server is banned from Global Chat. You can write an Unban request under [this Link](https://discord.gg/jbne9JTJtU).")
+ .send(e.getChannel());
+ return false;
+ }
+
+ if (gm.isGuildUserBanned(e.getGuild(), e.getAuthor().getId())) {
+ new MessageBuilder(MessageType.RED_MESSAGE)
+ .setDescription(e.getAuthor().getAsMention() + ", you are banned from the global chat on this Server. Please contact the server owner if you think, this is an error.")
+ .send(e.getChannel());
+ return false;
+ }
+
+ if (gm.isGlobalUserBanned(e.getAuthor().getId())) {
+ new MessageBuilder(MessageType.RED_MESSAGE)
+ .setDescription(e.getAuthor().getAsMention() + ", you are banned from Global Chat. You can write an Unban request under [this Link](https://discord.gg/jbne9JTJtU).")
+ .send(e.getChannel());
+ return false;
+ }
+
+ // Check if Message Contains Ads
+ String msg = e.getMessage().getContentRaw().toLowerCase();
+ if ((msg.contains("http://") ||
+ msg.contains("https://") ||
+ msg.contains("www.")) && !e.getAuthor().getId().equals("357214370188492802")) {
+ new MessageBuilder(MessageType.RED_MESSAGE)
+ .setTitle("Stop it!")
+ .setDescription(e.getAuthor().getAsMention() + ", you are not allowed to send Links here.")
+ .send(e.getChannel());
+ return false;
+ }
+
+ if (isBlocked(e.getMessage().getContentRaw()) || isServerBlocked(e.getGuild().getId(), e.getMessage().getContentRaw())) {
+ new MessageBuilder(MessageType.RED_MESSAGE)
+ .setTitle("Stop it!")
+ .setDescription(e.getAuthor().getAsMention() + ", you are not allowed to offend here.")
+ .send(e.getChannel());
+ return false;
+ }
+ return true;
+ }
+
+ public boolean isServerBlocked(String guildID, String msgContent) {
+ msgContent = msgContent.replace(" ", "");
+ ResultSet rs = MySQL.getResult("SELECT * FROM sword_blacklist WHERE guildID=? AND ? LIKE concat('%', word, '%');", guildID, msgContent);
+ try { while (rs.next()) {return true;} } catch (Exception err) {}
+ return false;
+ }
+
+ public boolean isBlocked(String msgContent) {
+ msgContent = msgContent.replace(" ", "");
+ ResultSet rs = MySQL.getResult("SELECT * FROM word_blacklist WHERE ? LIKE concat('%', word, '%');", msgContent);
+ try { while (rs.next()) {return true;} } catch (Exception err) {}
+ return false;
+ }
+
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/messagebuilder/MessageBuilder.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/messagebuilder/MessageBuilder.java
new file mode 100755
index 0000000..0b5614d
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/messagebuilder/MessageBuilder.java
@@ -0,0 +1,80 @@
+package de.sheepstar.globalWrapper.api.messagebuilder;
+
+import de.sheepstar.globalWrapper.api.SheepManager;
+import net.dv8tion.jda.api.EmbedBuilder;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.Message;
+import net.dv8tion.jda.api.entities.MessageEmbed;
+import net.dv8tion.jda.api.entities.TextChannel;
+
+import java.awt.*;
+import java.time.OffsetDateTime;
+import java.time.ZoneId;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class MessageBuilder {
+
+ EmbedBuilder eb;
+
+ public MessageBuilder(MessageType type) {
+ eb = new EmbedBuilder();
+ setThumbnail("https://global.sheepstar.xyz/Sstar_Global_Rund.png");
+ if (type == MessageType.GREEN_MESSAGE) {
+ eb.setColor(new Color(0x2ecc71));
+ } else if (type == MessageType.RED_MESSAGE) {
+ eb.setColor(new Color(0xde1f1f));
+ eb.setTitle("Oh no!");
+ }
+ }
+
+ public MessageBuilder addField(String name, String value, boolean inline) {
+ eb.addField(name, value, inline);
+ return this;
+ }
+
+ public MessageBuilder setTitle(String title) {
+ eb.setTitle(title);
+ return this;
+ }
+
+ public MessageBuilder setDescription(String description) {
+ description = (SheepManager.BETA_INSTANCE) ? description.replace("s!", "st!") : description;
+ eb.setDescription(description);
+ return this;
+ }
+
+ public MessageBuilder setAuthor(String author) {
+ eb.setAuthor(author);
+ return this;
+ }
+
+ public MessageBuilder setThumbnail(String url) {
+ eb.setThumbnail(url);
+ return this;
+ }
+
+ public MessageBuilder setFooter(String footer) {
+ footer = (SheepManager.BETA_INSTANCE) ? footer.replace("s!", "st!") : footer;
+ eb.setFooter(footer);
+ return this;
+ }
+
+ public MessageBuilder enableTimeStamp() {
+ eb.setTimestamp(OffsetDateTime.now().atZoneSameInstant(ZoneId.of("Europe/Berlin")));
+ return this;
+ }
+
+ public MessageEmbed get() {
+ return eb.build();
+ }
+
+ public MessageBuilder send(TextChannel channel) {
+ channel.sendMessage(eb.build()).queue();
+ return this;
+ }
+
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/messagebuilder/MessageType.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/messagebuilder/MessageType.java
new file mode 100755
index 0000000..053ba65
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/messagebuilder/MessageType.java
@@ -0,0 +1,5 @@
+package de.sheepstar.globalWrapper.api.messagebuilder;
+
+public enum MessageType {
+ RED_MESSAGE, GREEN_MESSAGE;
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/sql/MySQL.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/sql/MySQL.java
new file mode 100755
index 0000000..ca3d309
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/sql/MySQL.java
@@ -0,0 +1,74 @@
+package de.sheepstar.globalWrapper.api.sql;
+
+import de.sheepstar.globalWrapper.api.SheepManager;
+import de.sheepstar.globalWrapper.core.Main;
+
+import java.sql.*;
+
+public class MySQL {
+
+ public static String host = Main.getSheepManager().getSQLParam(SqlParam.HOSTNAME);
+ public static String database = Main.getSheepManager().getSQLParam(SqlParam.DATABASE);
+ public static String username = Main.getSheepManager().getSQLParam(SqlParam.USERNAME);
+ public static String password = Main.getSheepManager().getSQLParam(SqlParam.PASSWORD);
+ public static Connection con;
+
+ public static void connect() {
+ if (!isConnected()) {
+ try {
+ SheepManager.sendConsoleMessage("Connecting to " + host + " with user " + username + " to database " + database);
+ con = DriverManager.getConnection("jdbc:mysql://" + host + "/" + database + "?useSSL=false&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&allowPublicKeyRetrieval=true", username, password);
+ SheepManager.sendConsoleMessage("MySQL Connection established");
+ } catch (SQLException throwables) {
+ throwables.printStackTrace();
+ }
+ }
+ }
+
+ public static void disconnect() {
+ if (isConnected()) {
+ try {
+ con.close();
+ con = null;
+ SheepManager.sendConsoleMessage("MySQL Connection closed");
+ } catch (SQLException throwables) {
+ throwables.printStackTrace();
+ }
+ }
+ }
+
+ public static boolean isConnected() {
+ return (con != null);
+ }
+
+ public static void update(String qry, String... param) {
+ try {
+ PreparedStatement ps = con.prepareStatement(qry);
+ int number = 1;
+ for (String current : param) {
+ ps.setString(number, current);
+ number++;
+ }
+ ps.executeUpdate();
+ } catch (SQLException throwables) {
+ throwables.printStackTrace();
+ }
+ }
+
+ public static ResultSet getResult(String qry, String... param) {
+ try {
+ PreparedStatement ps = con.prepareStatement(qry);
+ int number = 1;
+ for (String current : param) {
+ ps.setString(number, current);
+ number++;
+ }
+
+ return ps.executeQuery();
+ } catch (SQLException throwables) {
+ throwables.printStackTrace();
+ }
+ return null;
+ }
+
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/sql/SqlParam.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/sql/SqlParam.java
new file mode 100755
index 0000000..9f00039
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/sql/SqlParam.java
@@ -0,0 +1,10 @@
+package de.sheepstar.globalWrapper.api.sql;
+
+public enum SqlParam {
+
+ HOSTNAME,
+ USERNAME,
+ PASSWORD,
+ DATABASE;
+
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/sql/TableGenerator.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/sql/TableGenerator.java
new file mode 100755
index 0000000..bda9e42
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/api/sql/TableGenerator.java
@@ -0,0 +1,146 @@
+package de.sheepstar.globalWrapper.api.sql;
+
+import de.sheepstar.globalWrapper.core.Main;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class TableGenerator {
+ public static void run() {
+ // Generiere Server-Bantabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS log" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`guildID` VARCHAR(255) NOT NULL , " +
+ "`senderID` VARCHAR(255) NOT NULL , " +
+ "`date` TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), " +
+ "`message` VARCHAR(255) NOT NULL , " +
+ "`language` VARCHAR(255) NOT NULL , " +
+ "`roomID` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere Designtabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS designs" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`guildID` VARCHAR(255) NOT NULL , " +
+ "`designID` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere gekaufte-itemstabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS items_buyed" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`guildID` VARCHAR(255) NOT NULL , " +
+ "`item` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere Leveltabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS levels" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`guildID` VARCHAR(255) NOT NULL , " +
+ "`xp` VARCHAR(255) NOT NULL , " +
+ "`level` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere Premiumtabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS premium" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`guildID` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere Server-Bantabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS server_bans" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`guildID` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere Nutzer-Bantabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS user_bans" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`clientID` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere Servertabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS guilds" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`guildID` VARCHAR(255) NOT NULL , " +
+ "`channelID` VARCHAR(255) NOT NULL , " +
+ "`languageCode` VARCHAR(255) NOT NULL , " +
+ "`roomID` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere Servertabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS strangers" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`guildID` VARCHAR(255) NOT NULL , " +
+ "`channelID` VARCHAR(255) NOT NULL , " +
+ "`language` VARCHAR(255) NOT NULL DEFAULT 'EN', " +
+ "`connectID` VARCHAR(255) NOT NULL DEFAULT '', " +
+ "`time` TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere Sprachentabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS languages" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`code` VARCHAR(255) NOT NULL , " +
+ "`name` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere Räumetabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS rooms" +
+ " ( " +
+ "`code` INT(255) NOT NULL AUTO_INCREMENT, " +
+ "`name` VARCHAR(255) NOT NULL , " +
+ "`categorie` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`code`))");
+
+ // Generiere Räumetabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS room_categories" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT, " +
+ "`name` VARCHAR(255) NOT NULL , " +
+ "`reaction` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere Wortblacklisttabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS word_blacklist" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`word` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere Serverspezifische Wortblacklisttabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS sword_blacklist" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`guildID` VARCHAR(255) NOT NULL , " +
+ "`word` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere Autoupdatetabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS server_autoupdate" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`guildID` VARCHAR(255) NOT NULL , " +
+ "`channelID` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+
+ // Generiere Serverspezifische Wortblacklisttabelle
+ MySQL.update("CREATE TABLE IF NOT EXISTS suser_bans" +
+ " ( " +
+ "`id` INT(255) NOT NULL AUTO_INCREMENT , " +
+ "`guildID` VARCHAR(255) NOT NULL , " +
+ "`clientID` VARCHAR(255) NOT NULL , " +
+ "PRIMARY KEY (`id`))");
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/AddGlobalCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/AddGlobalCommand.java
new file mode 100755
index 0000000..5ff8420
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/AddGlobalCommand.java
@@ -0,0 +1,70 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.LevelManager;
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.api.ShopManager;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 11.12.20
+ ********************************/
+
+public class AddGlobalCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("addglobal", "newglobal", "ag");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ if (getStrangerManager().isRegistered(e.getGuild(), e.getChannel())) {
+ sendErrorMessage()
+ .setTitle("Wait a minute...")
+ .setDescription("You already added this as Connection on your server. Disconnect with `s!disconnect`")
+ .send(e.getChannel());
+ return;
+ }
+ if (getGlobalManager().isRegistered(e.getGuild(), e.getChannel())) {
+ sendErrorMessage()
+ .setTitle("Wait a minute... ")
+ .setDescription("You already have this GlobalChat on your server.\n" +
+ "Please note that each server can only have one GlobalChat per room.")
+ .send(e.getChannel());
+
+ } else {
+ ShopManager sm = new ShopManager(new LevelManager(e.getGuild()));
+ boolean isAllowed = false;
+ if (getGlobalManager().hasPremium(e.getGuild())) isAllowed = true;
+ if (getGlobalManager().getCount(e.getGuild()) < sm.getItemCount("channel")) isAllowed = true;
+ if (getGlobalManager().getCount(e.getGuild()) == 0) isAllowed = true;
+
+ if (!isAllowed) {
+ sendErrorMessage()
+ .setDescription("You need Premium or the `channel-item` to add more GlobalChats. You can buy these things under s!shop")
+ .send(e.getChannel());
+ return;
+ }
+ getGlobalManager().register(e.getGuild(), e.getChannel());
+
+ sendMessage()
+ .setTitle("**__Welcome to the Global Chat of Sheepstar__**")
+ .setDescription("**:warning: Warning**: \n" +
+ "Everything written here will be sent to all servers connected to <@772513556116930580>. " +
+ "For questions and help, contact our team on the [Support Server](https://discord.gg/jbne9JTJtU) \n" +
+ "Furthermore, you and your server team have the duty to make sure that the rules in the Global Chat are followed! \n" +
+ "If this is not the case, your server will be immediately excluded from Global Chat.")
+ .send(e.getChannel());
+ }
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/AddOffenseCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/AddOffenseCommand.java
new file mode 100755
index 0000000..5d7b8b5
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/AddOffenseCommand.java
@@ -0,0 +1,64 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class AddOffenseCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("wf", "wordfilter", "blacklistword", "banword", "bw");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.UNKNOWN;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ if (args.length != 1) return;
+ if (Main.getSheepManager().botOwners.contains(e.getAuthor().getId())) {
+ if (!getGlobalManager().alreadyGlobalBlacklisted(args[0])) {
+ MySQL.update("INSERT INTO word_blacklist (word) VALUES (?)", args[0]);
+ sendMessage()
+ .setTitle("Word added")
+ .setDescription("Offense added to the general blacklist.")
+ .send(e.getChannel());
+ } else {
+ sendErrorMessage()
+ .setDescription("Word already registered on our server.")
+ .send(e.getChannel());
+ }
+ } else if (e.getMember().hasPermission(Permission.ADMINISTRATOR)) {
+ if (!getGlobalManager().alreadyServerBlacklisted(e.getGuild(), args[0])) {
+ MySQL.update("INSERT INTO sword_blacklist (guildID, word) VALUES (?, ?)", e.getGuild().getId(), args[0]);
+ sendMessage()
+ .setTitle("Word added")
+ .setDescription("Offense added to your server's list.")
+ .send(e.getChannel());
+ } else {
+ sendErrorMessage()
+ .setDescription("Word already registered on your server's list.")
+ .send(e.getChannel());
+ }
+ } else {
+ sendErrorMessage()
+ .setDescription("You dont have the permission to do this.")
+ .send(e.getChannel());
+ }
+
+
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/AddStrangerCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/AddStrangerCommand.java
new file mode 100755
index 0000000..9a9821d
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/AddStrangerCommand.java
@@ -0,0 +1,81 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepManager;
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.sql.ResultSet;
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 11.12.20
+ ********************************/
+
+public class AddStrangerCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("connect", "connection", "newconnection");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ String language = "EN";
+ if (args.length == 1) {
+ if (getGlobalManager().isValidLanguage(args[0])) {
+ language = args[0].toUpperCase();
+ } else {
+ sendErrorMessage()
+ .setDescription("This is not a valid language. See a list under `s!langs`")
+ .send(e.getChannel());
+ }
+ }
+ if (getGlobalManager().isRegistered(e.getGuild(), e.getChannel())) {
+ sendErrorMessage()
+ .setTitle("Uhm... Nope")
+ .setDescription("You already added this channel as GlobalChat on your server. Remove with `s!removeGlobal`")
+ .send(e.getChannel());
+ return;
+ }
+
+ if (getStrangerManager().isRegistered(e.getGuild(), e.getChannel())) {
+ sendErrorMessage()
+ .setTitle("Wait a minute...")
+ .setDescription("You already added this as Connection on your server. Disconnect with `s!disconnect`")
+ .send(e.getChannel());
+ return;
+ }
+
+ if (getStrangerManager().getCount(e.getGuild()) > 0 && !Main.getSheepManager().botOwners.contains(e.getAuthor().getId())) {
+ sendErrorMessage()
+ .setTitle("Connection maximum reached")
+ .setDescription("You are not allowed to create more of these channels.")
+ .send(e.getChannel());
+ return;
+ }
+
+ getStrangerManager().register(e.getGuild(), e.getChannel(), language);
+
+ sendMessage()
+ .setTitle("**__You are now in the queue, please wait until another server connects with your server.__**")
+ .setDescription("**:warning: Warning**: \n" +
+ "Everything written here will be sent to another server, connected to this function by <@772513556116930580>. " +
+ "For questions and help, contact our team on the [Support Server](https://discord.gg/jbne9JTJtU) \n" +
+ "Also you and your server team have the duty to make sure that the rules in the 'Stranger Area' are followed! \n" +
+ "If this is not the case, your server will be immediately excluded from this Bot. " +
+ "Also if you see other servers not following the rules you have to report them to the team.")
+ .send(e.getChannel());
+
+
+ getStrangerManager().connect(e.getGuild(), e.getChannel(), language);
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/AutoUpdateCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/AutoUpdateCommand.java
new file mode 100755
index 0000000..268cb39
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/AutoUpdateCommand.java
@@ -0,0 +1,43 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 17.12.20
+ ********************************/
+
+public class AutoUpdateCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("autodesc", "descupdate", "autodescupdate", "descupdater");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ if (!getGlobalManager().isDescRegistered(e.getGuild(), e.getChannel())) {
+ MySQL.update("INSERT INTO server_autoupdate (guildID, channelID) VALUES (?, ?)", e.getGuild().getId(), e.getChannel().getId());
+ sendMessage()
+ .setTitle("Sheepstar Autodesc")
+ .setDescription("You turned on auto description update. To turn off, use the same command again.")
+ .send(e.getChannel());
+ } else {
+ MySQL.update("DELETE FROM server_autoupdate WHERE guildID=? AND channelID=?", e.getGuild().getId(), e.getChannel().getId());
+ sendMessage()
+ .setTitle("Sheepstar Autodesc")
+ .setDescription("You turned off auto description update. To turn on, use the same command again.")
+ .send(e.getChannel());
+ }
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/BanServerCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/BanServerCommand.java
new file mode 100755
index 0000000..f2b827e
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/BanServerCommand.java
@@ -0,0 +1,52 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class BanServerCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("banserver", "bs", "serverban");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.BOT_OWNER;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ if (args.length != 1) return;
+ String serverName;
+ try {
+ serverName = Main.getInstance().getGuildById(args[0]).getName();
+ if (!getGlobalManager().isBanned(Main.getInstance().getGuildById(args[0]))) {
+ getGlobalManager().banServer(Main.getInstance().getGuildById(args[0]));
+ sendMessage()
+ .setTitle("Sheepstar Ban")
+ .setDescription("The Server `" + serverName + "` got banned.")
+ .send(e.getChannel());
+ } else {
+ sendErrorMessage()
+ .setDescription("Whoa! This Server is already banned. Unban with `s!unbanserver `")
+ .send(e.getChannel());
+ }
+ } catch (Exception err) {
+ sendErrorMessage()
+ .setTitle("Sheepstar Error")
+ .setDescription("This Server does not exist")
+ .send(e.getChannel());
+ }
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/BanUserCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/BanUserCommand.java
new file mode 100755
index 0000000..c05a54e
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/BanUserCommand.java
@@ -0,0 +1,81 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class BanUserCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("banuser", "bu", "userban");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.UNKNOWN;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ if (args.length != 1) return;
+ args[0] = replaceUserMention(args[0]);
+ int logic=0;
+ if (e.getMember().getRoles().contains(Main.getSheepManager().supporterRole) || Main.getSheepManager().botOwners.contains(e.getAuthor().getId())) {
+ logic=1;
+ } else if (e.getMember().hasPermission(Permission.ADMINISTRATOR)) {
+ logic=2;
+ }
+
+ try {
+ int finalLogic = logic;
+ Main.getInstance().retrieveUserById(args[0]).queue(user -> {
+ String userName = user.getAsTag();
+
+ if (finalLogic == 1) {
+ if (!getGlobalManager().isGlobalUserBanned(args[0])) {
+ getGlobalManager().banUserGlobal(args[0]);
+ sendMessage()
+ .setTitle("Sheepstar Ban")
+ .setDescription("The User `" + userName + "` got banned.")
+ .send(e.getChannel());
+ } else {
+ sendErrorMessage()
+ .setDescription("This User is already banned. Unban with `s!unbanuser `")
+ .send(e.getChannel());
+ }
+ } else if (finalLogic == 2) {
+ if (!getGlobalManager().isGuildUserBanned(e.getGuild(), args[0])) {
+ getGlobalManager().banUserGuild(e.getGuild(), args[0]);
+ sendMessage()
+ .setTitle("Sheepstar Ban")
+ .setDescription("The User `" + userName + "` got banned from the serverchat.")
+ .send(e.getChannel());
+ } else {
+ sendErrorMessage()
+ .setDescription("This User is already banned. Unban with `s!unbanuser `")
+ .send(e.getChannel());
+ }
+ } else {
+ sendErrorMessage()
+ .setDescription("`You dont have the permission to do this.`")
+ .send(e.getChannel());
+ }
+
+ });
+ } catch (Exception err) {
+ sendErrorMessage()
+ .setDescription("This User does not exist")
+ .send(e.getChannel());
+ }
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/BuyCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/BuyCommand.java
new file mode 100755
index 0000000..db0dd28
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/BuyCommand.java
@@ -0,0 +1,67 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.*;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 19.12.20
+ ********************************/
+
+public class BuyCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("buy", "buyitem", "buyit");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ LevelManager lm = new LevelManager(e.getGuild());
+ ShopManager sm = new ShopManager(lm);
+ if (args.length != 1) {
+ sendErrorMessage()
+ .setDescription("Please provide a product. Look at the list under s!shop")
+ .send(e.getChannel());
+ return;
+ }
+ if (!ShopItems.shopItems.containsKey(args[0])) {
+ sendErrorMessage()
+ .setDescription("This product does not exist. Look at the list under s!shop")
+ .send(e.getChannel());
+ return;
+ }
+
+ ShopItem item = ShopItems.shopItems.get(args[0]);
+
+ int price = getGlobalManager().hasPremium(e.getGuild()) ? Integer.parseInt(item.getPremiumPrice()) : Integer.parseInt(item.getPrice());
+
+ if (!item.isMultiple_buyable() && sm.hasItem(args[0].toLowerCase())) {
+ sendErrorMessage()
+ .setDescription("You already bought this Item.")
+ .send(e.getChannel());
+ return;
+ }
+
+ if (Integer.parseInt(lm.getLevel()) >= price) {
+ sm.buyItem(String.valueOf(price), args[0].toLowerCase(), !item.isMultiple_buyable());
+ sendMessage()
+ .setTitle("Item bought")
+ .setDescription("The item " + args[0].toLowerCase() + " was bought successfully.")
+ .send(e.getChannel());
+ } else {
+ sendErrorMessage()
+ .setDescription("You dont habe enough levels to buy this item")
+ .send(e.getChannel());
+ }
+
+
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ChangeLanguageCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ChangeLanguageCommand.java
new file mode 100755
index 0000000..3f5b226
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ChangeLanguageCommand.java
@@ -0,0 +1,54 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class ChangeLanguageCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("lang", "lan", "language", "setlanguage", "changelanguage", "sl", "cl", "setlang");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ if (!getGlobalManager().isRegistered(e.getGuild(), e.getChannel())) {
+ sendErrorMessage()
+ .setDescription("Wait! At first you should add this channel! `s!addGlobal`")
+ .send(e.getChannel());
+ return;
+ }
+ if (args.length != 1) {
+ sendErrorMessage()
+ .setDescription("Please choose a language: s!setLanguage \nYou can find a list under s!languages")
+ .send(e.getChannel());
+ return;
+ }
+ if (!getGlobalManager().isValidLanguage(args[0].toUpperCase())) {
+ sendErrorMessage()
+ .setDescription("This language does not exist \nYou can find a list under s!languages")
+ .send(e.getChannel());
+
+ } else {
+ getGlobalManager().changeLanguageCode(e.getGuild(), e.getChannel(), args[0].toLowerCase());
+ sendMessage()
+ .setTitle("Channel language updated")
+ .setDescription("You changed this language to " + args[0].toUpperCase() + "!")
+ .send(e.getChannel());
+ }
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ChangeRoomCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ChangeRoomCommand.java
new file mode 100755
index 0000000..e5e3b42
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ChangeRoomCommand.java
@@ -0,0 +1,64 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import net.dv8tion.jda.api.EmbedBuilder;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.awt.*;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class ChangeRoomCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("changeroom", "setroom", "sr", "room");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ if (!getGlobalManager().isRegistered(e.getGuild(), e.getChannel())) {
+ sendErrorMessage()
+ .setDescription("Wait! At first you should add this channel! `s!addGlobal`")
+ .send(e.getChannel());
+ return;
+ }
+ if (args.length != 1) {
+ sendErrorMessage()
+ .setDescription("Please choose a room: s!room \nYou can find a list under s!rooms")
+ .send(e.getChannel());
+ return;
+ }
+ if (!getGlobalManager().isValidRoom(args[0].toLowerCase())) {
+ sendErrorMessage()
+ .setDescription("This room does not exist.. \nYou can find a list under s!rooms")
+ .send(e.getChannel());
+
+ } else {
+ if (args[0].contains("p") && !getGlobalManager().hasPremium(e.getGuild())) {
+ sendErrorMessage()
+ .setDescription("You must have Premium to enter this Channel")
+ .send(e.getChannel());
+ return;
+ }
+ getGlobalManager().changeRoomID(e.getGuild(), e.getChannel(), args[0].toLowerCase());
+
+ sendMessage()
+ .setTitle("Channel room updated")
+ .setDescription("You changed this room to " + args[0].toLowerCase() + "!")
+ .send(e.getChannel());
+ }
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ClearGlobalCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ClearGlobalCommand.java
new file mode 100755
index 0000000..60b1480
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ClearGlobalCommand.java
@@ -0,0 +1,36 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class ClearGlobalCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("clearglobal", "clearlist", "clear", "listclear");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ MySQL.update("DELETE FROM guilds WHERE guildID=?", e.getGuild().getId());
+ sendMessage()
+ .setTitle("Global-Channels got cleared")
+ .setDescription("All Global Channels were deleted.")
+ .send(e.getChannel());
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/DesignCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/DesignCommand.java
new file mode 100755
index 0000000..38824cb
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/DesignCommand.java
@@ -0,0 +1,62 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.*;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 17.12.20
+ ********************************/
+
+public class DesignCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("design", "changedesign", "cdesign", "setdesign");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ ShopManager sm = new ShopManager(new LevelManager(e.getGuild()));
+ if (args.length != 1) {
+ sendErrorMessage()
+ .setDescription("Usage: s!design ")
+ .send(e.getChannel());
+ return;
+ }
+ if (args[0].equals("reset")) args[0] = "1";
+ if (args[0].equals("5") && !Main.getSheepManager().botOwners.contains(e.getAuthor().getId())) {
+ sendErrorMessage()
+ .setDescription("You are not allowed to use this Design. Please choose another")
+ .send(e.getChannel());
+ return;
+ }
+ if (getGlobalManager().isValidDesign(args[0])) {
+ if (sm.hasItem("design_"+args[0].toLowerCase()) || args[0].equals("1") || args[0].equals("5")) {
+ getGlobalManager().updateDesign(e.getGuild(), args[0]);
+ sendMessage()
+ .setTitle("Sheepstar design")
+ .setDescription("Your design has been updated to " + args[0])
+ .send(e.getChannel());
+ } else {
+ sendErrorMessage()
+ .setDescription("You dont own this. Please buy this from s!shop")
+ .send(e.getChannel());
+ }
+
+ } else {
+ sendErrorMessage()
+ .setDescription("This is not a valid design. Please choose one from s!designs")
+ .send(e.getChannel());
+ return;
+ }
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ExampleCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ExampleCommand.java
new file mode 100755
index 0000000..de1fb27
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ExampleCommand.java
@@ -0,0 +1,34 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 11.12.20
+ ********************************/
+
+public class ExampleCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("example", "test", "beispiel");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.UNKNOWN;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ sendMessage()
+ .setTitle("example")
+ .setDescription("example sheepstar message")
+ .send(e.getChannel());
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/HelpCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/HelpCommand.java
new file mode 100755
index 0000000..310b2a1
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/HelpCommand.java
@@ -0,0 +1,42 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.EmbedBuilder;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.awt.*;
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class HelpCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("help", "h", "hilfe");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.UNKNOWN;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ sendMessage()
+ .setTitle("Help menu")
+ .addField("Global Chat Help", "`s!addGlobal` \n`s!removeGlobal`\n\n[All commands](https://docs.sheepstar.xyz/global)", true)
+ .addField("EMOJI Server", "If you are " +
+ Main.getInstance().getEmotesByName("Sstar_nitro", false).get(0).getAsMention() + "-User, " +
+ "join our [EMOJI Server](https://discord.gg/mmERp6a5mA) to get access to emojis you normally can't use.", true)
+ .addField("Unban request", "Banned from Global Chat? \n Make an Unban application" +
+ " on the [Support Server](https://discord.gg/jbne9JTJtU)!", true)
+ .send(e.getChannel());
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/LeaderboardCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/LeaderboardCommand.java
new file mode 100755
index 0000000..04e9f37
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/LeaderboardCommand.java
@@ -0,0 +1,40 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.LevelManager;
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 18.12.20
+ ********************************/
+
+public class LeaderboardCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("top", "leaderboard", "toplist");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.UNKNOWN;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ LevelManager lm = new LevelManager(e.getGuild());
+ String content = "";
+ for (Guild current : lm.getTopList(10)) {
+ content += "`"+current.getName()+" (Level "+ lm.getLevel(current) + ")`\n";
+ }
+ sendMessage()
+ .setTitle("Sheepstar leaderboard")
+ .setDescription(content)
+ .send(e.getChannel());
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/LevelCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/LevelCommand.java
new file mode 100755
index 0000000..7d8dfd9
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/LevelCommand.java
@@ -0,0 +1,37 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.LevelManager;
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 18.12.20
+ ********************************/
+
+public class LevelCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("xp", "level", "levels");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.UNKNOWN;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ LevelManager lm = new LevelManager(e.getGuild());
+ sendMessage()
+ .setTitle("Global Chat Level")
+ .setDescription(e.getAuthor().getAsMention() + ", this server has:\n" +
+ "`"+lm.getXP()+" XP / "+lm.getNeededXP()+" XP`\n" +
+ "`"+lm.getLevel()+"` Level")
+ .send(e.getChannel());
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/PingCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/PingCommand.java
new file mode 100755
index 0000000..118b5ed
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/PingCommand.java
@@ -0,0 +1,35 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepManager;
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 14.12.20
+ ********************************/
+
+public class PingCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("ping", "botping", "pong", "internet");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.UNKNOWN;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ sendMessage()
+ .setTitle("Sheepstar's ping")
+ .setDescription("Pong! " + e.getJDA().getGatewayPing() + " ms")
+ .send(e.getChannel());
+ }
+}
+
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/RemoveGlobalCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/RemoveGlobalCommand.java
new file mode 100755
index 0000000..849a7f5
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/RemoveGlobalCommand.java
@@ -0,0 +1,54 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import net.dv8tion.jda.api.EmbedBuilder;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.awt.*;
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class RemoveGlobalCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("removeglobal", "deleteglobal", "rg", "dg");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ if (getStrangerManager().isRegistered(e.getGuild(), e.getChannel())) {
+ sendErrorMessage()
+ .setTitle("Wait a minute...")
+ .setDescription("You added this as an Connection. Disconnect with `s!disconnect`")
+ .send(e.getChannel());
+ return;
+ }
+ if (!getGlobalManager().isRegistered(e.getGuild(), e.getChannel())) {
+ sendErrorMessage()
+ .setDescription("You do not have a GlobalChat on your server yet.\n" +
+ "Add one with `s!addGlobal` in a fresh channel.")
+ .send(e.getChannel());
+
+ } else {
+ getGlobalManager().unregister(e.getGuild(), e.getChannel());
+ sendMessage()
+ .setTitle("**Good bye!**")
+ .setDescription("The GlobalChat was removed. You can add it anytime" +
+ " with `s!addGlobal`.")
+ .send(e.getChannel());
+
+ }
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/RemoveOffenseCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/RemoveOffenseCommand.java
new file mode 100755
index 0000000..651fbf7
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/RemoveOffenseCommand.java
@@ -0,0 +1,65 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class RemoveOffenseCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("removewf", "blacklistremoveword", "removebl", "wfr", "brw", "removebadword", "rbw");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.UNKNOWN;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ if (args.length != 1) return;
+ if (Main.getSheepManager().botOwners.contains(e.getAuthor().getId())) {
+ if (getGlobalManager().alreadyGlobalBlacklisted(args[0])) {
+ MySQL.update("DELETE FROM word_blacklist WHERE word=?", args[0]);
+ sendMessage()
+ .setTitle("Word removed")
+ .setDescription("Offense removed from the general blacklist.")
+ .send(e.getChannel());
+ } else {
+ sendErrorMessage()
+ .setDescription("Word not registered yet.")
+ .send(e.getChannel());
+ }
+ } else if (e.getMember().hasPermission(Permission.ADMINISTRATOR)) {
+ if (getGlobalManager().alreadyServerBlacklisted(e.getGuild(), args[0])) {
+ MySQL.update("DELETE FROM sword_blacklist WHERE guildID=? AND word=?", e.getGuild().getId(), args[0]);
+ sendMessage()
+ .setTitle("Word removed")
+ .setDescription("Offense removed from your server's list.")
+ .send(e.getChannel());
+ } else {
+ sendErrorMessage()
+ .setDescription("Word not registered yet.")
+ .send(e.getChannel());
+ }
+
+ } else {
+ sendErrorMessage()
+ .setDescription("You don't have the permission to do this.")
+ .send(e.getChannel());
+ }
+
+
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/RemoveStrangerCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/RemoveStrangerCommand.java
new file mode 100755
index 0000000..04b555f
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/RemoveStrangerCommand.java
@@ -0,0 +1,39 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 11.12.20
+ ********************************/
+
+public class RemoveStrangerCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("disconnect", "disconnection", "removeconnect");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ if (!getStrangerManager().isRegistered(e.getGuild(), e.getChannel())) {
+ sendErrorMessage()
+ .setTitle("Wait a minute...")
+ .setDescription("You do not have a Connection on your server yet.\n" +
+ "Add one with `s!connect [language-code]` in a fresh channel.")
+ .send(e.getChannel());
+ return;
+ }
+ getStrangerManager().disconnect(e.getChannel(), getStrangerManager().getConnectID(e.getGuild(), e.getChannel()));
+ getStrangerManager().unregister(e.getGuild(), e.getChannel());
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/RulesCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/RulesCommand.java
new file mode 100755
index 0000000..d3af0be
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/RulesCommand.java
@@ -0,0 +1,41 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Leon Fleß
+ * Created 13.12.20
+ ********************************/
+
+public class RulesCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("rules", "regeln", "rule", "r");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.UNKNOWN;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ sendMessage()
+ .setTitle("Rules")
+ .setDescription("```§1 - No NSFW\n" +
+ "§2 - No Server invites \n" +
+ "§3 - No ADs\n" +
+ "§4 - No LINKs\n" +
+ "§5 - No SPAM\n" +
+ "§6 - No Bug abusing\n" +
+ "§7 - No abusive language\n" +
+ "§8 - Use the language that you have set```")
+ .send(e.getChannel());
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/SetPremiumCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/SetPremiumCommand.java
new file mode 100755
index 0000000..fc8d261
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/SetPremiumCommand.java
@@ -0,0 +1,70 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class SetPremiumCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("setPreimum", "makePremium", "premium");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.BOT_OWNER;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ Guild guild = e.getGuild();
+ boolean changed = false;
+ if (args.length == 1) {
+ try {
+ guild = Main.getInstance().getGuildById(args[0]);
+ changed = true;
+ } catch (Exception err) {}
+ }
+ if (getGlobalManager().hasPremium(guild)) {
+ sendErrorMessage()
+ .setDescription("Nice! This Server already has Premium.")
+ .send(e.getChannel());
+ return;
+ }
+ getGlobalManager().setPremium(guild);
+ if (!changed) {
+ e.getGuild().retrieveOwner().queue(owner -> {
+ sendMessage()
+ .setTitle("Sheepstar Premium")
+ .setDescription(owner.getAsMention() + ", this Server now has Premium. " +
+ Main.getInstance().getEmotesByName("Sstar_nitro", false).get(0).getAsMention())
+ .send(e.getChannel());
+ });
+ } else {
+ sendMessage()
+ .setTitle("Sheepstar Premium")
+ .setDescription("You gave this Server Sheepstar Premium")
+ .send(e.getChannel());
+ }
+ try {
+ Guild finalGuild = guild;
+ guild.retrieveOwner().queue(owner -> {
+ owner.getUser().openPrivateChannel().queue(m -> {
+ m.sendMessage("**You are a Legend!** \nYour Server `"+ finalGuild.getName() +"` has now Sheepstar Global Premium! \nCheck! We lit! " +
+ Main.getInstance().getEmotesByName("MathiasD", false).get(0).getAsMention()).queue();
+ });
+ });
+ } catch (Exception err) {}
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ShopCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ShopCommand.java
new file mode 100755
index 0000000..b1321b6
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ShopCommand.java
@@ -0,0 +1,74 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.*;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.entities.Emote;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 18.12.20
+ ********************************/
+
+public class ShopCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("shop", "shoplist", "buylist");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.UNKNOWN;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ Emote owned = Main.getInstance().getEmotesByName("Sstar_tick", false).get(0);
+ LevelManager lm = new LevelManager(e.getGuild());
+ ShopManager sm = new ShopManager(lm);
+ StringBuilder sb = new StringBuilder();
+ ShopItems.shopItems.forEach((name, item) -> {
+ String priceString = "";
+ if (getGlobalManager().hasPremium(e.getGuild())) {
+ priceString =
+ (item.getPrice().equals(item.getPremiumPrice()))
+ ? "**"+item.getPrice() + " lvl**"
+ : "~~" + item.getPrice() + "~~ **" + item.getPremiumPrice() + " lvl**";
+ } else {
+ priceString = "**" + item.getPrice() + "**";
+ }
+
+ String ownLine = "";
+ if (item.isMultiple_buyable()) {
+ if (name.equals("channel")) {
+ ownLine = "(" + String.valueOf(getGlobalManager().getCount(e.getGuild())) + "/"+ String.valueOf(sm.getItemCount(name)) + ")";
+ } else if (name.equals("booster")) {
+ ownLine = "(" + String.valueOf(sm.getItemCount(name)+1) + "x)";
+ } else {
+ ownLine = "(" + String.valueOf(sm.getItemCount(name)) + ")";
+ }
+ } else if (sm.hasItem(name)) {
+ ownLine = owned.getAsMention();
+ } else {
+ ownLine = "";
+ }
+ sb
+ .append("`")
+ .append(name)
+ .append("` (")
+ .append(item.getDescription())
+ .append(") ")
+ .append(priceString)
+ .append(" "+ownLine)
+ .append("\n");
+ });
+ sendMessage()
+ .setTitle("Global Shop :shopping_cart:")
+ .setDescription(sb.toString())
+ .setFooter("Buy items with s!buy ")
+ .send(e.getChannel());
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ShowDesignsCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ShowDesignsCommand.java
new file mode 100755
index 0000000..818f24c
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ShowDesignsCommand.java
@@ -0,0 +1,40 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 17.12.20
+ ********************************/
+
+public class ShowDesignsCommand extends SheepstarGuildCommand {
+
+
+ @Override
+ public List getAlias() {
+ return Arrays.asList("showdesigns", "designs", "listdesigns");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ sendMessage()
+ .setTitle("Sheepstar designs")
+ .setDescription("`1 - Default Embed Message`\n" +
+ "`2 - Embed Message without 'gap'`\n" +
+ "`3 - Embed Message without 'Links & Help'`\n" +
+ "`4 - Simple Message`\n" +
+ "`5 - Admin Embed with IDs`")
+ .setFooter("Change with s!design ")
+ .send(e.getChannel());
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ShowLanguagesCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ShowLanguagesCommand.java
new file mode 100755
index 0000000..15382c2
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ShowLanguagesCommand.java
@@ -0,0 +1,68 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.sql.ResultSet;
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class ShowLanguagesCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("languages", "langs", "ls");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ ResultSet rsb = MySQL.getResult("SELECT * FROM guilds WHERE guildID=? AND channelID=?", e.getGuild().getId(), e.getChannel().getId());
+ String currentRoom = "";
+ try {
+ while (rsb.next()) {
+ currentRoom = rsb.getString("languageCode");
+ }
+ } catch (Exception err) {}
+ ResultSet rs = MySQL.getResult("SELECT * FROM languages");
+ String msgContent = "";
+ try {
+ int count = 0;
+ while (rs.next()) {
+ if (count != 0) msgContent += "\n";
+ ResultSet rst = MySQL.getResult("SELECT * FROM guilds WHERE languageCode=?", rs.getString("code"));
+ int roomCount = 0;
+ try {
+ while (rst.next()) {
+ roomCount++;
+ }
+ } catch (Exception err) {}
+ count++;
+ msgContent += "`[code] - [name] | [mem] Servers`"
+ .replace("[code]", rs.getString("code"))
+ .replace("[name]", rs.getString("name"))
+ .replace("[mem]", String.valueOf(roomCount))
+ + ((rs.getString("code").toLowerCase().equals(currentRoom.toLowerCase())) ? " " + Main.getInstance().getEmotesByName("Sstar_larrow", true)
+ .get(0).getAsMention(): "");
+ }
+ } catch (Exception err) {}
+ sendMessage()
+ .setTitle("Sheepstar languages")
+ .setDescription(msgContent)
+ .setThumbnail(null)
+ .setFooter("Change with s!lang ")
+ .send(e.getChannel());
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ShowRoomsCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ShowRoomsCommand.java
new file mode 100755
index 0000000..c3c29b5
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ShowRoomsCommand.java
@@ -0,0 +1,59 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.entities.Message;
+import net.dv8tion.jda.api.entities.MessageEmbed;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.sql.ResultSet;
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class ShowRoomsCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("rooms", "rs", "showrooms", "listrooms");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM room_categories");
+ String msgContent = "";
+
+ try { int count = 0;
+ while (rs.next()) {
+ if (count != 0) msgContent += "\n"; count++;
+ msgContent += "`"+rs.getString("name")+"` "+Main.getInstance().getEmotesByName(rs.getString("reaction"), false).get(0).getAsMention();
+ } } catch (Exception err) {}
+
+ MessageEmbed msg = sendMessage()
+ .setTitle("Sheepstar rooms")
+ .setDescription(msgContent)
+ .setThumbnail(null)
+ .setFooter("Change with s!room ")
+ .get();
+ e.getChannel().sendMessage(msg).queue(message -> {
+ message.addReaction("⬅️").queue();
+ ResultSet rst = MySQL.getResult("SELECT * FROM room_categories");
+ try {
+ while (rst.next()) {
+ message.addReaction(Main.getInstance().getEmotesByName(rst.getString("reaction"), false).get(0)).queue();
+ }
+ } catch (Exception err) { }
+ });
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/SkipConnectionCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/SkipConnectionCommand.java
new file mode 100755
index 0000000..9f3263e
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/SkipConnectionCommand.java
@@ -0,0 +1,36 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 19.12.20
+ ********************************/
+
+public class SkipConnectionCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("skip", "skipc");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.ADMINISTRATOR;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ String currentLanguage = getStrangerManager().getLanguage(e.getGuild(), e.getChannel());
+ sendMessage()
+ .setTitle("Connection skipped")
+ .setDescription("You will be connected asap.")
+ .send(e.getChannel());
+ getStrangerManager().disconnect(e.getChannel(), getStrangerManager().getConnectID(e.getGuild(), e.getChannel()));
+ getStrangerManager().connect(e.getGuild(), e.getChannel(), currentLanguage);
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/StatsCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/StatsCommand.java
new file mode 100755
index 0000000..51e68ff
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/StatsCommand.java
@@ -0,0 +1,31 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 13.12.20
+ ********************************/
+
+public class StatsCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("stats");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.BOT_OWNER;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/UnbanServerCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/UnbanServerCommand.java
new file mode 100755
index 0000000..edd75c3
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/UnbanServerCommand.java
@@ -0,0 +1,52 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class UnbanServerCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("unbanserver", "unbs", "ubs", "unbans");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.BOT_OWNER;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ if (args.length != 1) return;
+ String serverName;
+ try {
+ serverName = Main.getInstance().getGuildById(args[0]).getName();
+ if (getGlobalManager().isBanned(Main.getInstance().getGuildById(args[0]))) {
+ getGlobalManager().unbanServer(Main.getInstance().getGuildById(args[0]));
+ sendMessage()
+ .setTitle("Sheepstar Unban")
+ .setDescription("The Server `" + serverName + "` got unbanned.")
+ .send(e.getChannel());
+ } else {
+ sendErrorMessage()
+ .setDescription("This Server is not banned. Ban with `s!banserver `")
+ .send(e.getChannel());
+
+ }
+ } catch (Exception err) {
+ sendErrorMessage()
+ .setDescription("This server does not exist")
+ .send(e.getChannel());
+ }
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/UnbanUserCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/UnbanUserCommand.java
new file mode 100755
index 0000000..708d020
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/UnbanUserCommand.java
@@ -0,0 +1,78 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class UnbanUserCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("unbanuser", "unbu", "ubu", "unbanu");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.UNKNOWN;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ if (args.length != 1) return;
+ args[0] = replaceUserMention(args[0]);
+ int logic=0;
+ if (e.getMember().getRoles().contains(Main.getSheepManager().supporterRole) || Main.getSheepManager().botOwners.contains(e.getAuthor().getId())) {
+ logic=1;
+ } else if (e.getMember().hasPermission(Permission.ADMINISTRATOR)) {
+ logic=2;
+ }
+ try {
+ int finalLogic = logic;
+ Main.getInstance().retrieveUserById(args[0]).queue(user -> {
+ String userName = user.getAsTag();
+ if (finalLogic == 1) {
+ if (getGlobalManager().isGlobalUserBanned(args[0])) {
+ getGlobalManager().unbanUserGlobal(args[0]);
+ sendMessage()
+ .setTitle("Sheepstar Ban")
+ .setDescription("The User `" + userName + "` got unbanned.")
+ .send(e.getChannel());
+ } else {
+ sendErrorMessage()
+ .setDescription("This User is not banned. Ban with `s!banuser `")
+ .send(e.getChannel());
+ }
+ } else if (finalLogic == 2) {
+ if (getGlobalManager().isGuildUserBanned(e.getGuild(), args[0])) {
+ getGlobalManager().unbanUserGuild(e.getGuild(), args[0]);
+ sendMessage()
+ .setTitle("Sheepstar Ban")
+ .setDescription("The User `" + userName + "` got unbanned from the serverchat.")
+ .send(e.getChannel());
+ } else {
+ sendErrorMessage()
+ .setDescription("This User is not banned. Ban with `s!banuser `")
+ .send(e.getChannel());
+ }
+ } else {
+ sendErrorMessage()
+ .setDescription("`You dont have the permission to do this.`")
+ .send(e.getChannel());
+ }
+ });
+ } catch (Exception err) {
+ sendErrorMessage()
+ .setDescription("This user does not exist")
+ .send(e.getChannel());
+ }
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ViewLogCommand.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ViewLogCommand.java
new file mode 100755
index 0000000..cc4dc00
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/commands/ViewLogCommand.java
@@ -0,0 +1,102 @@
+package de.sheepstar.globalWrapper.commands;
+
+import de.sheepstar.globalWrapper.api.SheepPermission;
+import de.sheepstar.globalWrapper.api.SheepstarGuildCommand;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.sql.ResultSet;
+import java.util.Arrays;
+import java.util.List;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 13.12.20
+ ********************************/
+
+public class ViewLogCommand extends SheepstarGuildCommand {
+ @Override
+ public List getAlias() {
+ return Arrays.asList("log", "viewlog", "vl", "l");
+ }
+
+ @Override
+ public SheepPermission getPermission() {
+ return SheepPermission.SUPPORTER;
+ }
+
+ @Override
+ public void executeCommand(String[] args, GuildMessageReceivedEvent e) {
+ if (!(args.length == 3 ||args.length == 2)) {
+ sendErrorMessage()
+ .setDescription("Use s!log ")
+ .send(e.getChannel());
+ return;
+ }
+ if (args[0].toLowerCase().equals("user") && args.length == 3) {
+ args[1] = replaceUserMention(args[1]);
+ String content = "";
+ int count = 0;
+ for (String current : Main.getLogManager().getUserMessages(args[1], Integer.parseInt(args[2]))) {
+ if (count != 0) content += "\n";
+ count++;
+ content += "`"+current+"`";
+ }
+ String finalContent = content;
+ Main.getInstance().retrieveUserById(args[1]).queue(user -> {
+ try {
+ sendMessage()
+ .setTitle("Message user-log ["+user.getAsTag()+"]")
+ .setDescription(finalContent)
+ .send(e.getChannel());
+ } catch (Exception err) {
+ sendErrorMessage()
+ .setDescription("User does not exist!")
+ .send(e.getChannel());
+ }
+
+ });
+ } else if (args[0].toLowerCase().equals("guild") && args.length == 3) {
+ String content = "";
+ int count = 0;
+ for (String current : Main.getLogManager().getServerMessages(args[1], Integer.parseInt(args[2]))) {
+ if (count != 0) content += "\n";
+ count++;
+ content += "`"+current+"`";
+ }
+ sendMessage()
+ .setTitle("Message server-log")
+ .setDescription(content)
+ .send(e.getChannel());
+ } else if (args[0].toLowerCase().equals("search")) {
+ String content = "";
+ String limitLine = "";
+ if (args.length != 3) {
+ limitLine = "";
+ } else {
+ limitLine = " LIMIT " + args[2];
+ }
+ ResultSet rs = MySQL.getResult("SELECT * from log WHERE message REGEXP ? ORDER BY id DESC" + limitLine, args[1].replace("_", " "));
+
+ int count = 0;
+ try {
+ while (rs.next()) {
+ if (count != 0) content += "\n\n";
+ count++;
+ content += "`"+rs.getString("message")+"`\n";
+ content += "*Gesendet von " + rs.getString("senderID") + " vom Server " + rs.getString("guildID") + "*";
+ }
+ } catch (Exception err) {}
+ if (content.length() > 2000) {
+ content = content.substring(0, Math.min(content.length(), 2000)) + "`...`";
+ }
+ content = "`" +count + " Results`\n\n" + content + "\n\n`" +count + " Results`";
+ sendMessage()
+ .setTitle("Message search")
+ .setDescription(content)
+ .send(e.getChannel());
+ }
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/core/Main.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/core/Main.java
new file mode 100755
index 0000000..e27dcd6
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/core/Main.java
@@ -0,0 +1,115 @@
+package de.sheepstar.globalWrapper.core;
+
+
+import de.sheepstar.globalWrapper.api.*;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.api.sql.TableGenerator;
+import de.sheepstar.globalWrapper.commands.*;
+import de.sheepstar.globalWrapper.instance.AutoUpdater;
+import de.sheepstar.globalWrapper.instance.DescUpdater;
+import de.sheepstar.globalWrapper.listeners.RoomReactionListener;
+import de.sheepstar.globalWrapper.listeners.GlobalListener;
+import de.sheepstar.globalWrapper.listeners.StrangerListener;
+import net.dv8tion.jda.api.JDA;
+import net.dv8tion.jda.api.JDABuilder;
+import net.dv8tion.jda.api.requests.GatewayIntent;
+
+import java.util.Random;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 11.12.20
+ ********************************/
+
+public class Main {
+
+ private static JDA jda;
+ private static SheepManager sheepManager;
+ private static GlobalManager globalManager;
+ private static LogManager logManager;
+ private static StrangerManager strangerManager;
+ public static void main(String[] args) throws Exception {
+ sheepManager = new SheepManager().register();
+ if (SheepManager.BETA_INSTANCE) {
+ SheepManager.sendConsoleMessage("Warnung! Beta-Instanz wird verwendet; Der Bot startet in 3 Sekunden. :)");
+ Thread.sleep(3000);
+ }
+ SheepManager.sendConsoleMessage("Bot startet nun...");
+ MySQL.connect();
+ TableGenerator.run();
+ globalManager = new GlobalManager();
+ strangerManager = new StrangerManager();
+ logManager = new LogManager();
+ jda = JDABuilder.createDefault(sheepManager.getToken())
+ .enableIntents(GatewayIntent.GUILD_MEMBERS)
+ .build();
+ ShopItems.register();
+
+ jda.addEventListener(new ExampleCommand());
+ jda.addEventListener(new HelpCommand());
+ jda.addEventListener(new RulesCommand());
+
+ jda.addEventListener(new AddGlobalCommand());
+ jda.addEventListener(new RemoveGlobalCommand());
+ jda.addEventListener(new ClearGlobalCommand());
+
+ jda.addEventListener(new GlobalListener());
+
+ jda.addEventListener(new ShowLanguagesCommand());
+ jda.addEventListener(new ChangeLanguageCommand());
+
+ jda.addEventListener(new ShowRoomsCommand());
+ jda.addEventListener(new ChangeRoomCommand());
+
+ jda.addEventListener(new AddOffenseCommand());
+ jda.addEventListener(new RemoveOffenseCommand());
+
+ jda.addEventListener(new SetPremiumCommand());
+
+ jda.addEventListener(new BanServerCommand());
+ jda.addEventListener(new UnbanServerCommand());
+ jda.addEventListener(new BanUserCommand());
+ jda.addEventListener(new UnbanUserCommand());
+ jda.addEventListener(new ViewLogCommand());
+ jda.addEventListener(new PingCommand());
+ jda.addEventListener(new RoomReactionListener());
+ jda.addEventListener(new AutoUpdateCommand());
+ jda.addEventListener(new AddStrangerCommand());
+ jda.addEventListener(new RemoveStrangerCommand());
+ jda.addEventListener(new SkipConnectionCommand());
+ jda.addEventListener(new StrangerListener());
+ jda.addEventListener(new ShowDesignsCommand());
+ jda.addEventListener(new DesignCommand());
+ jda.addEventListener(new LevelCommand());
+ jda.addEventListener(new LeaderboardCommand());
+ jda.addEventListener(new ShopCommand());
+ jda.addEventListener(new BuyCommand());
+ jda.awaitReady();
+ sheepManager.supporterRole = Main.getInstance().getGuildById("772528034912927756").getRoleById("772528035387539476");
+ Thread autoUpdater = new Thread(new AutoUpdater());
+ autoUpdater.start();
+ Thread descUpdater = new Thread(new DescUpdater());
+ descUpdater.start();
+ SheepManager.sendConsoleMessage("Bot gestartet");
+ }
+
+ public static JDA getInstance() {
+ return jda;
+ }
+
+ public static SheepManager getSheepManager() {
+ return sheepManager;
+ }
+
+ public static GlobalManager getGlobalManager() {
+ return globalManager;
+ }
+
+ public static LogManager getLogManager() {
+ return logManager;
+ }
+
+ public static StrangerManager getStrangerManager() {
+ return strangerManager;
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/instance/AutoUpdater.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/instance/AutoUpdater.java
new file mode 100755
index 0000000..9af18e3
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/instance/AutoUpdater.java
@@ -0,0 +1,29 @@
+package de.sheepstar.globalWrapper.instance;
+
+import de.sheepstar.globalWrapper.api.SheepManager;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.entities.Activity;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 11.12.20
+ ********************************/
+
+public class AutoUpdater extends Thread {
+
+ @Override
+ public void run() {
+ if (SheepManager.BETA_INSTANCE) {
+ Main.getInstance().getPresence().setActivity(Activity.watching("Beta-Instanz! Möglicherweise instabil."));
+ try {Thread.sleep(5000);} catch (Exception err) {}
+ } else {
+ Main.getInstance().getPresence().setActivity(Activity.watching("discord.gg/jbne9JTJtU"));
+ try {Thread.sleep(5000);} catch (Exception err) {}
+ Main.getInstance().getPresence().setActivity(Activity.listening("s!help | sheepstar.xyz"));
+ try {Thread.sleep(20000);} catch (Exception err) {}
+ run();
+ }
+
+
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/instance/DescUpdater.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/instance/DescUpdater.java
new file mode 100755
index 0000000..4729676
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/instance/DescUpdater.java
@@ -0,0 +1,60 @@
+package de.sheepstar.globalWrapper.instance;
+
+import de.sheepstar.globalWrapper.api.GlobalManager;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.TextChannel;
+
+import java.sql.ResultSet;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 17.12.20
+ ********************************/
+
+public class DescUpdater extends Thread {
+
+ @Override
+ public void run() {
+ try { Thread.sleep(600000); } catch (Exception err) {}
+ ResultSet rs = MySQL.getResult("SELECT * FROM server_autoupdate");
+ GlobalManager gm = Main.getGlobalManager();
+ try {
+ while (rs.next()) {
+ try {
+ Guild guild = Main.getInstance().getGuildById(rs.getString("guildID"));
+ TextChannel channel = guild.getTextChannelById(rs.getString("channelID"));
+ ResultSet rsb = MySQL.getResult("SELECT * FROM guilds WHERE guildID=? AND channelID=?", guild.getId(), channel.getId());
+ String currentRoom = "";
+ String currentLanguage = "";
+ try {
+ while (rsb.next()) {
+ currentRoom = rsb.getString("roomID");
+ currentLanguage = rsb.getString("languageCode");
+ }
+ } catch (Exception err) {}
+ if (gm.isRegistered(guild, channel)) {
+ // Run Channel Update Logic
+ DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
+ LocalDateTime ldt = LocalDateTime.now();
+ channel
+ .getManager()
+ .setTopic("Globalchat-Channel » " +
+ gm.getCount(currentLanguage, currentRoom) +
+ " servers are registered in this room." +
+ " (Latest update: "+ ldt.format(dtf) +")"
+ )
+ .queue();
+ } else {
+ MySQL.update("DELETE FROM server_autoupdate WHERE guildID=? AND channelID=?", guild.getId(), channel.getId());
+ }
+ } catch (Exception ignore) {}
+ }
+ } catch (Exception ignore) {}
+ run();
+ }
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/listeners/GlobalListener.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/listeners/GlobalListener.java
new file mode 100755
index 0000000..708e967
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/listeners/GlobalListener.java
@@ -0,0 +1,131 @@
+package de.sheepstar.globalWrapper.listeners;
+
+import de.sheepstar.globalWrapper.api.*;
+import de.sheepstar.globalWrapper.api.messagebuilder.MessageBuilder;
+import de.sheepstar.globalWrapper.api.messagebuilder.MessageType;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.EmbedBuilder;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.TextChannel;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+import net.dv8tion.jda.api.hooks.ListenerAdapter;
+
+import java.awt.*;
+import java.sql.ResultSet;
+import java.time.OffsetDateTime;
+import java.time.ZoneId;
+import java.util.Random;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 12.12.20
+ ********************************/
+
+public class GlobalListener extends ListenerAdapter {
+
+ @Override
+ public void onGuildMessageReceived(GuildMessageReceivedEvent e) {
+ GlobalManager gm = Main.getGlobalManager();
+ LevelManager lm = new LevelManager(e.getGuild());
+ ShopManager sm = new ShopManager(lm);
+
+ // Check if GlobalChat is registered
+ if (!gm.isRegistered(e.getGuild(), e.getChannel())) return;
+
+ // Run validation checks
+ if (!new ValidationCheck().validate(e)) return;
+
+ // Preset LanguageCode & RoomID
+ ResultSet rs1 = MySQL.getResult("SELECT * FROM guilds WHERE guildID=? AND channelID=?", e.getGuild().getId(), e.getChannel().getId());
+ String langcode = "";
+ String roomID = "";
+ try { while (rs1.next()) { langcode = rs1.getString("languageCode");roomID = rs1.getString("roomID"); } } catch (Exception err) {}
+
+ // NSFW Check
+ boolean mustNSFW = roomID.contains("n");
+ if (!e.getChannel().isNSFW() && mustNSFW) {
+ new MessageBuilder(MessageType.RED_MESSAGE)
+ .setDescription("You joined an NSFW Room. Please set this Channel to NSFW or change the Room with `s!rooms`")
+ .send(e.getChannel());
+ return;
+ }
+
+ // Send Message To all Servers
+ sendGlobal(e, langcode, roomID);
+
+ // Increase Level
+
+ int memberCount = e.getGuild().getMemberCount();
+ int extraMultiplier = 1;
+ if (memberCount <= 2500) extraMultiplier = 2;
+ if (memberCount <= 1000) extraMultiplier = 3;
+ if (memberCount <= 10) extraMultiplier = 4;
+
+ int possibility = new Random().nextInt(99);
+ if (possibility == 50) {
+ lm.increase(e.getChannel(), "15");
+ } else {
+ int multiplier = sm.getItemCount("booster");
+ multiplier += 1;
+ lm.increase(e.getChannel(), String.valueOf(new Random().nextInt(5*multiplier*extraMultiplier)));
+ }
+
+ // Insert it to Log
+ gm.insertLog(e.getGuild().getId(), e.getAuthor().getId(), e.getMessage().getContentRaw(), langcode, roomID);
+ }
+
+
+ public void sendGlobal(GuildMessageReceivedEvent e, String langcode, String roomID) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM guilds WHERE languageCode=? AND roomID=?", langcode, roomID);
+ GlobalManager gm = Main.getGlobalManager();
+ try {
+ while (rs.next()) {
+ try {
+ // Preset Server Variables
+ Guild currentGuild = Main.getInstance().getGuildById(rs.getString("guildID"));
+ TextChannel currentChannel = currentGuild.getTextChannelById(rs.getString("channelID"));
+ boolean letItWork = true;
+ if (!currentChannel.isNSFW() && roomID.startsWith("n")) letItWork = false;
+ if (letItWork) {
+ if (gm.getDesign(currentGuild).equals("4")) {
+ currentChannel.sendMessage(
+ "[" + e.getAuthor().getAsTag() + "] " + e.getMessage().getContentRaw()
+ ).queue();
+ } else {
+ EmbedBuilder eb = new EmbedBuilder();
+ String iconUrl = e.getGuild().getIconUrl();
+ if (iconUrl == null) iconUrl = "https://i.giphy.com/media/38pPhtupwYMerEQeBT/source.gif";
+ eb.setThumbnail(iconUrl);
+ eb.setTimestamp(OffsetDateTime.now().atZoneSameInstant(ZoneId.of("Europe/Berlin")));
+ if (roomID.startsWith("n")) {
+ eb.addField(" ", "`NSFW` :underage:", false);
+ } else {
+ if (!(gm.getDesign(currentGuild).equals("2") || gm.getDesign(currentGuild).equals("3"))) {
+ eb.addField(" ", " ", false);
+ }
+ }
+ if (!gm.getDesign(currentGuild).equals("3")) {
+ String links = "[Support Server](https://discord.gg/jbne9JTJtU) ║ [Bot Invite](https://discord.com/api/oauth2/authorize?client_id=772513556116930580&permissions=321536&scope=bot)";
+ eb.addField("Links & Help", links, false);
+ }
+ if (!gm.getDesign(currentGuild).equals("5")) {
+ eb.setFooter("Sent by " + e.getGuild().getName(), iconUrl);
+ } else {
+ eb.setFooter("Sent by " + e.getGuild().getId() + " from " + e.getAuthor().getId(), iconUrl);
+ }
+ if (e.getMessage().getAttachments().size() > 0)
+ eb.setImage(e.getMessage().getAttachments().get(0).getUrl());
+
+ eb.setDescription(e.getMessage().getContentRaw());
+ eb.setAuthor(e.getAuthor().getAsTag(), null, e.getAuthor().getAvatarUrl());
+ eb.setColor(e.getMember().getColor());
+ currentChannel.sendMessage(eb.build()).queue();
+ }
+ }
+ } catch (Exception ignored) {}
+ }
+ } catch (Exception ignored) {}
+ }
+
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/listeners/RoomReactionListener.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/listeners/RoomReactionListener.java
new file mode 100755
index 0000000..7a639d5
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/listeners/RoomReactionListener.java
@@ -0,0 +1,110 @@
+package de.sheepstar.globalWrapper.listeners;
+
+import de.sheepstar.globalWrapper.api.messagebuilder.MessageBuilder;
+import de.sheepstar.globalWrapper.api.messagebuilder.MessageType;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.entities.Emote;
+import net.dv8tion.jda.api.entities.MessageEmbed;
+import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
+import net.dv8tion.jda.api.hooks.ListenerAdapter;
+import org.jetbrains.annotations.NotNull;
+
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 16.12.20
+ ********************************/
+
+public class RoomReactionListener extends ListenerAdapter {
+
+ @Override
+ public void onMessageReactionAdd(@NotNull MessageReactionAddEvent e) {
+ e.getChannel().retrieveMessageById(e.getMessageId()).queue(msg -> {
+ if (e.getUser().isBot()) return;
+ if (!msg.getAuthor().isBot()) return;
+ if (!msg.getAuthor().getName().contains("Sheepstar")) return;
+ if (msg.getEmbeds().size() != 1) return;
+ if (msg.getEmbeds().get(0).getFooter() == null) return;
+ if (!msg.getEmbeds().get(0).getFooter().getText().contains("Change with")) return;
+ HashMap emotes = new HashMap<>();
+ ResultSet rst = MySQL.getResult("SELECT * FROM room_categories");
+ try {
+ while (rst.next()) {
+ emotes.put(rst.getString("reaction"), rst.getString("id"));
+ }
+ } catch (Exception err) { }
+
+ if (e.getReactionEmote().isEmoji()) {
+ if (e.getReactionEmote().getEmoji().equals("⬅️")) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM room_categories");
+ String msgContent = "";
+
+ try { int count = 0;
+ while (rs.next()) {
+ if (count != 0) msgContent += "\n"; count++;
+ msgContent += "`"+rs.getString("name")+"` "+Main.getInstance().getEmotesByName(rs.getString("reaction"), false).get(0).getAsMention();
+ } } catch (Exception err) {}
+
+ MessageEmbed newMsg = new MessageBuilder(MessageType.GREEN_MESSAGE)
+ .setTitle("Sheepstar rooms")
+ .setDescription(msgContent)
+ .setThumbnail(null)
+ .setFooter("Change with s!room ")
+ .get();
+ msg.editMessage(newMsg).queue();
+ msg.removeReaction(e.getReactionEmote().getEmoji(), e.getUser()).queue();
+ return;
+ }
+ }
+ if (!emotes.containsKey(e.getReactionEmote().getName())) return;
+
+ // Prepare Message
+
+ String searchID = emotes.get(e.getReactionEmote().getName());
+
+ ResultSet rsb = MySQL.getResult("SELECT * FROM guilds WHERE guildID=? AND channelID=?", e.getGuild().getId(), e.getChannel().getId());
+ String currentRoom = "";
+ String currentLang = "";
+ try {
+ while (rsb.next()) {
+ currentRoom = rsb.getString("roomID");
+ currentLang = rsb.getString("languageCode");
+ }
+ } catch (Exception err) {}
+ ResultSet rs = MySQL.getResult("SELECT * FROM rooms WHERE categorie=?", searchID);
+ String msgContent = "";
+
+ try {
+ int count = 0;
+ while (rs.next()) {
+ if (count != 0) msgContent += "\n";
+
+ ResultSet rstb = MySQL.getResult("SELECT * FROM guilds WHERE roomID=? AND languageCode=?", rs.getString("code"), currentLang);
+ int roomCount = 0;
+ try {while (rstb.next()) {roomCount++;}} catch (Exception err) {}
+ count++;
+ msgContent += "`[code] - [name] | [mem] Servers`"
+ .replace("[code]", rs.getString("code"))
+ .replace("[name]", rs.getString("name"))
+ .replace("[mem]", String.valueOf(roomCount))
+ + ((rs.getString("code").toLowerCase().equals(currentRoom.toLowerCase())) ? " " + Main.getInstance().getEmotesByName("Sstar_larrow", true)
+ .get(0).getAsMention(): "");
+ }
+ } catch (Exception err) {}
+
+ MessageEmbed newEmbed = new MessageBuilder(MessageType.GREEN_MESSAGE)
+ .setTitle("Sheepstar rooms")
+ .setDescription(msgContent)
+ .setFooter("Change with s!room ")
+ .get();
+ msg.editMessage(newEmbed).queue();
+ msg.removeReaction(e.getReactionEmote().getEmote(), e.getUser()).queue();
+
+ });
+ }
+
+}
diff --git a/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/listeners/StrangerListener.java b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/listeners/StrangerListener.java
new file mode 100755
index 0000000..4bd37b7
--- /dev/null
+++ b/SheepstarGlobal/src/main/java/de/sheepstar/globalWrapper/listeners/StrangerListener.java
@@ -0,0 +1,63 @@
+package de.sheepstar.globalWrapper.listeners;
+
+import de.sheepstar.globalWrapper.api.StrangerManager;
+import de.sheepstar.globalWrapper.api.ValidationCheck;
+import de.sheepstar.globalWrapper.api.sql.MySQL;
+import de.sheepstar.globalWrapper.core.Main;
+import net.dv8tion.jda.api.EmbedBuilder;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.TextChannel;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+import net.dv8tion.jda.api.hooks.ListenerAdapter;
+import org.jetbrains.annotations.NotNull;
+
+import java.sql.ResultSet;
+import java.time.OffsetDateTime;
+import java.time.ZoneId;
+
+/********************************
+ * @author Mathias Wagner
+ * Created 17.12.20
+ ********************************/
+
+public class StrangerListener extends ListenerAdapter {
+
+ @Override
+ public void onGuildMessageReceived(@NotNull GuildMessageReceivedEvent e) {
+ StrangerManager sm = Main.getStrangerManager();
+ if (!sm.isRegistered(e.getGuild(), e.getChannel())) return;
+ if (new ValidationCheck().validate(e)) {
+ sendConnection(e, sm.getConnectID(e.getGuild(), e.getChannel()));
+ }
+ }
+
+ public void sendConnection(GuildMessageReceivedEvent e, String connectID) {
+ ResultSet rs = MySQL.getResult("SELECT * FROM strangers WHERE connectID=?", connectID);
+ try {
+ while (rs.next()) {
+ try {
+ System.out.println(connectID);
+ System.out.println("debug");
+ Guild currentGuild = Main.getInstance().getGuildById(rs.getString("guildID"));
+ TextChannel currentChannel = currentGuild.getTextChannelById(rs.getString("channelID"));
+ EmbedBuilder eb = new EmbedBuilder();
+ String iconUrl = e.getGuild().getIconUrl();
+ if (iconUrl == null) iconUrl = "https://i.giphy.com/media/38pPhtupwYMerEQeBT/source.gif";
+ eb.setThumbnail(iconUrl);
+ eb.setTimestamp(OffsetDateTime.now().atZoneSameInstant(ZoneId.of("Europe/Berlin")));
+ String links = "[Support Server](https://discord.gg/jbne9JTJtU) ║ [Bot Invite](https://discord.com/api/oauth2/authorize?client_id=772513556116930580&permissions=321536&scope=bot)";
+ eb.addField("Links & Help", links, false);
+ eb.setFooter("Sent by " + e.getGuild().getName(), iconUrl);
+ if (e.getMessage().getAttachments().size() > 0) {
+ eb.setImage(e.getMessage().getAttachments().get(0).getUrl());
+ }
+ eb.setDescription(e.getMessage().getContentRaw());
+ eb.setAuthor(e.getAuthor().getAsTag(), null, e.getAuthor().getAvatarUrl());
+ eb.setColor(e.getMember().getColor());
+ currentChannel.sendMessage(eb.build()).queue();
+ } catch (Exception err) {}
+ }
+ } catch (Exception err) {}
+ }
+
+}
diff --git a/SheepstarGlobal/src/main/resources/META-INF/MANIFEST.MF b/SheepstarGlobal/src/main/resources/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..d5c0d8b
--- /dev/null
+++ b/SheepstarGlobal/src/main/resources/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: de.sheepstar.globalWrapper.core.Main
+