mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-04-25 12:26:00 +00:00
feat(telegram): add silent_tool_hints config to disable notifications for tool hints (#2252)
This commit is contained in:
parent
d076c5fd84
commit
e8238d7ede
@ -263,7 +263,8 @@ Connect nanobot to your favorite chat platform. Want to build your own? See the
|
|||||||
"telegram": {
|
"telegram": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"token": "YOUR_BOT_TOKEN",
|
"token": "YOUR_BOT_TOKEN",
|
||||||
"allowFrom": ["YOUR_USER_ID"]
|
"allowFrom": ["YOUR_USER_ID"],
|
||||||
|
"silentToolHints": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -168,6 +168,7 @@ class TelegramConfig(Base):
|
|||||||
group_policy: Literal["open", "mention"] = "mention"
|
group_policy: Literal["open", "mention"] = "mention"
|
||||||
connection_pool_size: int = 32
|
connection_pool_size: int = 32
|
||||||
pool_timeout: float = 5.0
|
pool_timeout: float = 5.0
|
||||||
|
silent_tool_hints: bool = False
|
||||||
|
|
||||||
|
|
||||||
class TelegramChannel(BaseChannel):
|
class TelegramChannel(BaseChannel):
|
||||||
@ -418,13 +419,15 @@ class TelegramChannel(BaseChannel):
|
|||||||
# Send text content
|
# Send text content
|
||||||
if msg.content and msg.content != "[empty message]":
|
if msg.content and msg.content != "[empty message]":
|
||||||
is_progress = msg.metadata.get("_progress", False)
|
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):
|
for chunk in split_message(msg.content, TELEGRAM_MAX_MESSAGE_LEN):
|
||||||
# Final response: simulate streaming via draft, then persist.
|
# Final response: simulate streaming via draft, then persist.
|
||||||
if not is_progress:
|
if not is_progress:
|
||||||
await self._send_with_streaming(chat_id, chunk, reply_params, thread_kwargs)
|
await self._send_with_streaming(chat_id, chunk, reply_params, thread_kwargs)
|
||||||
else:
|
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):
|
async def _call_with_retry(self, fn, *args, **kwargs):
|
||||||
"""Call an async Telegram API function with retry on pool/network timeout."""
|
"""Call an async Telegram API function with retry on pool/network timeout."""
|
||||||
@ -447,6 +450,7 @@ class TelegramChannel(BaseChannel):
|
|||||||
text: str,
|
text: str,
|
||||||
reply_params=None,
|
reply_params=None,
|
||||||
thread_kwargs: dict | None = None,
|
thread_kwargs: dict | None = None,
|
||||||
|
disable_notification: bool = False,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Send a plain text message with HTML fallback."""
|
"""Send a plain text message with HTML fallback."""
|
||||||
try:
|
try:
|
||||||
@ -455,6 +459,7 @@ class TelegramChannel(BaseChannel):
|
|||||||
self._app.bot.send_message,
|
self._app.bot.send_message,
|
||||||
chat_id=chat_id, text=html, parse_mode="HTML",
|
chat_id=chat_id, text=html, parse_mode="HTML",
|
||||||
reply_parameters=reply_params,
|
reply_parameters=reply_params,
|
||||||
|
disable_notification=disable_notification,
|
||||||
**(thread_kwargs or {}),
|
**(thread_kwargs or {}),
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -465,6 +470,7 @@ class TelegramChannel(BaseChannel):
|
|||||||
chat_id=chat_id,
|
chat_id=chat_id,
|
||||||
text=text,
|
text=text,
|
||||||
reply_parameters=reply_params,
|
reply_parameters=reply_params,
|
||||||
|
disable_notification=disable_notification,
|
||||||
**(thread_kwargs or {}),
|
**(thread_kwargs or {}),
|
||||||
)
|
)
|
||||||
except Exception as e2:
|
except Exception as e2:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user