From 530080a75d5c1842f14d5fd313a3874a3c2d5f5a Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Sat, 14 Mar 2026 14:24:11 +0800 Subject: [PATCH] feat: Add `/city` and `/deb` command handlers for weather data and historical weather queries. --- src/bot/handlers/city.py | 10 +++++++++- src/bot/handlers/deb.py | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/bot/handlers/city.py b/src/bot/handlers/city.py index f1c4d99a..80a52409 100644 --- a/src/bot/handlers/city.py +++ b/src/bot/handlers/city.py @@ -11,6 +11,11 @@ from src.bot.services.city_command_service import CityCommandService from src.bot.settings import CITY_QUERY_COST +def _is_city_command_text(text: str | None) -> bool: + head = str(text or "").strip().split(maxsplit=1)[0].lower() + return head == "/city" or head.startswith("/city@") + + class CityCommandHandler: def __init__( self, @@ -25,7 +30,10 @@ class CityCommandHandler: self.io_layer = io_layer def register(self) -> None: - @self.bot.message_handler(commands=["city"]) + @self.bot.message_handler( + func=lambda message: _is_city_command_text(getattr(message, "text", None)), + content_types=["text"], + ) def _city(message): self.handle(message) diff --git a/src/bot/handlers/deb.py b/src/bot/handlers/deb.py index fe087111..b4768d00 100644 --- a/src/bot/handlers/deb.py +++ b/src/bot/handlers/deb.py @@ -11,6 +11,11 @@ from src.bot.services.deb_command_service import DebCommandService from src.bot.settings import DEB_QUERY_COST +def _is_deb_command_text(text: str | None) -> bool: + head = str(text or "").strip().split(maxsplit=1)[0].lower() + return head == "/deb" or head.startswith("/deb@") + + class DebCommandHandler: def __init__( self, @@ -25,7 +30,10 @@ class DebCommandHandler: self.io_layer = io_layer def register(self) -> None: - @self.bot.message_handler(commands=["deb"]) + @self.bot.message_handler( + func=lambda message: _is_deb_command_text(getattr(message, "text", None)), + content_types=["text"], + ) def _deb(message): self.handle(message)