diff --git a/gateway/platforms/base.py b/gateway/platforms/base.py index 7f72635b6d..e3668774e8 100644 --- a/gateway/platforms/base.py +++ b/gateway/platforms/base.py @@ -333,7 +333,10 @@ class MessageEvent: return None # Split on space and get first word, strip the / parts = self.text.split(maxsplit=1) - return parts[0][1:].lower() if parts else None + raw = parts[0][1:].lower() if parts else None + if raw and "@" in raw: + raw = raw.split("@", 1)[0] + return raw def get_command_args(self) -> str: """Get the arguments after a command.""" diff --git a/tests/gateway/test_platform_base.py b/tests/gateway/test_platform_base.py index 1aa0e11445..13b52f24f1 100644 --- a/tests/gateway/test_platform_base.py +++ b/tests/gateway/test_platform_base.py @@ -62,6 +62,18 @@ class TestMessageEventGetCommand: event = MessageEvent(text="/") assert event.get_command() == "" + def test_command_with_at_botname(self): + event = MessageEvent(text="/new@TigerNanoBot") + assert event.get_command() == "new" + + def test_command_with_at_botname_and_args(self): + event = MessageEvent(text="/compress@TigerNanoBot") + assert event.get_command() == "compress" + + def test_command_mixed_case_with_at_botname(self): + event = MessageEvent(text="/RESET@TigerNanoBot") + assert event.get_command() == "reset" + class TestMessageEventGetCommandArgs: def test_command_with_args(self):