mirror of
https://github.com/DreamExposure/DisCal-Discord-Bot.git
synced 2026-02-11 05:58:26 -06:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user