add mirai

This commit is contained in:
2021-05-09 17:19:10 +08:00
parent 01ed67f8f4
commit 4cb10597c5
5 changed files with 271 additions and 4 deletions

View File

@@ -37,17 +37,62 @@ class MiraiSessionStatus(Enum):
class MiraiSession:
def __init__(self, sessionId: str, qq: int, status: Union[MiraiSessionStatus, int], lastedUsedTime: int):
def __init__(self, sessionId: str, qq: int = None, status: Union[MiraiSessionStatus, int] = None, lastedUsedTime: int = None):
self._sessionId = sessionId
self._qq = qq
if isinstance(status, MiraiSessionStatus):
if status is None:
self._status = MiraiSessionStatus(0)
elif isinstance(status, MiraiSessionStatus):
self._status = status
elif isinstance(status, int):
elif isinstance(status, int) and status >= 0 and status <= 2:
self._status = MiraiSessionStatus(status)
else:
self._status = MiraiSessionStatus(0)
self._lastedUsedTime = lastedUsedTime
@property
def sessionId(self) -> str:
return self._sessionId
@property
def qq(self) -> int:
if self._qq is None:
return None
if isinstance(self._qq, int):
return self._qq
else:
raise ValueError('qq must be int.')
@qq.setter
def qq(self, v):
if isinstance(v, int):
self._qq = v
@property
def status(self) -> MiraiSessionStatus:
return self._status
@status.setter
def status(self, v):
if isinstance(v, MiraiSessionStatus):
self._status = v
elif isinstance(v, int) and v >= 0 and v <= 2:
self._status = MiraiSessionStatus(v)
@property
def lastedUsedTime(self) -> int:
if self._lastedUsedTime is None:
return None
if isinstance(self._lastedUsedTime, int):
return self._lastedUsedTime
else:
raise ValueError('lastedUsedTime must be int.')
@lastedUsedTime.setter
def lastedUsedTime(self, v):
if isinstance(v, int):
self._lastedUsedTime = v
class MiraiDatabase:
def __check_database(self):
@@ -110,6 +155,19 @@ class MiraiDatabase:
return False
return None
def getVerifedSession(self) -> MiraiSession:
self.removeUselessSession()
cur = self._db.execute('SELECT * FROM mirai_session WHERE status=1;')
for i in cur:
return MiraiSession(*i)
return None
def removeSession(self, sessionId: str):
if self.getSession(sessionId, True):
self._db.execute(
'DELETE FROM mirai_session WHERE sessionId=?;', (sessionId,))
self._db.commit()
def removeUselessSession(self):
with self._lock:
try:
@@ -120,3 +178,13 @@ class MiraiDatabase:
return True
except:
return False
def setSession(self, ses: MiraiSession):
if self.getSession(ses.sessionId, True):
self._db.execute(
'UPDATE mirai_session SET qq=?, status=?, lastedUsedTime=? WHERE sessionId=?;',
(ses.qq, ses.status.value, ses.lastedUsedTime, ses.sessionId))
else:
self._db.execute('INSERT INTO mirai_session VALUES (?, ?, ?, ?);',
(ses.sessionId, ses.qq, ses.status.value, ses.lastedUsedTime))
self._db.commit()