From 8cd51708a7e1c0f87fafdef535c8f489747844dd Mon Sep 17 00:00:00 2001 From: Flo Date: Fri, 20 Mar 2026 09:31:09 +0300 Subject: [PATCH] feat(telegram): add silent_tool_hints config to disable notifications for tool hints (#2252) --- README.md | 3 ++- nanobot/channels/telegram.py | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fb993c833..944197526 100644 --- a/README.md +++ b/README.md @@ -262,7 +262,8 @@ Connect nanobot to your favorite chat platform. Want to build your own? See the "telegram": { "enabled": true, "token": "YOUR_BOT_TOKEN", - "allowFrom": ["YOUR_USER_ID"] + "allowFrom": ["YOUR_USER_ID"], + "silentToolHints": false } } } diff --git a/nanobot/channels/telegram.py b/nanobot/channels/telegram.py index c2b919954..d3c9073fa 100644 --- a/nanobot/channels/telegram.py +++ b/nanobot/channels/telegram.py @@ -167,6 +167,7 @@ class TelegramConfig(Base): group_policy: Literal["open", "mention"] = "mention" connection_pool_size: int = 32 pool_timeout: float = 5.0 + silent_tool_hints: bool = False class TelegramChannel(BaseChannel): @@ -415,13 +416,15 @@ class TelegramChannel(BaseChannel): # Send text content if msg.content and msg.content != "[empty message]": is_progress = msg.metadata.get("_progress", False) + is_tool_hint = msg.metadata.get("_tool_hint", False) + disable_notification = self.config.silent_tool_hints and is_tool_hint for chunk in split_message(msg.content, TELEGRAM_MAX_MESSAGE_LEN): # Final response: simulate streaming via draft, then persist if not is_progress: await self._send_with_streaming(chat_id, chunk, reply_params, thread_kwargs) else: - await self._send_text(chat_id, chunk, reply_params, thread_kwargs) + await self._send_text(chat_id, chunk, reply_params, thread_kwargs, disable_notification=disable_notification) async def _call_with_retry(self, fn, *args, **kwargs): """Call an async Telegram API function with retry on pool/network timeout.""" @@ -444,6 +447,7 @@ class TelegramChannel(BaseChannel): text: str, reply_params=None, thread_kwargs: dict | None = None, + disable_notification: bool = False, ) -> None: """Send a plain text message with HTML fallback.""" try: @@ -452,6 +456,7 @@ class TelegramChannel(BaseChannel): self._app.bot.send_message, chat_id=chat_id, text=html, parse_mode="HTML", reply_parameters=reply_params, + disable_notification=disable_notification, **(thread_kwargs or {}), ) except Exception as e: @@ -462,6 +467,7 @@ class TelegramChannel(BaseChannel): chat_id=chat_id, text=text, reply_parameters=reply_params, + disable_notification=disable_notification, **(thread_kwargs or {}), ) except Exception as e2: