summaryrefslogtreecommitdiff
path: root/ATRI/plugins/console/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/console/__init__.py')
-rw-r--r--ATRI/plugins/console/__init__.py202
1 files changed, 202 insertions, 0 deletions
diff --git a/ATRI/plugins/console/__init__.py b/ATRI/plugins/console/__init__.py
new file mode 100644
index 0000000..c6fd847
--- /dev/null
+++ b/ATRI/plugins/console/__init__.py
@@ -0,0 +1,202 @@
+import json
+
+from nonebot.params import ArgPlainText
+from nonebot.adapters.onebot.v11 import PrivateMessageEvent, GroupMessageEvent
+
+from ATRI.config import BotSelfConfig
+from ATRI.exceptions import WriteFileError, ReadFileError
+from .data_source import Console, CONSOLE_DIR
+from .models import AuthData
+from .driver import init
+
+init()
+
+
+gen_console_key = Console().cmd_as_group("auth", "获取进入网页后台的凭证")
+
+
+@gen_console_key.got("is_pub_n", "咱的运行环境是否有公网(y/n)")
+async def _(event: PrivateMessageEvent, is_pub_n: str = ArgPlainText("is_pub_n")):
+ if is_pub_n != "y":
+ ip = str(await Console().get_host_ip(False))
+ await gen_console_key.send("没有公网吗...嗯知道了")
+ else:
+ ip = str(await Console().get_host_ip(True))
+
+ p = BotSelfConfig.port
+ rs = Console().get_random_str(20)
+
+ df = CONSOLE_DIR / "data.json"
+ try:
+ if not df.is_file():
+ with open(df, "w", encoding="utf-8") as w:
+ w.write(json.dumps({}))
+
+ d = json.loads(df.read_bytes())
+
+ ca = d.get("data", None)
+ if ca:
+ # 此处原本想用 matcher.finish 但这是在 try 里啊!
+ await gen_console_key.send("咱已经告诉你了嗷!啊!忘了.../gauth 获取吧")
+ return
+
+ d["data"] = AuthData(ip=ip, port=str(p), token=rs).dict()
+
+ with open(df, "w", encoding="utf-8") as w:
+ w.write(json.dumps(d))
+ except WriteFileError:
+ msg = f"""
+ 哦吼!写入文件失败了...还请自行记下哦...
+ IP: {ip}
+ PORT: {p}
+ TOKEN: {rs}
+ 一定要保管好哦!切勿告诉他人哦!
+ """.strip()
+ await gen_console_key.send(msg)
+
+ raise WriteFileError("Writing file: " + str(df) + " failed!")
+
+ msg = f"""
+ 该信息已保存!可通过 /gauth 获取~
+ IP: {ip}
+ PORT: {p}
+ TOKEN: {rs}
+ 一定要保管好哦!切勿告诉他人哦!
+ """.strip()
+ await gen_console_key.finish(msg)
+
+
+@gen_console_key.handle()
+async def _(event: GroupMessageEvent):
+ await gen_console_key.finish("请私戳咱获取(")
+
+
+load_console_key = Console().cmd_as_group("load", "获取已生成的后台凭证")
+
+
+@load_console_key.handle()
+async def _(event: PrivateMessageEvent):
+ df = CONSOLE_DIR / "data.json"
+ if not df.is_file():
+ await load_console_key.finish("你还没有问咱索要奥!/auth 以获取")
+
+ try:
+ d = json.loads(df.read_bytes())
+ except ReadFileError:
+ await load_console_key.send("获取数据失败了...请自行打开文件查看吧:\n" + str(df))
+ raise ReadFileError("Reading file: " + str(df) + " failed!")
+
+ data = d["data"]
+ msg = f"""
+ 诶嘿嘿嘿——凭证信息来咯!
+ IP: {data['ip']}
+ PORT: {data['port']}
+ TOKEN: {data['token']}
+ 切记!不要告诉他人!!
+ """.strip()
+ await load_console_key.finish(msg)
+
+
+@load_console_key.handle()
+async def _(event: GroupMessageEvent):
+ await load_console_key.finish("请私戳咱获取(")
+
+
+del_console_key = Console().cmd_as_group("del", "销毁进入网页后台的凭证")
+
+
+@del_console_key.got("is_sure_d", "...你确定吗(y/n)")
+async def _(is_sure: str = ArgPlainText("is_sure_d")):
+ if is_sure != "y":
+ await del_console_key.finish("反悔了呢...")
+
+ df = CONSOLE_DIR / "data.json"
+ if not df.is_file():
+ await del_console_key.finish("你还没向咱索取凭证呢.../auth 以获取")
+
+ try:
+ data: dict = json.loads(df.read_bytes())
+
+ del data["data"]
+
+ with open(df, "w", encoding="utf-8") as w:
+ w.write(json.dumps(data))
+ except WriteFileError:
+ await del_console_key.send("销毁失败了...请至此处自行删除文件:\n" + str(df))
+ raise WriteFileError("Writing / Reading file: " + str(df) + " failed!")
+
+ await del_console_key.finish("销毁成功!如需再次获取: /auth")
+
+
+res_console_key = Console().cmd_as_group("reauth", "重置进入网页后台的凭证")
+
+
+@res_console_key.got("is_sure_r", "...你确定吗(y/n)")
+async def _(is_sure: str = ArgPlainText("is_sure_r")):
+ if is_sure != "y":
+ await res_console_key.finish("反悔了呢...")
+
+ df = CONSOLE_DIR / "data.json"
+ if not df.is_file():
+ await del_console_key.finish("你还没向咱索取凭证呢.../auth 以获取")
+
+ try:
+ data: dict = json.loads(df.read_bytes())
+
+ del data["data"]
+
+ with open(df, "w", encoding="utf-8") as w:
+ w.write(json.dumps(data))
+ except WriteFileError:
+ await del_console_key.send("销毁失败了...请至此处自行删除文件:\n" + str(df))
+ raise WriteFileError("Writing / Reading file: " + str(df) + " failed!")
+
+
+@res_console_key.got("is_pub_r_n", "咱的运行环境是否有公网(y/n)")
+async def _(event: PrivateMessageEvent, is_pub_n: str = ArgPlainText("is_pub_n")):
+ if is_pub_n != "y":
+ ip = str(await Console().get_host_ip(False))
+ await res_console_key.send("没有公网吗...嗯知道了")
+ else:
+ ip = str(await Console().get_host_ip(True))
+
+ p = BotSelfConfig.port
+ rs = Console().get_random_str(20)
+
+ df = CONSOLE_DIR / "data.json"
+ try:
+ if not df.is_file():
+ with open(df, "w", encoding="utf-8") as w:
+ w.write(json.dumps({}))
+
+ d = json.loads(df.read_bytes())
+
+ ca = d.get("data", None)
+ if ca:
+ await res_console_key.send("咱已经告诉你了嗷!啊!忘了.../gauth 获取吧")
+ return
+
+ d["data"] = AuthData(ip=ip, port=str(p), token=rs).dict()
+
+ with open(df, "w", encoding="utf-8") as w:
+ w.write(json.dumps(d))
+ except WriteFileError:
+ msg = f"""
+ 哦吼!写入文件失败了...还请自行记下哦...
+ IP: {ip}
+ PORT: {p}
+ TOKEN: {rs}
+ 一定要保管好哦!切勿告诉他人哦!
+ """.strip()
+ await res_console_key.send(msg)
+
+ raise WriteFileError("Writing file: " + str(df) + " failed!")
+
+ msg = f"""
+ 该信息已保存!可通过 /gauth 获取~
+ IP: {ip}
+ PORT: {p}
+ TOKEN: {rs}
+ 一定要保管好哦!切勿告诉他人哦!
+ """.strip()
+ await res_console_key.finish(msg)