summaryrefslogtreecommitdiff
path: root/ATRI/plugins/Check.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/Check.py')
-rw-r--r--ATRI/plugins/Check.py222
1 files changed, 222 insertions, 0 deletions
diff --git a/ATRI/plugins/Check.py b/ATRI/plugins/Check.py
new file mode 100644
index 0000000..9d0bbb2
--- /dev/null
+++ b/ATRI/plugins/Check.py
@@ -0,0 +1,222 @@
+import json
+import time
+import sqlite3
+from nonebot import session
+import psutil
+from pathlib import Path
+from datetime import datetime
+import nonebot
+from nonebot import on_command, CommandSession
+
+import config # type: ignore
+
+
+bot = nonebot.get_bot()
+master = config.MASTER()
+file = Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobList.json'
+file1 = Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobGroup.json'
+
+
+@on_command('data_list', aliases = ['数据总量'], only_to_me = False)
+async def _(session: CommandSession):
+ user = session.event.user_id
+ group = session.event.group_id
+ try:
+ with open(file1, 'r') as f:
+ data = json.load(f)
+ except:
+ data = {}
+
+ try:
+ with open(file, 'r') as f:
+ data1 = json.load(f)
+ except:
+ data1 = {}
+
+ if str(group) in data.keys():
+ pass
+ else:
+ if str(user) in data1.keys():
+ pass
+ else:
+ con = sqlite3.connect(Path('.') / 'ATRI' / 'data' / 'sqlite' / 'setu' / 'normal.db') # setu-normal
+ cur = con.cursor()
+ cur.execute("select * from normal")
+ data_normal = len(cur.fetchall())
+ con.close()
+
+ con = sqlite3.connect(Path('.') / 'ATRI' / 'data' / 'sqlite' / 'setu' / 'nearR18.db') # setu-nearR18
+ cur = con.cursor()
+ cur.execute("select * from nearR18")
+ data_nearR18 = len(cur.fetchall())
+ con.close()
+
+ con = sqlite3.connect(Path('.') / 'ATRI' / 'data' / 'sqlite' / 'setu' / 'r18.db') # setu-r18
+ cur = con.cursor()
+ cur.execute("select * from r18")
+ data_r18 = len(cur.fetchall())
+ con.close()
+
+ con = sqlite3.connect(Path('.') / 'ATRI' / 'data' / 'sqlite' / 'cloudmusic' / 'cloudmusic.db') # cloudmusic
+ cur = con.cursor()
+ cur.execute("select * from cloudmusic")
+ data_cloudmusic = len(cur.fetchall())
+ con.close()
+
+ with open(Path('.') / 'ATRI' / 'plugins' / 'LearnRepo' / 'LearnRepo.json', 'r') as f:
+ data = json.load(f)
+ data_repo = len(data)
+
+ await session.send(
+ f"""目前螃蟹™数据库收录了:
+ 涩图:
+ normal: {data_normal}
+ nearR18: {data_nearR18}
+ r18:{data_r18}
+ 网抑云语录:{data_cloudmusic}
+ 词汇量:{data_repo}"""
+ )
+
+
+@on_command('look_noobList', aliases = ['查看黑名单'], only_to_me = False)
+async def _(session: CommandSession):
+ start = time.perf_counter()
+ try:
+ with open(file, 'r') as f:
+ data = json.load(f)
+ except:
+ data = {}
+
+ try:
+ with open(file1, 'r') as f:
+ data0 = json.load(f)
+ except:
+ data0 = {}
+
+ msg = f'被ATRI列入黑名单有以下列表:\n'
+ try:
+ msg1 = f'=====[用户]=====\n'
+ msg += msg1
+ for i in data.keys():
+ msg0 = f'{i}\n'
+ msg += msg0
+ except:
+ end = time.perf_counter()
+ msg0 = f"==============\nDone time: {round(end - start, 3)}s"
+ msg += msg0
+ await session.send(msg)
+ return
+
+ try:
+ msg1 = f'======[群]======\n'
+ msg += msg1
+ for i in data0.keys():
+ msg0 = f'{i}\n'
+ msg += msg0
+ except:
+ end = time.perf_counter()
+ msg0 = f"==============\nDone time: {round(end - start, 3)}s"
+ msg += msg0
+ await session.send(msg)
+ return
+
+ end = time.perf_counter()
+ msg0 = f"==============\nDone time: {round(end - start, 3)}s"
+ msg += msg0
+ await session.send(msg)
+
+
+@on_command('look_power', aliases = ['查看权限组'], only_to_me = False)
+async def _(session: CommandSession):
+ start = time.perf_counter()
+ try:
+ with open(Path('.') / 'ATRI' / 'plugins' / 'UploadSqlite' / 'sepi.json', 'r') as f:
+ data = json.load(f)
+ except:
+ data = {}
+
+ try:
+ with open(Path('.') / 'ATRI' / 'plugins' / 'UploadSqlite' / 'cloudmusic.json', 'r') as f:
+ data0 = json.load(f)
+ except:
+ data0 = {}
+
+ msg = f'主人: {master}\n'
+ try:
+ msg1 = f'=====[涩批]=====\n'
+ msg += msg1
+ for i in data.keys():
+ msg0 = f'{i}\n'
+ msg += msg0
+ except:
+ end = time.perf_counter()
+ msg0 = f"==============\nDone time: {round(end - start, 3)}s"
+ msg += msg0
+ await session.send(msg)
+ return
+
+ try:
+ msg1 = f'====[网抑云]====\n'
+ msg += msg1
+ for i in data0.keys():
+ msg0 = f'{i}\n'
+ msg += msg0
+ except:
+ end = time.perf_counter()
+ msg0 = f"==============\nDone time: {round(end - start, 3)}s"
+ msg += msg0
+ await session.send(msg)
+ return
+
+ end = time.perf_counter()
+ msg0 = f"==============\nDone time: {round(end - start, 3)}s"
+ msg += msg0
+ await session.send(msg)
+
+
+
+@on_command('check_status', patterns = [r"检查状态|检查运行|检查身体"])
+async def _(session: CommandSession):
+ user = session.event.user_id
+ group = session.event.group_id
+ try:
+ with open(file1, 'r') as f:
+ data = json.load(f)
+ except:
+ data = {}
+
+ try:
+ with open(file, 'r') as f:
+ data1 = json.load(f)
+ except:
+ data1 = {}
+
+ if str(group) in data.keys():
+ pass
+ else:
+ if str(user) in data1.keys():
+ pass
+ else:
+ cpu = psutil.cpu_percent(interval=1)
+ memory = psutil.virtual_memory().percent
+ disk = psutil.disk_usage('/').percent
+ inteSENT = psutil.net_io_counters().bytes_sent # type: ignore
+ inteRECV = psutil.net_io_counters().bytes_recv # type: ignore
+
+ status = 'アトリは、高性能ですから!'
+
+ if cpu > 80:
+ status = 'ATRI感觉头有点晕...'
+ if memory > 80:
+ status = 'ATRI感觉有点头晕并且有点累...'
+
+ elif disk > 80:
+ status = 'ATRI感觉身体要被塞满了...'
+
+ await session.send(f"""ATRI Status:
+* cpu: {cpu}%
+* mem: {memory}%
+* disk: {disk}%
+* BytesSENT: {inteSENT}
+* BytesRECV: {inteRECV}
+{status}""".strip()) \ No newline at end of file