Discord plugin: typing indicator expires after 10s with no refresh loop
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.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗