5050import net .essentialsx .discord .util .ConsoleInjector ;
5151import net .essentialsx .discord .util .DiscordUtil ;
5252import net .essentialsx .discord .util .MessageUtil ;
53- import net .essentialsx .discord .util .WrappedWebhookClient ;
53+ import net .essentialsx .discord .util .WebhookDispatcher ;
5454import org .bukkit .Bukkit ;
5555import org .bukkit .entity .Player ;
5656import org .bukkit .event .HandlerList ;
@@ -84,11 +84,11 @@ public class JDADiscordService implements DiscordService, IEssentialsModule {
8484 private JDA jda ;
8585 private Guild guild ;
8686 private TextChannel primaryChannel ;
87- private WrappedWebhookClient consoleWebhook ;
87+ private WebhookDispatcher consoleWebhook ;
8888 private String lastConsoleId ;
8989 private final Map <String , MessageType > registeredTypes = new HashMap <>();
9090 private final Map <MessageType , String > typeToChannelId = new HashMap <>();
91- private final Map <String , WrappedWebhookClient > channelIdToWebhook = new HashMap <>();
91+ private final Map <String , WebhookDispatcher > channelIdToWebhook = new HashMap <>();
9292 private ConsoleInjector injector ;
9393 private DiscordCommandDispatcher commandDispatcher ;
9494 private InteractionControllerImpl interactionController ;
@@ -145,11 +145,11 @@ public void sendMessage(DiscordMessageEvent event, String message, boolean group
145145
146146 final String webhookChannelId = typeToChannelId .get (event .getType ());
147147 if (webhookChannelId != null ) {
148- final WrappedWebhookClient client = channelIdToWebhook .get (webhookChannelId );
149- if (client != null ) {
148+ final WebhookDispatcher dispatcher = channelIdToWebhook .get (webhookChannelId );
149+ if (dispatcher != null ) {
150150 final String avatarUrl = event .getAvatarUrl () != null ? event .getAvatarUrl () : jda .getSelfUser ().getAvatarUrl ();
151151 final String name = event .getName () != null ? event .getName () : guild .getSelfMember ().getEffectiveName ();
152- client .send (getWebhookMessage (strippedContent , avatarUrl , name , groupMentions ));
152+ dispatcher .send (getWebhookMessage (strippedContent , avatarUrl , name , groupMentions ));
153153 return ;
154154 }
155155 }
@@ -160,7 +160,7 @@ public void sendMessage(DiscordMessageEvent event, String message, boolean group
160160 }
161161 channel .sendMessage (strippedContent )
162162 .setAllowedMentions (groupMentions ? null : DiscordUtil .NO_GROUP_MENTIONS )
163- .queue ();
163+ .queue (null , error -> logger . log ( Level . WARNING , "Failed to send message to channel " + channel . getName (), error ) );
164164 }
165165
166166 public void startup () throws LoginException , InterruptedException {
@@ -229,7 +229,7 @@ public void startup() throws LoginException, InterruptedException {
229229 }
230230
231231 // Load emotes into cache, JDA will handle updates from here on out.
232- guild .retrieveEmojis ().queue ();
232+ guild .retrieveEmojis ().queue (null , error -> logger . log ( Level . WARNING , "Failed to retrieve emojis from guild" , error ) );
233233
234234 updatePrimaryChannel ();
235235
@@ -390,8 +390,8 @@ public void updatePresence() {
390390
391391 public void updateTypesRelay () {
392392 if (!getSettings ().isShowAvatar () && !getSettings ().isCustomBotName ()) {
393- for (WrappedWebhookClient webhook : channelIdToWebhook .values ()) {
394- webhook .close ();
393+ for (WebhookDispatcher dispatcher : channelIdToWebhook .values ()) {
394+ dispatcher .close ();
395395 }
396396 typeToChannelId .clear ();
397397 channelIdToWebhook .clear ();
@@ -410,14 +410,14 @@ public void updateTypesRelay() {
410410
411411 final Webhook webhook = DiscordUtil .getOrCreateWebhook (channel , DiscordUtil .ADVANCED_RELAY_NAME ).join ();
412412 if (webhook == null ) {
413- final WrappedWebhookClient current = channelIdToWebhook .remove (channel .getId ());
413+ final WebhookDispatcher current = channelIdToWebhook .remove (channel .getId ());
414414 if (current != null ) {
415415 current .close ();
416416 }
417417 continue ;
418418 }
419419 typeToChannelId .put (type , channel .getId ());
420- channelIdToWebhook .put (channel .getId (), DiscordUtil .getWebhookClient (webhook .getIdLong (), webhook .getToken (), jda .getHttpClient ()));
420+ channelIdToWebhook .put (channel .getId (), new WebhookDispatcher ( DiscordUtil .getWebhookClient (webhook .getIdLong (), webhook .getToken (), jda .getHttpClient () )));
421421 }
422422 }
423423
@@ -471,7 +471,7 @@ public void updateConsoleRelay() {
471471 }
472472
473473 shutdownConsoleRelay (false );
474- consoleWebhook = DiscordUtil .getWebhookClient (webhookId , webhookToken , jda .getHttpClient ());
474+ consoleWebhook = new WebhookDispatcher ( DiscordUtil .getWebhookClient (webhookId , webhookToken , jda .getHttpClient ()), 50 );
475475 if (injector == null || injector .isRemoved ()) {
476476 injector = new ConsoleInjector (this );
477477 injector .start ();
@@ -510,8 +510,8 @@ public void shutdown() {
510510
511511 shutdownConsoleRelay (true );
512512
513- for (WrappedWebhookClient webhook : channelIdToWebhook .values ()) {
514- webhook .close ();
513+ for (WebhookDispatcher dispatcher : channelIdToWebhook .values ()) {
514+ dispatcher .close ();
515515 }
516516
517517 // Unregister leftover jda listeners
@@ -583,7 +583,10 @@ public CompletableFuture<Void> modifyMemberRoles(InteractionMember member, Colle
583583 }
584584
585585 final CompletableFuture <Void > future = new CompletableFuture <>();
586- guild .modifyMemberRoles (((InteractionMemberImpl ) member ).getJdaObject (), add , remove ).queue (future ::complete );
586+ guild .modifyMemberRoles (((InteractionMemberImpl ) member ).getJdaObject (), add , remove ).queue (future ::complete , error -> {
587+ logger .log (Level .WARNING , "Failed to modify member roles" , error );
588+ future .complete (null );
589+ });
587590 return future ;
588591 }
589592
@@ -613,7 +616,7 @@ public DiscordSettings getSettings() {
613616 return plugin .getSettings ();
614617 }
615618
616- public WrappedWebhookClient getConsoleWebhook () {
619+ public WebhookDispatcher getConsoleWebhook () {
617620 return consoleWebhook ;
618621 }
619622
0 commit comments