Discord plugin: typing indicator expires after 10s with no refresh loop

Resolved 💬 2 comments Opened Mar 27, 2026 by subrih Closed Apr 27, 2026

Summary

The Discord plugin calls channel.sendTyping() once when a message is received (on messageCreate). Discord's typing indicator expires after ~10 seconds. For any Claude response that takes longer — which is most non-trivial tasks — the typing indicator disappears and users have no feedback that Claude is still processing.

Relevant code

// server.ts ~line 693
if ('sendTyping' in msg.channel) {
  void msg.channel.sendTyping().catch(() => {})
}

Single fire-and-forget call, no refresh.

Current workaround

A PreToolUse hook fires curl to the Discord typing endpoint on every tool call:

curl -s -X POST "https://discord.com/api/v10/channels/$CHANNEL_ID/typing" \
  -H "Authorization: Bot $TOKEN" \
  -H "Content-Length: 0" > /dev/null &

This refreshes the indicator on each tool use but misses gaps between tool calls (e.g. pure reasoning with no tool use).

Expected behavior

The plugin should maintain a setInterval that re-calls sendTyping() every ~9 seconds while Claude is processing, cleared when a reply is sent. This is the standard Discord bot pattern for long-running operations.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗