|
27 | 27 | import com.javadiscord.jdi.internal.api.DiscordRequestDispatcher;
|
28 | 28 | import com.javadiscord.jdi.internal.api.DiscordResponseFuture;
|
29 | 29 | import com.javadiscord.jdi.internal.api.application_commands.CreateCommandRequest;
|
| 30 | +import com.javadiscord.jdi.internal.api.application_commands.DeleteCommandRequest; |
30 | 31 | import com.javadiscord.jdi.internal.cache.Cache;
|
31 | 32 | import com.javadiscord.jdi.internal.cache.CacheType;
|
32 | 33 | import com.javadiscord.jdi.internal.gateway.*;
|
@@ -60,6 +61,7 @@ public class Discord {
|
60 | 61 | private final Map<String, Object> loadedSlashCommands = new HashMap<>();
|
61 | 62 | private final List<EventListener> eventListeners = new ArrayList<>();
|
62 | 63 | private final List<CommandBuilder> createInteractionRequests = new ArrayList<>();
|
| 64 | + private final List<DeleteCommandRequest> deleteInteractionRequests = new ArrayList<>(); |
63 | 65 |
|
64 | 66 | private WebSocketManager webSocketManager;
|
65 | 67 | private long applicationId;
|
@@ -381,8 +383,9 @@ public void registerSlashCommand(CommandBuilder builder) {
|
381 | 383 | createInteractionRequests.add(builder);
|
382 | 384 | }
|
383 | 385 |
|
384 |
| - public void deleteSlashCommand(long id) { |
385 |
| - // Implement command deletion logic |
| 386 | + public void deleteSlashCommand(long commandId, long guildId, boolean global) { |
| 387 | + deleteInteractionRequests |
| 388 | + .add(new DeleteCommandRequest(applicationId, guildId, commandId, global)); |
386 | 389 | }
|
387 | 390 |
|
388 | 391 | public DiscordRequestDispatcher getDiscordRequestDispatcher() {
|
@@ -420,7 +423,30 @@ void handleReadyEvent(ReadyEvent event) {
|
420 | 423 | handleCommandRegistrationResponse(request, future);
|
421 | 424 | }
|
422 | 425 |
|
| 426 | + for (DeleteCommandRequest request : deleteInteractionRequests) { |
| 427 | + DiscordResponseFuture future = sendRequest(request); |
| 428 | + handleDeleteResponse(request, future); |
| 429 | + } |
| 430 | + |
423 | 431 | createInteractionRequests.clear();
|
| 432 | + deleteInteractionRequests.clear(); |
| 433 | + } |
| 434 | + |
| 435 | + private void handleDeleteResponse(DeleteCommandRequest request, DiscordResponseFuture future) { |
| 436 | + future.onSuccess(res -> { |
| 437 | + if (res.status() >= 200 && res.status() < 300) { |
| 438 | + LOGGER.info("Deleted slash command {} with discord", request.commandId()); |
| 439 | + } else { |
| 440 | + LOGGER.error( |
| 441 | + "Failed to delete slash command {} with discord\n{}", request.commandId(), |
| 442 | + res.body() |
| 443 | + ); |
| 444 | + } |
| 445 | + }); |
| 446 | + future.onError( |
| 447 | + err -> LOGGER |
| 448 | + .error("Failed to delete slash command {} with discord", request.commandId(), err) |
| 449 | + ); |
424 | 450 | }
|
425 | 451 |
|
426 | 452 | private void handleCommandRegistrationResponse(
|
|
0 commit comments