openclaw - 💡(How to fix) Fix [Bug]: Discord `/vc join` hears/transcribes speech but returns no spoken reply; voice session uses `tts` + `NO_REPLY`, gateway logs `No reply from agent.` [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#61536Fetched 2026-04-08 02:57:36
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Author
Participants

Native Discord voice joins successfully and inbound speech is transcribed correctly, but no audible reply is played. In the voice session transcript, the agent calls the tts tool and then ends with NO_REPLY. The Discord voice runtime then logs [discord] No reply from agent. and plays nothing.

This appears distinct from the known DAVE/decrypt failures because in this case:

  • join succeeds
  • inbound speech is captured
  • STT works
  • the failure happens in the response/output path

Root Cause

This appears distinct from the known DAVE/decrypt failures because in this case:

RAW_BUFFERClick to expand / collapse

Summary

Native Discord voice joins successfully and inbound speech is transcribed correctly, but no audible reply is played. In the voice session transcript, the agent calls the tts tool and then ends with NO_REPLY. The Discord voice runtime then logs [discord] No reply from agent. and plays nothing.

This appears distinct from the known DAVE/decrypt failures because in this case:

  • join succeeds
  • inbound speech is captured
  • STT works
  • the failure happens in the response/output path

Environment

  • OpenClaw: 2026.4.2
  • Host: macOS
  • Channel: Discord
  • Native Discord voice enabled via channels.discord.voice.enabled = true
  • Old discord-voice plugin disabled in config:
    • plugins.entries.discord-voice.enabled = false

Relevant config state

  • channels.discord.voice.enabled = true
  • plugins.entries.discord-voice.enabled = false
  • commands.native = auto
  • global TTS configured and working outside this path
  • no obvious mismatch with official docs for native Discord voice setup

What works

  • /vc join is available
  • bot joins the voice channel successfully
  • bot remains connected
  • inbound user speech is captured and transcribed correctly

What fails

  • bot does not produce audible voice replies
  • gateway logs:
    • [discord] No reply from agent.

Exact observed behavior

During native Discord voice tests, the captured voice session transcript shows:

  • user speech is transcribed correctly from multiple direct test prompts
  • then the assistant calls the tts tool
  • then the turn ends with NO_REPLY
  • Discord voice runtime logs [discord] No reply from agent.
  • no playback occurs in VC

Evidence

Voice-only session evidence was confirmed from the local session transcript and gateway logs.

Observed gateway log timestamps:

  • 16:39:03[discord] No reply from agent.
  • 16:43:32[discord] No reply from agent.
  • 16:43:38[discord] No reply from agent.
  • 16:52:29[discord] No reply from agent.

Why this looks like a runtime bug

The failure is not in join or STT:

  • Discord VC join works
  • inbound audio is transcribed correctly
  • the failure is that the response path produces no final text payload for Discord voice playback

There also appears to be an implementation asymmetry:

  • the dedicated voice-call pathway has an explicit spoken-output contract (VOICE_SPOKEN_OUTPUT_CONTRACT)
  • the Discord voice runtime path in manager.runtime-Ct8g7s7u.js does not appear to apply an equivalent spoken-output contract before calling the agent

That may allow the agent to choose tool-based audio output (tts) plus NO_REPLY, which makes sense for some channels/tools but breaks the built-in Discord voice playback path, which seems to expect reply text.

Suspected root cause

Native Discord voice is allowing the agent to produce output in the wrong mode for VC playback:

  • agent uses tts
  • final payload becomes empty / silent token path
  • Discord voice runtime sees no reply text and logs No reply from agent.

Repro steps

  1. Enable native Discord voice:
    • channels.discord.voice.enabled = true
  2. Disable old Discord voice plugin:
    • plugins.entries.discord-voice.enabled = false
  3. Restart gateway
  4. In Discord, run /vc join
  5. Speak a direct test prompt asking for a spoken reply
  6. Observe:
    • VC join succeeds
    • no audible response
    • gateway logs [discord] No reply from agent.
    • session transcript shows speech was transcribed correctly

Expected behavior

  • bot should generate a spoken reply and play it in the voice channel

Actual behavior

  • speech is heard/transcribed
  • no audible reply is played
  • session shows tts tool usage + NO_REPLY
  • gateway logs [discord] No reply from agent.

Notes

This appears different from the earlier Discord voice DAVE/decrypt issues because inbound speech capture is already working in this repro. The breakage seems to be specifically in the response/playback contract for native Discord voice.

extent analysis

TL;DR

The issue can be resolved by ensuring the agent produces output in the correct mode for Discord voice playback, potentially by applying a spoken-output contract equivalent to VOICE_SPOKEN_OUTPUT_CONTRACT used in the dedicated voice-call pathway.

Guidance

  1. Review the agent's output mode: Verify that the agent is producing output in a mode compatible with Discord voice playback, rather than using tts followed by NO_REPLY.
  2. Apply a spoken-output contract: Consider implementing a spoken-output contract similar to VOICE_SPOKEN_OUTPUT_CONTRACT in the Discord voice runtime path to ensure the agent's output is correctly formatted for VC playback.
  3. Check the tts tool configuration: Ensure the tts tool is configured to produce output that can be played back in the Discord voice channel.
  4. Verify the Discord voice runtime logs: Monitor the Discord voice runtime logs for any errors or warnings related to playback or the agent's output.

Example

No specific code example can be provided without modifying the existing implementation, but the fix may involve adding a check or modification to the manager.runtime-Ct8g7s7u.js file to apply the spoken-output contract before calling the agent.

Notes

The solution may require changes to the agent's output mode or the implementation of the spoken-output contract in the Discord voice runtime path. The exact fix will depend on the specific requirements of the Discord voice playback system and the agent's output format.

Recommendation

Apply a workaround by modifying the agent's output mode or the Discord voice runtime path to ensure compatibility with the VC playback system, as the root cause appears to be related to the agent's output mode and the lack of a spoken-output contract in the Discord voice runtime path.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

  • bot should generate a spoken reply and play it in the voice channel

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [Bug]: Discord `/vc join` hears/transcribes speech but returns no spoken reply; voice session uses `tts` + `NO_REPLY`, gateway logs `No reply from agent.` [1 participants]