Skip to content

fix(discord): delete obsolete slash commands before creating new ones#3

Open
infinitycrew39 wants to merge 2 commits into
mainfrom
fix/discord-slash-sync
Open

fix(discord): delete obsolete slash commands before creating new ones#3
infinitycrew39 wants to merge 2 commits into
mainfrom
fix/discord-slash-sync

Conversation

@infinitycrew39

Copy link
Copy Markdown
Owner

Issue

Discord enforces a hard 100-command limit per app. When syncing slash commands, if we try to create new commands before deleting obsolete ones, we can temporarily exceed this limit, triggering error 30032 which silently breaks ALL slash commands.

Root Cause

The _safe_sync_slash_commands() function in plugins/platforms/discord/adapter.py was iterating over desired commands and trying to create new ones BEFORE deleting obsolete ones. If Discord already had 100 commands and a new command needed to be added, this would exceed the limit momentarily.

Solution

Reorder the sync operations to:

  1. Delete obsolete commands first (those on Discord but not in the desired set)
  2. Then create/update desired commands

This ensures we always stay at or below the 100-command limit during sync.

Changes

  • fix(discord): Reorder _safe_sync_slash_commands() to delete before create
  • test(discord): Add regression test to verify deletions happen before creations

Testing

The regression test test_safe_sync_deletes_before_creating() verifies that:

  • When having 100 commands on Discord with 1 obsolete and 1 new desired
  • The obsolete command is deleted FIRST
  • Then the new command is created AFTER
  • This prevents temporarily exceeding the 100-command limit

Fixes the "Cronjob ran without error and final message was created but still failed with runtime error" issue where error 30032 was breaking all Discord slash commands.

Discord enforces a hard 100-command limit per app. The sync function was
trying to create new commands before deleting obsolete ones, which could
temporarily push the total over 100 and trigger error 30032, silently
breaking all slash commands.

This fix reorders the sync to:
1. Identify and delete obsolete commands first
2. Then create/update desired commands

This ensures we always stay at or below the 100-command limit during sync.
@infinitycrew39 infinitycrew39 force-pushed the fix/discord-slash-sync branch from 0b83252 to d29c92a Compare June 22, 2026 16:02
Add a test to verify that _safe_sync_slash_commands deletes obsolete
commands before creating new ones. This ensures we never temporarily
exceed Discord's 100-command limit during sync, which would trigger
error 30032 and break all slash commands.

This test guards against the regression where sync could fail even though
the registration cap was properly enforced.
@infinitycrew39 infinitycrew39 force-pushed the fix/discord-slash-sync branch from d29c92a to a41ce33 Compare June 22, 2026 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant