fix(gateway): backfill Discord thread context
Discord threads where the bot has already participated bypass mention gating by default, but the backfill check was still tied to the mention-needed condition. That meant follow-up thread messages could trigger a response without providing recent thread history to the session. Run history backfill for thread messages whenever backfill is enabled, while keeping DMs skipped and channel mention backfill behavior unchanged. Add a regression test for a known thread follow-up without an explicit mention. Fixes #33666 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
committed by
Teknium
co-authored by
Cursor
parent
a1eaad2fc0
commit
eafe11d456
@@ -851,6 +851,27 @@ async def test_discord_per_user_channel_backfills_too(adapter, monkeypatch):
|
||||
assert event.channel_context == "[Recent channel messages]\n[Alice] context"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_discord_participated_thread_backfills_without_mention(adapter, monkeypatch):
|
||||
"""Known threads still need recent thread context when mention gating is bypassed."""
|
||||
monkeypatch.setenv("DISCORD_REQUIRE_MENTION", "true")
|
||||
monkeypatch.delenv("DISCORD_FREE_RESPONSE_CHANNELS", raising=False)
|
||||
monkeypatch.delenv("DISCORD_THREAD_REQUIRE_MENTION", raising=False)
|
||||
adapter.config.extra["history_backfill"] = True
|
||||
adapter._fetch_channel_context = AsyncMock(return_value="[Recent channel messages]\n[Alice] thread context")
|
||||
|
||||
thread = FakeThread(channel_id=456, name="follow-up")
|
||||
adapter._threads.mark("456")
|
||||
|
||||
message = make_message(channel=thread, content="follow-up without mention")
|
||||
await adapter._handle_message(message)
|
||||
|
||||
adapter._fetch_channel_context.assert_awaited_once()
|
||||
event = adapter.handle_message.await_args.args[0]
|
||||
assert event.text == "follow-up without mention"
|
||||
assert event.channel_context == "[Recent channel messages]\n[Alice] thread context"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_discord_dm_does_not_backfill(adapter, monkeypatch):
|
||||
"""DMs skip backfill — every DM triggers the bot, so there's no mention gap."""
|
||||
|
||||
Reference in New Issue
Block a user