Skip to content

Discord: asVoice conflicts with required components schema — cannot send voice messages with pre-recorded audio #51447

Description

@cyperx84

Bug

The message tool requires components for Discord sends, but Discord voice messages (asVoice: true) cannot have components. This makes it impossible to send pre-recorded audio as inline playable voice messages in Discord.

Steps to Reproduce

  1. Try sending a voice message with pre-recorded audio:

    • asVoice: true + media: /path/to/audio.ogg (no components) → Validation error: components: must have required property components
    • asVoice: true + media + components: {} → API error: Discord components cannot be sent as voice messages.
  2. Try sending audio without asVoice:

    • media + components: { blocks: [{ type: "file", file: "attachment://file.ogg" }] } → File attaches as download card, NOT inline playable
    • media + components: { text: "..." } → Attachment silently stripped (attachments: [])

Expected Behavior

Sending asVoice: true with media and no components should work. Discord voice messages need duration_secs and waveform metadata on the attachment — the tool should either:

  1. Skip components validation when asVoice: true
  2. Auto-generate waveform data from the audio file (like Discord clients do)

Actual Behavior

Caught between two constraints: components is required but voice messages cannot have components.

Workaround

The tts tool can send inline playable audio, but it uses the bot's own TTS voice — not custom/cloned audio. There is no way to send pre-recorded custom audio as a playable voice message through the current tool.

Environment

  • OpenClaw 2026.3.14
  • Discord channel
  • macOS arm64

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions