mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Change user, chat in memory
This commit is contained in:
parent
079418b164
commit
bd325c39b0
1 changed files with 38 additions and 38 deletions
|
|
@ -20,8 +20,8 @@ class MemoryStorage(BaseStorage):
|
|||
def __init__(self):
|
||||
self.data = {}
|
||||
|
||||
def resolve_address(self, chat, user):
|
||||
chat_id, user_id = map(str, self.check_address(chat=chat, user=user))
|
||||
def resolve_address(self, chat_id, user_id):
|
||||
chat_id, user_id = map(str, self.check_address(chat_id=chat_id, user_id=user_id))
|
||||
|
||||
if chat_id not in self.data:
|
||||
self.data[chat_id] = {}
|
||||
|
|
@ -31,72 +31,72 @@ class MemoryStorage(BaseStorage):
|
|||
return chat_id, user_id
|
||||
|
||||
async def get_state(self, *,
|
||||
chat: typing.Union[str, int, None] = None,
|
||||
user: typing.Union[str, int, None] = None,
|
||||
chat_id: typing.Union[str, int, None] = None,
|
||||
user_id: typing.Union[str, int, None] = None,
|
||||
default: typing.Optional[str] = None) -> typing.Optional[str]:
|
||||
chat, user = self.resolve_address(chat=chat, user=user)
|
||||
return self.data[chat][user]['state']
|
||||
chat_id, user_id = self.resolve_address(chat_id=chat_id, user_id=user_id)
|
||||
return self.data[chat_id][user_id]['state']
|
||||
|
||||
async def get_data(self, *,
|
||||
chat: typing.Union[str, int, None] = None,
|
||||
user: typing.Union[str, int, None] = None,
|
||||
chat_id: typing.Union[str, int, None] = None,
|
||||
user_id: typing.Union[str, int, None] = None,
|
||||
default: typing.Optional[str] = None) -> typing.Dict:
|
||||
chat, user = self.resolve_address(chat=chat, user=user)
|
||||
return copy.deepcopy(self.data[chat][user]['data'])
|
||||
chat_id, user_id = self.resolve_address(chat_id=chat_id, user_id=user_id)
|
||||
return copy.deepcopy(self.data[chat_id][user_id]['data'])
|
||||
|
||||
async def update_data(self, *,
|
||||
chat: typing.Union[str, int, None] = None,
|
||||
user: typing.Union[str, int, None] = None,
|
||||
chat_id: typing.Union[str, int, None] = None,
|
||||
user_id: typing.Union[str, int, None] = None,
|
||||
data: typing.Dict = None, **kwargs):
|
||||
if data is None:
|
||||
data = {}
|
||||
chat, user = self.resolve_address(chat=chat, user=user)
|
||||
self.data[chat][user]['data'].update(data, **kwargs)
|
||||
chat_id, user_id = self.resolve_address(chat_id=chat_id, user_id=user_id)
|
||||
self.data[chat_id][user_id]['data'].update(data, **kwargs)
|
||||
|
||||
async def set_state(self, *,
|
||||
chat: typing.Union[str, int, None] = None,
|
||||
user: typing.Union[str, int, None] = None,
|
||||
chat_id: typing.Union[str, int, None] = None,
|
||||
user_id: typing.Union[str, int, None] = None,
|
||||
state: typing.AnyStr = None):
|
||||
chat, user = self.resolve_address(chat=chat, user=user)
|
||||
self.data[chat][user]['state'] = state
|
||||
chat_id, user_id = self.resolve_address(chat_id=chat_id, user_id=user_id)
|
||||
self.data[chat_id][user_id]['state'] = state
|
||||
|
||||
async def set_data(self, *,
|
||||
chat: typing.Union[str, int, None] = None,
|
||||
user: typing.Union[str, int, None] = None,
|
||||
chat_id: typing.Union[str, int, None] = None,
|
||||
user_id: typing.Union[str, int, None] = None,
|
||||
data: typing.Dict = None):
|
||||
chat, user = self.resolve_address(chat=chat, user=user)
|
||||
self.data[chat][user]['data'] = copy.deepcopy(data)
|
||||
chat_id, user_id = self.resolve_address(chat_id=chat_id, user_id=user_id)
|
||||
self.data[chat_id][user_id]['data'] = copy.deepcopy(data)
|
||||
|
||||
async def reset_state(self, *,
|
||||
chat: typing.Union[str, int, None] = None,
|
||||
user: typing.Union[str, int, None] = None,
|
||||
chat_id: typing.Union[str, int, None] = None,
|
||||
user_id: typing.Union[str, int, None] = None,
|
||||
with_data: typing.Optional[bool] = True):
|
||||
await self.set_state(chat=chat, user=user, state=None)
|
||||
await self.set_state(chat_id=chat_id, user_id=user_id, state=None)
|
||||
if with_data:
|
||||
await self.set_data(chat=chat, user=user, data={})
|
||||
await self.set_data(chat_id=chat_id, user_id=user_id, data={})
|
||||
|
||||
def has_bucket(self):
|
||||
return True
|
||||
|
||||
async def get_bucket(self, *,
|
||||
chat: typing.Union[str, int, None] = None,
|
||||
user: typing.Union[str, int, None] = None,
|
||||
chat_id: typing.Union[str, int, None] = None,
|
||||
user_id: typing.Union[str, int, None] = None,
|
||||
default: typing.Optional[dict] = None) -> typing.Dict:
|
||||
chat, user = self.resolve_address(chat=chat, user=user)
|
||||
return copy.deepcopy(self.data[chat][user]['bucket'])
|
||||
chat_id, user_id = self.resolve_address(chat_id=chat_id, user_id=user_id)
|
||||
return copy.deepcopy(self.data[chat_id][user_id]['bucket'])
|
||||
|
||||
async def set_bucket(self, *,
|
||||
chat: typing.Union[str, int, None] = None,
|
||||
user: typing.Union[str, int, None] = None,
|
||||
chat_id: typing.Union[str, int, None] = None,
|
||||
user_id: typing.Union[str, int, None] = None,
|
||||
bucket: typing.Dict = None):
|
||||
chat, user = self.resolve_address(chat=chat, user=user)
|
||||
self.data[chat][user]['bucket'] = copy.deepcopy(bucket)
|
||||
chat_id, user_id = self.resolve_address(chat_id=chat_id, user_id=user_id)
|
||||
self.data[chat_id][user_id]['bucket'] = copy.deepcopy(bucket)
|
||||
|
||||
async def update_bucket(self, *,
|
||||
chat: typing.Union[str, int, None] = None,
|
||||
user: typing.Union[str, int, None] = None,
|
||||
chat_id: typing.Union[str, int, None] = None,
|
||||
user_id: typing.Union[str, int, None] = None,
|
||||
bucket: typing.Dict = None, **kwargs):
|
||||
if bucket is None:
|
||||
bucket = {}
|
||||
chat, user = self.resolve_address(chat=chat, user=user)
|
||||
self.data[chat][user]['bucket'].update(bucket, **kwargs)
|
||||
chat_id, user_id = self.resolve_address(chat_id=chat_id, user_id=user_id)
|
||||
self.data[chat_id][user_id]['bucket'].update(bucket, **kwargs)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue