mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-12 10:11:52 +00:00
Resolve state object in FSMContext.
This commit is contained in:
parent
cf8df06f63
commit
0289f3a956
1 changed files with 14 additions and 2 deletions
|
|
@ -281,8 +281,20 @@ class FSMContext:
|
||||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _resolve_state(value):
|
||||||
|
from .filters.state import State
|
||||||
|
|
||||||
|
if value is None:
|
||||||
|
return
|
||||||
|
elif isinstance(value, str):
|
||||||
|
return value
|
||||||
|
elif isinstance(value, State):
|
||||||
|
return value.state
|
||||||
|
return str(value)
|
||||||
|
|
||||||
async def get_state(self, default: typing.Optional[str] = None) -> typing.Optional[str]:
|
async def get_state(self, default: typing.Optional[str] = None) -> typing.Optional[str]:
|
||||||
return await self.storage.get_state(chat=self.chat, user=self.user, default=default)
|
return await self.storage.get_state(chat=self.chat, user=self.user, default=self._resolve_state(default))
|
||||||
|
|
||||||
async def get_data(self, default: typing.Optional[str] = None) -> typing.Dict:
|
async def get_data(self, default: typing.Optional[str] = None) -> typing.Dict:
|
||||||
return await self.storage.get_data(chat=self.chat, user=self.user, default=default)
|
return await self.storage.get_data(chat=self.chat, user=self.user, default=default)
|
||||||
|
|
@ -291,7 +303,7 @@ class FSMContext:
|
||||||
await self.storage.update_data(chat=self.chat, user=self.user, data=data, **kwargs)
|
await self.storage.update_data(chat=self.chat, user=self.user, data=data, **kwargs)
|
||||||
|
|
||||||
async def set_state(self, state: typing.Union[typing.AnyStr, None] = None):
|
async def set_state(self, state: typing.Union[typing.AnyStr, None] = None):
|
||||||
await self.storage.set_state(chat=self.chat, user=self.user, state=state)
|
await self.storage.set_state(chat=self.chat, user=self.user, state=self._resolve_state(state))
|
||||||
|
|
||||||
async def set_data(self, data: typing.Dict = None):
|
async def set_data(self, data: typing.Dict = None):
|
||||||
await self.storage.set_data(chat=self.chat, user=self.user, data=data)
|
await self.storage.set_data(chat=self.chat, user=self.user, data=data)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue