diff --git a/lists/referral_domains.txt b/lists/referral_domains.txt
index 2ed804a..bdf2b44 100644
--- a/lists/referral_domains.txt
+++ b/lists/referral_domains.txt
@@ -89,9 +89,15 @@
makeprogress.ga
pointsprizes.com
selly.gg
+shoppy.gg
weeklyjob.online
wn.nr
+// NSFW Spam Sites
+nakedphotos.club
+privatepage.vip
+viewc.site
+
// Coin Miners
baymack.com
btconline.io
@@ -103,6 +109,8 @@
// Scams
amazingsexdating.com
easter-event.com
+fortnite.cards
+fortnite.events
fortnite-christmas.com
fortnite-gifts.com
fortnite-giveaway.com
diff --git a/pom.xml b/pom.xml
index fe17719..4dcac6d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,18 +18,13 @@
jcenter-bintray
http://jcenter.bintray.com
-
- sonatype
- sonatype-snapshots
- https://oss.sonatype.org/content/repositories/snapshots/
-
net.dv8tion
JDA
- 3.8.2_459
+ 3.8.3_463
com.jagrosh
@@ -40,7 +35,7 @@
com.jagrosh
EasySQL
- 0.2
+ 0.3
ch.qos.logback
@@ -48,9 +43,14 @@
1.2.3
+ com.typesafe
+ config
+ 1.3.2
+
+
com.jagrosh
Vortex-Pro
- 0.1
+ 0.2
diff --git a/src/main/java/com/jagrosh/vortex/Vortex.java b/src/main/java/com/jagrosh/vortex/Vortex.java
index 1fc0f2f..38591d1 100644
--- a/src/main/java/com/jagrosh/vortex/Vortex.java
+++ b/src/main/java/com/jagrosh/vortex/Vortex.java
@@ -42,6 +42,9 @@
import com.jagrosh.vortex.logging.TextUploader;
import com.jagrosh.vortex.utils.BlockingSessionController;
import com.jagrosh.vortex.utils.FormatUtil;
+import com.jagrosh.vortex.utils.OtherUtil;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
import java.util.EnumSet;
import java.util.concurrent.TimeUnit;
import net.dv8tion.jda.bot.sharding.DefaultShardManagerBuilder;
@@ -72,36 +75,22 @@
public Vortex() throws Exception
{
- /**
- * Tokens:
- * 0 - bot token
- * 1 - bots.discord.pw token
- * 2 - other token 1 (unused)
- * 3 - other token 2 (unused)
- * 4 - database location
- * 5 - database username
- * 6 - database password
- * 7 - log webhook url
- * 8 - guild id : category id
- * 9 - number of shards
- * 10 - url resolver url
- * 11 - url resolver secret
- */
- List tokens = Files.readAllLines(Paths.get("config.txt"));
+ System.setProperty("config.file", System.getProperty("config.file", "application.conf"));
+ Config config = ConfigFactory.load();
waiter = new EventWaiter(Executors.newSingleThreadScheduledExecutor(), false);
threadpool = Executors.newScheduledThreadPool(50);
- database = new Database(tokens.get(4), tokens.get(5), tokens.get(6));
- String[] split = tokens.get(8).split(":");
- uploader = new TextUploader(this, Long.parseLong(split[0].trim()), Long.parseLong(split[1].trim()));
+ database = new Database(config.getString("database.host"),
+ config.getString("database.username"),
+ config.getString("database.password"));
+ uploader = new TextUploader(this, config.getLong("uploader.guild"), config.getLong("uploader.category"));
modlog = new ModLogger(this);
basiclog = new BasicLogger(this);
messages = new MessageCache();
- logwebhook = new WebhookClientBuilder(tokens.get(7)).build();
- automod = new AutoMod(this, tokens);
+ logwebhook = new WebhookClientBuilder(config.getString("webhook-url")).build();
+ automod = new AutoMod(this, config.getString("url-resolver.url"), config.getString("url-resolver.secret"));
strikehandler = new StrikeHandler(this);
CommandClient client = new CommandClientBuilder()
.setPrefix(Constants.PREFIX)
- //.setGame(Game.watching("Type "+Constants.PREFIX+"help"))
.setGame(Game.playing(Constants.Wiki.SHORT_WIKI))
.setOwnerId(Constants.OWNER_ID)
.setServerInvite(Constants.SERVER_INVITE)
@@ -111,9 +100,8 @@
.setListener(new CommandExceptionListener())
.setScheduleExecutor(threadpool)
.setShutdownAutomatically(false)
- .addCommands(// General
- //new AboutCommand(Color.CYAN, "and I'm here to keep your Discord server safe and make moderating easy!",
- // new String[]{"Moderation commands","Configurable automoderation","Very easy setup"},Constants.PERMISSIONS),
+ .addCommands(
+ // General
new AboutCmd(),
new InviteCmd(),
new PingCommand(),
@@ -174,8 +162,8 @@
// Owner
new EvalCmd(this),
new DebugCmd(this),
- new ReloadCmd(this),
- new TransferCmd(this)
+ new ReloadCmd(this)
+ //new TransferCmd(this)
)
.setHelpConsumer(event -> event.replyInDm(FormatUtil.formatHelp(event, this), m ->
{
@@ -185,13 +173,12 @@
event.getMessage().addReaction(Constants.HELP_REACTION).queue(s->{}, f->{});
} catch(PermissionException ignore) {}
}, t -> event.replyWarning("Help cannot be sent because you are blocking Direct Messages.")))
- .setDiscordBotsKey(tokens.get(1))
- //.setCarbonitexKey(tokens.get(2))
- //.setDiscordBotListKey(tokens.get(3))
+ .setDiscordBotsKey(config.getString("listing.discord-bots"))
+ //.setCarbonitexKey(config.getString("listing.carbon"))
.build();
shards = new DefaultShardManagerBuilder()
- .setShardsTotal(Integer.parseInt(tokens.get(9)))
- .setToken(tokens.get(0))
+ .setShardsTotal(config.getInt("shards-total"))
+ .setToken(config.getString("bot-token"))
.addEventListeners(new Listener(this), client, waiter)
.setStatus(OnlineStatus.DO_NOT_DISTURB)
.setGame(Game.playing("loading..."))
@@ -208,6 +195,8 @@
threadpool.scheduleWithFixedDelay(() -> System.gc(), 12, 6, TimeUnit.HOURS);
}
+
+ // Getters
public EventWaiter getEventWaiter()
{
return waiter;
@@ -263,6 +252,8 @@
return strikehandler;
}
+
+ // Global methods
public void cleanPremium()
{
database.premium.cleanPremiumList().forEach((gid) ->
@@ -279,7 +270,7 @@
if(!g.isAvailable())
return false;
int botcount = (int)g.getMemberCache().stream().filter(m -> m.getUser().isBot()).count();
- if(g.getMemberCache().size()-botcount<15 || (botcount>20 && ((double)botcount/g.getMemberCache().size())>0.65))
+ if(g.getMemberCache().size()-botcount<15 || (botcount>20 && ((double)botcount/g.getMemberCache().size())>0.5))
{
if(database.settings.hasSettings(g))
return false;
@@ -288,9 +279,17 @@
return true;
}
return false;
- }).forEach(g -> g.leave().queue());
+ }).forEach(g ->
+ {
+ OtherUtil.safeDM(g.getOwner()==null ? null : g.getOwner().getUser(), Constants.ERROR + " Sorry, your server **"
+ + g.getName() + "** does not meet the minimum requirements for using Vortex. You can find the requirements "
+ + "here: <" + Constants.Wiki.START + ">. \n\n" + Constants.WARNING + "You may want to consider using a "
+ + "different bot that is designed for servers like yours. You can find a public list of bots here: "
+ + ".", true, () -> g.leave().queue());
+ });
}
+
/**
* @param args the command line arguments
* @throws java.lang.Exception
diff --git a/src/main/java/com/jagrosh/vortex/automod/AutoMod.java b/src/main/java/com/jagrosh/vortex/automod/AutoMod.java
index be1d0ad..ad1154c 100644
--- a/src/main/java/com/jagrosh/vortex/automod/AutoMod.java
+++ b/src/main/java/com/jagrosh/vortex/automod/AutoMod.java
@@ -70,10 +70,10 @@
private final FixedCache spams = new FixedCache<>(3000);
private final HashMap latestGuildJoin = new HashMap<>();
- public AutoMod(Vortex vortex, List config)
+ public AutoMod(Vortex vortex, String url, String secret)
{
this.vortex = vortex;
- urlResolver = new URLResolver(config.get(10), config.get(11));
+ urlResolver = new URLResolver(url, secret);
loadCopypastas();
loadReferralDomains();
}
diff --git a/src/main/java/com/jagrosh/vortex/database/managers/GuildSettingsDataManager.java b/src/main/java/com/jagrosh/vortex/database/managers/GuildSettingsDataManager.java
index f7e2dad..a5ab372 100644
--- a/src/main/java/com/jagrosh/vortex/database/managers/GuildSettingsDataManager.java
+++ b/src/main/java/com/jagrosh/vortex/database/managers/GuildSettingsDataManager.java
@@ -26,6 +26,7 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.ZoneId;
+import java.time.zone.ZoneRulesException;
import java.util.Collection;
import java.util.Collections;
import net.dv8tion.jda.core.entities.Guild;
@@ -99,7 +100,7 @@
+ "\nVoice Log: "+(voicelog==null ? "None" : voicelog.getAsMention())
+ "\nAvatar Log: "+(avylog==null ? "None" : avylog.getAsMention())
+ "\nServer Log: "+(serverlog==null ? "None" : serverlog.getAsMention())
- + "\nTZone: **"+settings.timezone+"**\n\u200B", true);
+ + "\nTimezone: **"+settings.timezone+"**\n\u200B", true);
}
public boolean hasSettings(Guild guild)
@@ -358,7 +359,18 @@
this.avatarlog = AVATARLOG_ID.getValue(rs);
this.prefix = PREFIX.getValue(rs);
String str = TIMEZONE.getValue(rs);
- this.timezone = str==null ? DEFAULT_TIMEZONE : ZoneId.of(str);
+ ZoneId zid;
+ if(str == null)
+ zid = DEFAULT_TIMEZONE;
+ else try
+ {
+ zid = ZoneId.of(str);
+ }
+ catch(ZoneRulesException ex)
+ {
+ zid = DEFAULT_TIMEZONE;
+ }
+ this.timezone = zid;
this.raidMode = RAIDMODE.getValue(rs);
}
diff --git a/src/main/java/com/jagrosh/vortex/logging/ModLogger.java b/src/main/java/com/jagrosh/vortex/logging/ModLogger.java
index 1a7ddaa..7b1b794 100644
--- a/src/main/java/com/jagrosh/vortex/logging/ModLogger.java
+++ b/src/main/java/com/jagrosh/vortex/logging/ModLogger.java
@@ -25,7 +25,6 @@
import com.jagrosh.vortex.utils.LogUtil.ParsedAuditReason;
import java.time.OffsetDateTime;
import java.time.ZoneId;
-import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -124,7 +123,7 @@
}
if(m==null)
return num==-1 ? -4 : -3;
- m.editMessage(m.getContentRaw().replaceAll("(?is)\n`\\[ Reason \\]` .+", "\n`[ Reason ]` "+reason)).queue();
+ m.editMessage(m.getContentRaw().replaceAll("(?is)\n`\\[ Reason \\]` .+", "\n`[ Reason ]` "+FormatUtil.filterEveryone(reason))).queue();
return thiscase;
}
diff --git a/src/main/java/com/jagrosh/vortex/utils/BlockingSessionController.java b/src/main/java/com/jagrosh/vortex/utils/BlockingSessionController.java
index 332b30c..8fb5d9a 100644
--- a/src/main/java/com/jagrosh/vortex/utils/BlockingSessionController.java
+++ b/src/main/java/com/jagrosh/vortex/utils/BlockingSessionController.java
@@ -25,7 +25,7 @@
*/
public class BlockingSessionController extends SessionControllerAdapter
{
- private final int MAX_DELAY = 30*1000;
+ private final int MAX_DELAY = 60*1000; // 1 minute
@Override
protected void runWorker()
diff --git a/src/main/java/com/jagrosh/vortex/utils/FormatUtil.java b/src/main/java/com/jagrosh/vortex/utils/FormatUtil.java
index f6230c8..e8344c0 100644
--- a/src/main/java/com/jagrosh/vortex/utils/FormatUtil.java
+++ b/src/main/java/com/jagrosh/vortex/utils/FormatUtil.java
@@ -172,7 +172,7 @@
builder.append("**").append(years).append("** years, ");
timeseconds = timeseconds % (60*60*24*365);
}
- int weeks = (int)(timeseconds / (60*60*24*365));
+ int weeks = (int)(timeseconds / (60*60*24*7));
if(weeks>0)
{
builder.append("**").append(weeks).append("** weeks, ");
@@ -215,7 +215,7 @@
builder.append("**").append(years).append("**y ");
timeseconds = timeseconds % (60*60*24*365);
}
- int weeks = (int)(timeseconds / (60*60*24*365));
+ int weeks = (int)(timeseconds / (60*60*24*7));
if(weeks>0)
{
builder.append("**").append(weeks).append("**w ");
diff --git a/src/main/java/com/jagrosh/vortex/utils/OtherUtil.java b/src/main/java/com/jagrosh/vortex/utils/OtherUtil.java
index 99a86ab..fb4ca14 100644
--- a/src/main/java/com/jagrosh/vortex/utils/OtherUtil.java
+++ b/src/main/java/com/jagrosh/vortex/utils/OtherUtil.java
@@ -38,7 +38,7 @@
public final static char[] DEHOIST_ORIGINAL = {'!', '"', '#', '$', '%',
'&', '\'', '(', ')', '*', '+', ',', '-', '.', '/'};
public final static char[] DEHOIST_REPLACEMENTS = {'\u01C3', '\u201C', '\u2D4C', '\uFF04', '\u2105', // visually
- '\u214B', '\u2018', '\u2768', '\u2769', '\u2217', '\u2722', '\u201A', '\u2013', '\uFBB3', '\u2044'}; // similar
+ '\u214B', '\u2018', '\u2768', '\u2769', '\u2217', '\u2722', '\u201A', '\u2013', '\u2024', '\u2044'}; // similar
public final static String DEHOIST_JOINED = "`"+FormatUtil.join("`, `", DEHOIST_ORIGINAL)+"`";
public final static boolean dehoist(Member m, char symbol)
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
index 4bc619a..0037198 100644
--- a/src/main/resources/logback.xml
+++ b/src/main/resources/logback.xml
@@ -14,20 +14,26 @@
* limitations under the License.
-->
-
-
-
+
+
+
+
+ logs/log.%d{yyyy-MM-dd}.txt
+
+
+ 30
+ 1GB
+
-
-
+
+
%nopex[%d{HH:mm:ss}] [%level] [%logger{0}]: %msg%n%ex
-
+
-
diff --git a/src/main/resources/reference.conf b/src/main/resources/reference.conf
new file mode 100644
index 0000000..fece72e
--- /dev/null
+++ b/src/main/resources/reference.conf
@@ -0,0 +1,23 @@
+bot-token = ""
+shards-total = 0
+webhook-url = ""
+
+database {
+ host = ""
+ username = ""
+ password = ""
+}
+
+listing {
+ discord-bots = ""
+}
+
+uploader {
+ guild = 0
+ category = 0
+}
+
+url-resolver {
+ url = ""
+ secret = ""
+}
\ No newline at end of file