mirror of
https://github.com/nonebot/nonebot2.git
synced 2025-07-27 08:11:38 +00:00
Initial commit
This commit is contained in:
35
interactive.py
Normal file
35
interactive.py
Normal file
@ -0,0 +1,35 @@
|
||||
from cachetools import TTLCache as TTLDict
|
||||
|
||||
|
||||
class _Session:
|
||||
__dict__ = ('cmd', 'state', 'data')
|
||||
|
||||
def __init__(self, cmd):
|
||||
self.cmd = cmd
|
||||
self.state = 0
|
||||
self.data = {}
|
||||
|
||||
|
||||
_sessions = TTLDict(maxsize=10000, ttl=5 * 60)
|
||||
|
||||
|
||||
def get_session(source, cmd=None):
|
||||
if cmd:
|
||||
if source in _sessions and _sessions[source].cmd == cmd:
|
||||
# It's already in a session of this command
|
||||
return _sessions[source]
|
||||
sess = _Session(cmd)
|
||||
_sessions[source] = sess
|
||||
return sess
|
||||
else:
|
||||
return _sessions.get(source)
|
||||
|
||||
|
||||
def has_session(source, cmd=None):
|
||||
return source in _sessions and (not cmd or _sessions[source].cmd == cmd)
|
||||
|
||||
|
||||
def remove_session(source, cmd=None):
|
||||
if source in _sessions:
|
||||
if not cmd or _sessions[source].cmd == cmd:
|
||||
del _sessions[source]
|
Reference in New Issue
Block a user