mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-12 18:19:34 +00:00
Fix unexpected behavior of sequences in StateFilter (#791)
* Fix sequence check behavior in StateFilter * Add sequence cases to StateFilter tests * Add the changelog
This commit is contained in:
parent
7c14a6b16b
commit
6e39f9fada
3 changed files with 9 additions and 4 deletions
1
CHANGES/791.bugfix
Normal file
1
CHANGES/791.bugfix
Normal file
|
|
@ -0,0 +1 @@
|
|||
Fixed unexpected behavior of sequences in the StateFilter.
|
||||
|
|
@ -37,11 +37,12 @@ class StateFilter(BaseFilter):
|
|||
allowed_states = cast(Sequence[StateType], self.state)
|
||||
for allowed_state in allowed_states:
|
||||
if isinstance(allowed_state, str) or allowed_state is None:
|
||||
if allowed_state == "*":
|
||||
if allowed_state == "*" or raw_state == allowed_state:
|
||||
return True
|
||||
return raw_state == allowed_state
|
||||
elif isinstance(allowed_state, (State, StatesGroup)):
|
||||
return allowed_state(event=obj, raw_state=raw_state)
|
||||
if allowed_state(event=obj, raw_state=raw_state):
|
||||
return True
|
||||
elif isclass(allowed_state) and issubclass(allowed_state, StatesGroup):
|
||||
return allowed_state()(event=obj, raw_state=raw_state)
|
||||
if allowed_state()(event=obj, raw_state=raw_state):
|
||||
return True
|
||||
return False
|
||||
|
|
|
|||
|
|
@ -41,6 +41,9 @@ class TestStateFilter:
|
|||
[[None], None, True],
|
||||
[None, "state", False],
|
||||
[[], "state", False],
|
||||
[[State("state"), "state"], "state", True],
|
||||
[[MyGroup(), State("state")], "@:state", True],
|
||||
[[MyGroup, State("state")], "state", False],
|
||||
],
|
||||
)
|
||||
@pytestmark
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue