feat: add new command handlers for the /city and /deb commands
This commit is contained in:
@@ -55,24 +55,8 @@ class CityCommandHandler:
|
|||||||
self.guard = guard
|
self.guard = guard
|
||||||
self.city_service = city_service
|
self.city_service = city_service
|
||||||
self.io_layer = io_layer
|
self.io_layer = io_layer
|
||||||
self._handled_message_keys: set[tuple[Any, Any]] = set()
|
|
||||||
|
|
||||||
def _mark_handled_once(self, message: Any) -> bool:
|
|
||||||
chat_id = getattr(getattr(message, "chat", None), "id", None)
|
|
||||||
message_id = getattr(message, "message_id", None)
|
|
||||||
key = (chat_id, message_id)
|
|
||||||
if key in self._handled_message_keys:
|
|
||||||
return False
|
|
||||||
self._handled_message_keys.add(key)
|
|
||||||
if len(self._handled_message_keys) > 4096:
|
|
||||||
self._handled_message_keys.clear()
|
|
||||||
return True
|
|
||||||
|
|
||||||
def register(self) -> None:
|
def register(self) -> None:
|
||||||
@self.bot.message_handler(commands=["city"])
|
|
||||||
def _city_command(message):
|
|
||||||
self.handle(message)
|
|
||||||
|
|
||||||
@self.bot.message_handler(
|
@self.bot.message_handler(
|
||||||
func=lambda message: _is_city_command_text(getattr(message, "text", None)),
|
func=lambda message: _is_city_command_text(getattr(message, "text", None)),
|
||||||
content_types=["text"],
|
content_types=["text"],
|
||||||
@@ -80,16 +64,7 @@ class CityCommandHandler:
|
|||||||
def _city_func(message):
|
def _city_func(message):
|
||||||
self.handle(message)
|
self.handle(message)
|
||||||
|
|
||||||
@self.bot.message_handler(
|
|
||||||
regexp=r"^[//⁄∕╱⧸]\s*city(@[A-Za-z0-9_]+)?(\s|$)",
|
|
||||||
content_types=["text"],
|
|
||||||
)
|
|
||||||
def _city_regex(message):
|
|
||||||
self.handle(message)
|
|
||||||
|
|
||||||
def handle(self, message: Any) -> None:
|
def handle(self, message: Any) -> None:
|
||||||
if not self._mark_handled_once(message):
|
|
||||||
return
|
|
||||||
if not _is_city_command_text(getattr(message, "text", None)):
|
if not _is_city_command_text(getattr(message, "text", None)):
|
||||||
return
|
return
|
||||||
trace = CommandTrace("/city", message)
|
trace = CommandTrace("/city", message)
|
||||||
|
|||||||
@@ -55,24 +55,8 @@ class DebCommandHandler:
|
|||||||
self.guard = guard
|
self.guard = guard
|
||||||
self.deb_service = deb_service
|
self.deb_service = deb_service
|
||||||
self.io_layer = io_layer
|
self.io_layer = io_layer
|
||||||
self._handled_message_keys: set[tuple[Any, Any]] = set()
|
|
||||||
|
|
||||||
def _mark_handled_once(self, message: Any) -> bool:
|
|
||||||
chat_id = getattr(getattr(message, "chat", None), "id", None)
|
|
||||||
message_id = getattr(message, "message_id", None)
|
|
||||||
key = (chat_id, message_id)
|
|
||||||
if key in self._handled_message_keys:
|
|
||||||
return False
|
|
||||||
self._handled_message_keys.add(key)
|
|
||||||
if len(self._handled_message_keys) > 4096:
|
|
||||||
self._handled_message_keys.clear()
|
|
||||||
return True
|
|
||||||
|
|
||||||
def register(self) -> None:
|
def register(self) -> None:
|
||||||
@self.bot.message_handler(commands=["deb"])
|
|
||||||
def _deb_command(message):
|
|
||||||
self.handle(message)
|
|
||||||
|
|
||||||
@self.bot.message_handler(
|
@self.bot.message_handler(
|
||||||
func=lambda message: _is_deb_command_text(getattr(message, "text", None)),
|
func=lambda message: _is_deb_command_text(getattr(message, "text", None)),
|
||||||
content_types=["text"],
|
content_types=["text"],
|
||||||
@@ -80,16 +64,7 @@ class DebCommandHandler:
|
|||||||
def _deb_func(message):
|
def _deb_func(message):
|
||||||
self.handle(message)
|
self.handle(message)
|
||||||
|
|
||||||
@self.bot.message_handler(
|
|
||||||
regexp=r"^[//⁄∕╱⧸]\s*deb(@[A-Za-z0-9_]+)?(\s|$)",
|
|
||||||
content_types=["text"],
|
|
||||||
)
|
|
||||||
def _deb_regex(message):
|
|
||||||
self.handle(message)
|
|
||||||
|
|
||||||
def handle(self, message: Any) -> None:
|
def handle(self, message: Any) -> None:
|
||||||
if not self._mark_handled_once(message):
|
|
||||||
return
|
|
||||||
if not _is_deb_command_text(getattr(message, "text", None)):
|
if not _is_deb_command_text(getattr(message, "text", None)):
|
||||||
return
|
return
|
||||||
trace = CommandTrace("/deb", message)
|
trace = CommandTrace("/deb", message)
|
||||||
|
|||||||
Reference in New Issue
Block a user