mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
fix: CommandStart(deep_link=False) now rejects deep-link arguments
Previously the deep_link parameter only had two effective states: False (default) accepted any /start command regardless of arguments, and True required arguments to be present. Change the default to None (accept both, backward compatible) so that False can mean "reject if deep-link arguments are present", which is the intuitive expectation when explicitly passing deep_link=False. Closes #1713 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
00c1130938
commit
79f92af746
3 changed files with 12 additions and 3 deletions
1
CHANGES/1713.bugfix.rst
Normal file
1
CHANGES/1713.bugfix.rst
Normal file
|
|
@ -0,0 +1 @@
|
|||
``CommandStart(deep_link=False)`` now correctly rejects messages that contain deep-link arguments. Previously ``deep_link=False`` (the default) did not distinguish between ``/start`` and ``/start <payload>``. The default is changed to ``None`` (accept both) to preserve backward compatibility.
|
||||
|
|
@ -240,7 +240,7 @@ class CommandObject:
|
|||
class CommandStart(Command):
|
||||
def __init__(
|
||||
self,
|
||||
deep_link: bool = False,
|
||||
deep_link: bool | None = None,
|
||||
deep_link_encoded: bool = False,
|
||||
ignore_case: bool = False,
|
||||
ignore_mention: bool = False,
|
||||
|
|
@ -282,7 +282,12 @@ class CommandStart(Command):
|
|||
return command # noqa: RET504
|
||||
|
||||
def validate_deeplink(self, command: CommandObject) -> CommandObject:
|
||||
if not self.deep_link:
|
||||
if self.deep_link is None:
|
||||
return command
|
||||
if self.deep_link is False:
|
||||
if command.args:
|
||||
msg = "Deep-link was not expected"
|
||||
raise CommandException(msg)
|
||||
return command
|
||||
if not command.args:
|
||||
msg = "Deep-link was missing"
|
||||
|
|
|
|||
|
|
@ -85,6 +85,9 @@ class TestCommandFilter:
|
|||
False,
|
||||
],
|
||||
["/start test", CommandStart(), True],
|
||||
["/start", CommandStart(), True],
|
||||
["/start", CommandStart(deep_link=False), True],
|
||||
["/start test", CommandStart(deep_link=False), False],
|
||||
["/start", CommandStart(deep_link=True), False],
|
||||
["/start test", CommandStart(deep_link=True), True],
|
||||
["/start test", CommandStart(deep_link=True, deep_link_encoded=True), False],
|
||||
|
|
@ -175,7 +178,7 @@ class TestCommandStart:
|
|||
cmd = CommandStart()
|
||||
assert (
|
||||
str(cmd)
|
||||
== "CommandStart(ignore_case=False, ignore_mention=False, deep_link=False, deep_link_encoded=False)"
|
||||
== "CommandStart(ignore_case=False, ignore_mention=False, deep_link_encoded=False)"
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue