fix(discord): autoThread ack reactions + exec approval null handling#1511
Merged
steipete merged 5 commits intoopenclaw:mainfrom Jan 23, 2026
Merged
fix(discord): autoThread ack reactions + exec approval null handling#1511steipete merged 5 commits intoopenclaw:mainfrom
steipete merged 5 commits intoopenclaw:mainfrom
Conversation
- Ack reactions in bot-owned autoThreads - Ack reactions in open channels (no mention required) - DRY: Pass pre-computed isAutoThreadOwnedByBot to avoid redundant checks - Consolidate ack logic with explanatory comment
The ExecApprovalRequestParamsSchema was rejecting null values for optional fields like resolvedPath, but the calling code in bash-tools.exec.ts passes null. This caused intermittent 'invalid exec.approval.request params' validation errors. Fix: Accept Type.Union([Type.String(), Type.Null()]) for all optional string fields in the schema. Update test to reflect new behavior.
0aa7974 to
cfc15d4
Compare
Contributor
zooqueen
pushed a commit
to hanzoai/bot
that referenced
this pull request
Mar 6, 2026
…penclaw#1511) * fix(discord): gate autoThread by thread owner * fix(discord): ack bot-owned autoThreads * fix(discord): ack mentions in open channels - Ack reactions in bot-owned autoThreads - Ack reactions in open channels (no mention required) - DRY: Pass pre-computed isAutoThreadOwnedByBot to avoid redundant checks - Consolidate ack logic with explanatory comment * fix: allow null values in exec.approval.request schema The ExecApprovalRequestParamsSchema was rejecting null values for optional fields like resolvedPath, but the calling code in bash-tools.exec.ts passes null. This caused intermittent 'invalid exec.approval.request params' validation errors. Fix: Accept Type.Union([Type.String(), Type.Null()]) for all optional string fields in the schema. Update test to reflect new behavior. * fix: align discord ack reactions with mention gating (openclaw#1511) (thanks @pvoo) --------- Co-authored-by: Wimmie <wimmie@tameson.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed PR: Discord autoThread ack fixes + exec schema fix
PR Title
fix(discord): autoThread ack reactions + exec approval null handlingDescription
This PR fixes issues with Discord autoThread behavior and a schema validation bug in exec approvals.
Discord autoThread Fixes
Main Issue: When
autoThread: truewas enabled on a channel, the bot would respond to any message in any thread - including user-created threads where the bot wasn't mentioned. This was because the code skipped mention requirements for ALL threads when autoThread was enabled, not just bot-created threads.Problems:
Solution:
threadOwnerId === botId)requireMention: falseisDiscordAutoThreadOwnedByBot()helper for DRYExec Approval Schema Fix
Problem: Intermittent
invalid exec.approval.request params: at /resolvedPath: must be stringerrors when running exec commands.Root cause:
ExecApprovalRequestParamsSchemausedType.Optional(Type.String())which acceptsundefinedbut NOTnull. The calling code inbash-tools.exec.tspassesnull.Solution: Changed schema to
Type.Optional(Type.Union([Type.String(), Type.Null()]))for all optional string fields.