mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-29 06:31:32 +00:00
fix: ignore Telegram start pings
This commit is contained in:
parent
8807b1c727
commit
efa952531b
4 changed files with 59 additions and 0 deletions
|
|
@ -7025,6 +7025,13 @@ class GatewayRunner:
|
|||
if _denied is not None:
|
||||
return _denied
|
||||
|
||||
# Telegram sends /start for bot launches/deep-links. Treat it as a
|
||||
# platform ping, not a user command: no help dump, no agent
|
||||
# interrupt, no queued text.
|
||||
if _cmd_def_inner and _cmd_def_inner.name == "start":
|
||||
logger.info("Ignoring /start platform ping for active session %s", _quick_key)
|
||||
return ""
|
||||
|
||||
if _cmd_def_inner and _cmd_def_inner.name == "restart":
|
||||
return await self._handle_restart_command(event)
|
||||
|
||||
|
|
@ -7458,6 +7465,10 @@ class GatewayRunner:
|
|||
if canonical == "help":
|
||||
return await self._handle_help_command(event)
|
||||
|
||||
if canonical == "start":
|
||||
logger.info("Ignoring /start platform ping for session %s", _quick_key)
|
||||
return ""
|
||||
|
||||
if canonical == "commands":
|
||||
return await self._handle_commands_command(event)
|
||||
|
||||
|
|
|
|||
|
|
@ -63,6 +63,8 @@ class CommandDef:
|
|||
|
||||
COMMAND_REGISTRY: list[CommandDef] = [
|
||||
# Session
|
||||
CommandDef("start", "Acknowledge platform start pings without a reply", "Session",
|
||||
gateway_only=True),
|
||||
CommandDef("new", "Start a new session (fresh session ID + history)", "Session",
|
||||
aliases=("reset",), args_hint="[name]"),
|
||||
CommandDef("topic", "Enable or inspect Telegram DM topic sessions", "Session",
|
||||
|
|
|
|||
|
|
@ -26,6 +26,16 @@ def _make_runner():
|
|||
return object.__new__(GatewayRunner)
|
||||
|
||||
|
||||
def test_start_is_known_gateway_command():
|
||||
"""Telegram sends /start automatically; gateway should intercept it as a no-op."""
|
||||
from hermes_cli.commands import GATEWAY_KNOWN_COMMANDS, resolve_command
|
||||
|
||||
cmd = resolve_command("start")
|
||||
assert "start" in GATEWAY_KNOWN_COMMANDS
|
||||
assert cmd is not None
|
||||
assert cmd.name == "start"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_help_sanitizes_slash_command_mentions_for_telegram(monkeypatch):
|
||||
"""Telegram help output must not expose invalid uppercase/hyphenated slashes."""
|
||||
|
|
|
|||
|
|
@ -330,6 +330,42 @@ async def test_command_messages_do_not_leave_sentinel():
|
|||
)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_start_command_is_noop_and_does_not_show_help():
|
||||
"""Telegram /start is a platform ping; it must not dump /help output."""
|
||||
runner = _make_runner()
|
||||
event = _make_event(text="/start")
|
||||
session_key = build_session_key(event.source)
|
||||
|
||||
runner._handle_help_command = AsyncMock(return_value="Help text")
|
||||
|
||||
result = await runner._handle_message(event)
|
||||
|
||||
assert result == ""
|
||||
runner._handle_help_command.assert_not_awaited()
|
||||
assert session_key not in runner._running_agents
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_start_command_is_noop_during_active_session():
|
||||
"""A mid-run /start must not interrupt the active agent or show commands."""
|
||||
runner = _make_runner()
|
||||
event = _make_event(text="/start")
|
||||
session_key = build_session_key(event.source)
|
||||
|
||||
fake_agent = MagicMock()
|
||||
fake_agent.get_activity_summary.return_value = {"seconds_since_activity": 0}
|
||||
runner._running_agents[session_key] = fake_agent
|
||||
runner._handle_help_command = AsyncMock(return_value="Help text")
|
||||
|
||||
result = await runner._handle_message(event)
|
||||
|
||||
assert result == ""
|
||||
runner._handle_help_command.assert_not_awaited()
|
||||
fake_agent.interrupt.assert_not_called()
|
||||
assert session_key not in runner.adapters[Platform.TELEGRAM]._pending_messages
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.parametrize(
|
||||
("command_text", "handler_attr", "handler_result"),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue