Skip to content

feat(discord): support threaded free-response channels - #43781

Open
snapss-dev wants to merge 1 commit into
NousResearch:mainfrom
snapss-dev:oscar-discord-threaded-free-response
Open

snapss-dev wants to merge 1 commit into
NousResearch:mainfrom
snapss-dev:oscar-discord-threaded-free-response

Conversation

@snapss-dev

Copy link
Copy Markdown

Summary

  • add discord.free_response_threaded_channels / DISCORD_FREE_RESPONSE_THREADED_CHANNELS
  • let selected Discord channels bypass @mention gating while still using auto-created threads for top-level messages
  • keep parent-channel matching for replies in threads under those channels

Verification

  • /Users/snaps/.hermes/hermes-agent/venv/bin/python -m pytest tests/gateway/test_discord_channel_controls.py -q
  • /Users/snaps/.hermes/hermes-agent/venv/bin/python -m py_compile plugins/platforms/discord/adapter.py

@alt-glitch

Copy link
Copy Markdown
Contributor

Duplicate of #17564 — same feature (Discord threaded free-response channels: bypass @mention gating + auto-thread). #17564 is the earliest open canonical. Large competing cluster also includes #27969. Cross-linking for the maintainer to pick one.

@alt-glitch alt-glitch added type/feature New feature or request comp/plugins Plugin system and bundled plugins platform/discord Discord bot adapter P3 Low — cosmetic, nice to have duplicate This issue or pull request already exists labels Jun 10, 2026
@teknium1

Copy link
Copy Markdown
Collaborator

Thanks for the focused Discord routing implementation. Current main still has the requested gap: ordinary free-response matches at plugins/platforms/discord/adapter.py:6187-6199 feed skip_thread at :6223, so those channels reply inline.

Problems

  • The added list is evaluated only in _handle_message, but the earlier on_message filter checks only _discord_free_response_channels() at plugins/platforms/discord/adapter.py:1191-1204. A threaded-free message that mentions a human but not Hermes is dropped before this PR's new predicate runs. The added tests call _handle_message directly, so they do not cover that callback path.
  • The new runtime/config surface is not reflected in the existing Discord defaults and documentation (hermes_cli/config.py:2425-2436, website/docs/user-guide/messaging/discord.md:310-385) or the environment isolation/blocklist paths (tests/conftest.py:319-321, tools/environments/local.py:214-216).

Suggested changes

  • Share the threaded-free matching logic with the callback's free-response exception and add an event-level regression test for the human-mention path.
  • Complete the config/docs/environment-isolation wiring. The member duplicate note identifies canonical open PR feat(discord): add threaded free-response channels #17564, whose current diff already includes those omitted wiring surfaces.

Automated hermes-sweeper review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/plugins Plugin system and bundled plugins duplicate This issue or pull request already exists P3 Low — cosmetic, nice to have platform/discord Discord bot adapter sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants