Make event listeners reactive among other small fixes

Set r2dbc-mysql logging to info instead of debug as it is no longer
needed.
This commit is contained in:
NovaFox161
2020-04-13 17:36:57 -05:00
parent 99a65c5388
commit c41230f62c
6 changed files with 49 additions and 66 deletions

View File

@@ -109,24 +109,22 @@ public class DisCalClient {
DisCalClient.client = client;
//Register listeners
client.on(ReadyEvent.class).subscribe(ReadyEventListener::handle);
client.on(TextChannelDeleteEvent.class).subscribe(ChannelDeleteListener::handle);
client.on(RoleDeleteEvent.class).subscribe(RoleDeleteListener::handle);
/*
Mono<Void> onReady = client.getEventDispatcher()
.on(ReadyEvent.class)
.doOnNext(ReadyEventListener::handle)
Mono<Void> onReady = client.on(ReadyEvent.class)
.flatMap(ReadyEventListener::handle)
.then();
Mono<Void> onTextChannelDelete = client.getEventDispatcher()
.on(TextChannelDeleteEvent.class)
.doOnNext(ChannelDeleteListener::handle)
Mono<Void> onTextChannelDelete = client.on(TextChannelDeleteEvent.class)
.flatMap(ChannelDeleteListener::handle)
.then();
Mono<Void> onRoleDelete = client.getEventDispatcher()
.on(RoleDeleteEvent.class)
.doOnNext(RoleDeleteListener::handle)
Mono<Void> onRoleDelete = client.on(RoleDeleteEvent.class)
.flatMap(RoleDeleteListener::handle)
.then();
*/
@@ -144,11 +142,7 @@ public class DisCalClient {
executor.registerCommand(new AnnouncementCommand());
executor.registerCommand(new DevCommand());
/*
return Mono.when(onReady, onTextChannelDelete, onRoleDelete)
.doOnSubscribe(s -> LogFeed.log(LogObject.forDebug("Chain execution")))
.doOnError(e -> LogFeed.log(LogObject.forException("Chain error", e, DisCalClient.class)));
*/
//return Mono.when(onReady, onTextChannelDelete, onRoleDelete);
return client.onDisconnect();
}).block();
}
@@ -180,6 +174,7 @@ public class DisCalClient {
}
//Public stuffs
@Deprecated
public static GatewayDiscordClient getClient() {
return client;
}

View File

@@ -7,19 +7,13 @@ import discord4j.rest.util.Snowflake;
import reactor.core.publisher.Mono;
public class ChannelDeleteListener {
public static void handle(TextChannelDeleteEvent event) {
public static Mono<Void> handle(TextChannelDeleteEvent event) {
//Check if deleted channel is discal channel...
DatabaseManager.getSettings(event.getChannel().getGuildId()).flatMap(settings -> {
if (settings.getDiscalChannel().equalsIgnoreCase("all"))
return Mono.empty();
if (event.getChannel().getId().equals(Snowflake.of(settings.getDiscalChannel()))) {
settings.setDiscalChannel("all");
return DatabaseManager.updateSettings(settings);
}
return Mono.empty();
}).subscribe();
return DatabaseManager.getSettings(event.getChannel().getGuildId())
.filter(settings -> !settings.getDiscalChannel().equalsIgnoreCase("all"))
.filter(settings -> event.getChannel().getId().equals(Snowflake.of(settings.getDiscalChannel())))
.doOnNext(settings -> settings.setDiscalChannel("all"))
.flatMap(DatabaseManager::updateSettings)
.then();
}
}

View File

@@ -1,6 +1,5 @@
package org.dreamexposure.discal.client.listeners.discord;
import org.dreamexposure.discal.client.DisCalClient;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.logger.LogFeed;
import org.dreamexposure.discal.core.logger.object.LogObject;
@@ -8,6 +7,7 @@ import org.dreamexposure.discal.core.utils.GlobalConst;
import discord4j.core.event.domain.lifecycle.ReadyEvent;
import discord4j.rest.util.Image;
import reactor.core.publisher.Mono;
/**
* @author NovaFox161
@@ -19,21 +19,19 @@ import discord4j.rest.util.Image;
*/
@SuppressWarnings({"OptionalGetWithoutIsPresent", "ConstantConditions"})
public class ReadyEventListener {
public static void handle(ReadyEvent event) {
try {
GlobalConst.iconUrl = DisCalClient.getClient().getApplicationInfo()
.map(info -> info.getIconUrl(Image.Format.PNG)).block().get();
MessageManager.reloadLangs();
LogFeed.log(LogObject
.forDebug("[ReadyEvent]", "Connection success! Session ID: " + event.getSessionId()));
LogFeed.log(LogObject.forStatus("Ready Event Success!"));
} catch (Exception e) {
LogFeed.log(LogObject.forException("BAD!!!!!1!!", e, ReadyEventListener.class));
}
public static Mono<Void> handle(ReadyEvent event) {
return event.getClient().getApplicationInfo()
.doOnNext(info -> GlobalConst.iconUrl = info.getIconUrl(Image.Format.PNG).get())
.doOnNext(info -> MessageManager.reloadLangs())
.doOnNext(info ->
LogFeed.log(LogObject.forDebug("[ReadyEvent]",
"Connection success! Session ID: " + event.getSessionId()))
)
.doOnNext(info -> LogFeed.log(LogObject.forStatus("Ready Event Success!")))
.onErrorResume(e -> {
LogFeed.log(LogObject.forException("BAD!!!!!1!!", e, ReadyEventListener.class));
return Mono.empty();
})
.then();
}
}

View File

@@ -7,17 +7,12 @@ import discord4j.rest.util.Snowflake;
import reactor.core.publisher.Mono;
public class RoleDeleteListener {
public static void handle(RoleDeleteEvent event) {
DatabaseManager.getSettings(event.getGuildId()).flatMap(settings -> {
if (settings.getControlRole().equalsIgnoreCase("everyone"))
return Mono.empty();
if (event.getRoleId().equals(Snowflake.of(settings.getControlRole()))) {
settings.setControlRole("everyone");
return DatabaseManager.updateSettings(settings);
}
return Mono.empty();
}).subscribe();
public static Mono<Void> handle(RoleDeleteEvent event) {
return DatabaseManager.getSettings(event.getGuildId())
.filter(settings -> !settings.getControlRole().equalsIgnoreCase("everyone"))
.filter(settings -> event.getRoleId().equals(Snowflake.of(settings.getControlRole())))
.doOnNext(settings -> settings.setControlRole("everyone"))
.flatMap(DatabaseManager::updateSettings)
.then();
}
}

View File

@@ -60,7 +60,7 @@ public class KeepAliveHandler {
.header("Content-Type", "application/json")
.build();
client.newCall(request).execute();
client.newCall(request).execute().close();
} catch (Exception e) {
LogFeed.log(LogObject
.forException("[Heart Beat]", "Failed to send keep-alive", e,

View File

@@ -1,14 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<logger name="org.springframework.web" level="INFO"/>
<logger name="io.netty" level="INFO"/>
<logger name="reactor" level="INFO"/>
<logger name="proxy" level="info"/>
<logger name="reactor.retry" level="DEBUG"/>
<logger name="discord4j.core" level="DEBUG"/>
<logger name="discord4j.gateway" level="INFO"/>
<logger name="discord4j.gateway.client" level="DEBUG"/>
<logger name="io.lettuce" level="INFO"/>
<logger name="org.springframework.web" level="INFO" />
<logger name="io.netty" level="INFO" />
<logger name="reactor" level="INFO" />
<logger name="proxy" level="INFO" />
<logger name="reactor.retry" level="DEBUG" />
<logger name="discord4j.core" level="DEBUG" />
<logger name="discord4j.gateway" level="INFO" />
<logger name="discord4j.gateway.client" level="DEBUG" />
<logger name="io.lettuce" level="INFO" />
<logger name="dev.miku.r2dbc.mysql" level="INFO" />
<turboFilter class="org.dreamexposure.discal.core.filter.GatewayEventFilter">
<Exclude>PRESENCE_UPDATE,GUILD_CREATE,GUILD_MEMBERS_CHUNK</Exclude>