diff --git a/client/src/main/java/org/dreamexposure/discal/client/DisCalClient.java b/client/src/main/java/org/dreamexposure/discal/client/DisCalClient.java index bdcb6a77..3b3ae376 100644 --- a/client/src/main/java/org/dreamexposure/discal/client/DisCalClient.java +++ b/client/src/main/java/org/dreamexposure/discal/client/DisCalClient.java @@ -5,7 +5,7 @@ import org.dreamexposure.discal.client.listeners.discord.MessageCreateListener; import org.dreamexposure.discal.client.listeners.discord.ReadyEventListener; import org.dreamexposure.discal.client.listeners.discord.RoleDeleteListener; import org.dreamexposure.discal.client.message.Messages; -import org.dreamexposure.discal.client.module.announcement.AnnouncementThreader; +import org.dreamexposure.discal.client.module.announcement.AnnouncementThread; import org.dreamexposure.discal.client.module.command.AddCalendarCommand; import org.dreamexposure.discal.client.module.command.AnnouncementCommand; import org.dreamexposure.discal.client.module.command.CalendarCommand; @@ -32,6 +32,7 @@ import org.springframework.boot.autoconfigure.session.SessionAutoConfiguration; import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.time.Duration; import java.util.Properties; import discord4j.core.DiscordClientBuilder; @@ -51,6 +52,7 @@ import discord4j.store.jdk.JdkStoreService; import discord4j.store.redis.RedisStoreService; import io.lettuce.core.RedisClient; import io.lettuce.core.RedisURI; +import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @SpringBootApplication(exclude = SessionAutoConfiguration.class) @@ -96,8 +98,8 @@ public class DisCalClient { } catch (Exception e) { e.printStackTrace(); LogFeed.log(LogObject - .forException("Spring Error", "by 'PANIC! at the backend coms!'", e, - DisCalClient.class)); + .forException("Spring Error", "by 'PANIC! at the backend coms!'", e, + DisCalClient.class)); } } @@ -113,59 +115,62 @@ public class DisCalClient { //Login DiscordClientBuilder.create(BotSettings.TOKEN.get()) - .build().gateway() - .setSharding(getStrategy()) - .setStoreService(getStores()) - .setInitialStatus(shard -> Presence.online(Activity.playing("Booting Up!"))) - .withGateway(client -> { - DisCalClient.client = client; + .build().gateway() + .setSharding(getStrategy()) + .setStoreService(getStores()) + .setInitialStatus(shard -> Presence.online(Activity.playing("Booting Up!"))) + .withGateway(client -> { + DisCalClient.client = client; - //Register listeners - Mono onReady = client.on(ReadyEvent.class) - .flatMap(ReadyEventListener::handle) - .then(); + //Register listeners + Mono onReady = client.on(ReadyEvent.class) + .flatMap(ReadyEventListener::handle) + .then(); - Mono onTextChannelDelete = client.on(TextChannelDeleteEvent.class) - .flatMap(ChannelDeleteListener::handle) - .then(); + Mono onTextChannelDelete = client.on(TextChannelDeleteEvent.class) + .flatMap(ChannelDeleteListener::handle) + .then(); - Mono onRoleDelete = client.on(RoleDeleteEvent.class) - .flatMap(RoleDeleteListener::handle) - .then(); + Mono onRoleDelete = client.on(RoleDeleteEvent.class) + .flatMap(RoleDeleteListener::handle) + .then(); - Mono onCommand = client.on(MessageCreateEvent.class) - .flatMap(MessageCreateListener::handle) - .then(); + Mono onCommand = client.on(MessageCreateEvent.class) + .flatMap(MessageCreateListener::handle) + .then(); - Mono startAnnouncement = client.on(ReadyEvent.class) - .next() - .flatMap(ignore -> AnnouncementThreader.getThreader().init()); + Mono startAnnouncement = client.on(ReadyEvent.class) + .next() + .flatMap(ignore -> Flux.interval(Duration.ofMinutes(5)) + .onBackpressureBuffer() + .flatMap(i -> new AnnouncementThread().run()) + .then()); - return Mono.when(onReady, onTextChannelDelete, onRoleDelete, onCommand, startAnnouncement); - }).block(); + return Mono.when(onReady, onTextChannelDelete, onRoleDelete, onCommand, startAnnouncement); + }).block(); } private static ShardingStrategy getStrategy() { return ShardingStrategy.builder() - .count(Integer.parseInt(BotSettings.SHARD_COUNT.get())) - .indices(Integer.parseInt(BotSettings.SHARD_INDEX.get())) - .build(); + .count(Integer.parseInt(BotSettings.SHARD_COUNT.get())) + .indices(Integer.parseInt(BotSettings.SHARD_INDEX.get())) + .build(); } private static StoreService getStores() { if (BotSettings.USE_REDIS_STORES.get().equalsIgnoreCase("true")) { RedisURI uri = RedisURI.Builder - .redis(BotSettings.REDIS_HOSTNAME.get(), Integer.parseInt(BotSettings.REDIS_PORT.get())) - .withPassword(BotSettings.REDIS_PASSWORD.get()) - .build(); + .redis(BotSettings.REDIS_HOSTNAME.get(), Integer.parseInt(BotSettings.REDIS_PORT.get())) + .withPassword(BotSettings.REDIS_PASSWORD.get()) + .build(); RedisStoreService rss = new RedisStoreService.Builder() - .redisClient(RedisClient.create(uri)) - .build(); + .redisClient(RedisClient.create(uri)) + .build(); return MappingStoreService.create() - .setMappings(rss, GuildData.class, MessageData.class) - .setFallback(new JdkStoreService()); + .setMappings(rss, GuildData.class, MessageData.class) + .setFallback(new JdkStoreService()); } else { return new JdkStoreService(); } diff --git a/client/src/main/java/org/dreamexposure/discal/client/module/announcement/AnnouncementThread.java b/client/src/main/java/org/dreamexposure/discal/client/module/announcement/AnnouncementThread.java index 2b836b2e..43cd121c 100644 --- a/client/src/main/java/org/dreamexposure/discal/client/module/announcement/AnnouncementThread.java +++ b/client/src/main/java/org/dreamexposure/discal/client/module/announcement/AnnouncementThread.java @@ -26,7 +26,6 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.function.TupleUtils; -@SuppressWarnings({"WeakerAccess", "Duplicates"}) public class AnnouncementThread { private final Mono discalService; diff --git a/client/src/main/java/org/dreamexposure/discal/client/module/announcement/AnnouncementThreader.java b/client/src/main/java/org/dreamexposure/discal/client/module/announcement/AnnouncementThreader.java deleted file mode 100644 index 3650fdd9..00000000 --- a/client/src/main/java/org/dreamexposure/discal/client/module/announcement/AnnouncementThreader.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.dreamexposure.discal.client.module.announcement; - -import java.time.Duration; - -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -public class AnnouncementThreader { - static { - instance = new AnnouncementThreader(); - } - - private final static AnnouncementThreader instance; - - private AnnouncementThreader() { - } - - public static AnnouncementThreader getThreader() { - return instance; - } - - public Mono init() { - return Flux.interval(Duration.ofMinutes(5)) - .onBackpressureBuffer() - .flatMap(i -> new AnnouncementThread().run()) - .then(); - } -} \ No newline at end of file