update mirai

This commit is contained in:
2021-05-10 19:08:37 +08:00
parent 5cdc7a00f3
commit 5fa20bd1ea

View File

@@ -20,7 +20,7 @@ from json import dumps
from time import time_ns from time import time_ns
from miraiDatabase import MiraiSession, MiraiDatabase from miraiDatabase import MiraiSession, MiraiDatabase
from functools import wraps from functools import wraps
from typing import Tuple, Union from typing import Tuple, Union, List
IMG_TYPE = Tuple[str, bytes] IMG_TYPE = Tuple[str, bytes]
@@ -54,14 +54,16 @@ def login_required(f):
return o return o
def version_1_11_0_needed(f): def version_needed(v: List[int]):
@wraps(f) def i(f):
def o(*l, **k): @wraps(f)
m: Mirai = l[0] def o(*l, **k):
if m._version < [1, 11, 0]: m: Mirai = l[0]
return None if m._version < v:
return f(*l, **k) return None
return o return f(*l, **k)
return o
return i
def admin_needed(ind=1): def admin_needed(ind=1):
@@ -180,6 +182,13 @@ class Mirai:
return None return None
return r.json() return r.json()
def _groupMkdir(self, sessionKey: str, group: int, dir: str):
r = self._post("/groupMkdir", {"sessionKey": sessionKey,
"group": group, "dir": dir})
if r is None:
return None
return r.json()
def _memberList(self, sessionKey: str, groupId: int): def _memberList(self, sessionKey: str, groupId: int):
r = self._get("/memberList", r = self._get("/memberList",
{"sessionKey": sessionKey, "target": groupId}) {"sessionKey": sessionKey, "target": groupId})
@@ -216,7 +225,9 @@ class Mirai:
else: else:
r = self._ses.post(url, data=json2data(json), files=files) r = self._ses.post(url, data=json2data(json), files=files)
self._lastRequestTime = time_ns() self._lastRequestTime = time_ns()
if r.status_code >= 400: if r.status_code > 400:
if len(r.content) != 0:
return r
return None return None
return r return r
except: except:
@@ -309,19 +320,19 @@ class Mirai:
return self._friendList(self._kses.sessionId) return self._friendList(self._kses.sessionId)
@login_required @login_required
@version_1_11_0_needed @version_needed([1, 11, 0])
def groupFileInfo(self, group: int, id: str): def groupFileInfo(self, group: int, id: str):
"获取群文件详细信息" "获取群文件详细信息"
return self._groupFileInfo(self._kses.sessionId, group, id) return self._groupFileInfo(self._kses.sessionId, group, id)
@login_required @login_required
@version_1_11_0_needed @version_needed([1, 11, 0])
def groupFileList(self, group: int, dir: str = None): def groupFileList(self, group: int, dir: str = None):
"获取群文件列表" "获取群文件列表"
return self._groupFileList(self._kses.sessionId, group, dir) return self._groupFileList(self._kses.sessionId, group, dir)
@login_required @login_required
@version_1_11_0_needed @version_needed([1, 11, 0])
@admin_needed() @admin_needed()
def groupFileRename(self, group: int, id: str, rename: str): def groupFileRename(self, group: int, id: str, rename: str):
"重命名群文件/目录" "重命名群文件/目录"
@@ -332,6 +343,12 @@ class Mirai:
"获取bot的群列表" "获取bot的群列表"
return self._groupList(self._kses.sessionId) return self._groupList(self._kses.sessionId)
@login_required
@version_needed([1, 11, 4])
def groupMkdir(self, group: int, dir: str):
"创建群文件目录"
return self._groupMkdir(self._kses.sessionId, group, dir)
def login(self): def login(self):
ses = self._db.getVerifedSession() ses = self._db.getVerifedSession()
while ses is not None: while ses is not None:
@@ -419,7 +436,7 @@ class Mirai:
return self._uploadImage(self._kses.sessionId, "friend", img) return self._uploadImage(self._kses.sessionId, "friend", img)
@login_required @login_required
@version_1_11_0_needed @version_needed([1, 11, 0])
@admin_needed() @admin_needed()
def uploadGroupFileAndSend(self, groupId: int, path: str, file: FILE_TYPE): def uploadGroupFileAndSend(self, groupId: int, path: str, file: FILE_TYPE):
"上传文件至群并返回FileId(测试需要管理员权限)" "上传文件至群并返回FileId(测试需要管理员权限)"