summaryrefslogtreecommitdiff
path: root/ATRI/plugins/plugin_utils/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/plugin_utils/__init__.py')
1 files changed, 88 insertions, 0 deletions
diff --git a/ATRI/plugins/plugin_utils/__init__.py b/ATRI/plugins/plugin_utils/__init__.py
new file mode 100644
index 0000000..54abdeb
--- /dev/null
+++ b/ATRI/plugins/plugin_utils/__init__.py
@@ -0,0 +1,88 @@
+#!/usr/bin/env python3
+# -*- encoding: utf-8 -*-
+'''
+@File : __init__.py
+@Time : 2020/10/17 21:16:59
+@Author : Kyomotoi
+@Contact : kyomotoiowo@gmail.com
+@Github : https://github.com/Kyomotoi
+@License : Copyright © 2018-2020 Kyomotoi, All Rights Reserved.
+@Docs : Thanks for mnixry idea! fork from https://github.com/mnixry/coolQPythonBot
+'''
+__author__ = 'kyomotoi'
+
+import os
+import json
+import random
+from pathlib import Path
+from time import strftime
+from zipfile import PyZipFile
+from typing import Tuple, Dict, List
+from datetime import datetime, timedelta
+
+from nonebot.plugin import on_command
+from nonebot.adapters.cqhttp import Bot, Event
+
+from utils.utils_banList import banList
+
+
+file = Path('.') / 'ATRI' / 'data' / 'data_IDcard' / 'main.bin'
+
+def infoID() -> Tuple[Dict[str, List[str]], Dict[str, str]]:
+ with PyZipFile(os.path.abspath(file), "r") as zipFile:
+ with zipFile.open("name.json", "r") as f:
+ name = json.loads(f.read().decode())
+ with zipFile.open("area.json", "r") as f:
+ area = json.loads(f.read().decode())
+ return name, area
+
+NAME, AREA = infoID()
+
+BIRTH_BEGIN = datetime(*[1980, 10, 10]) # type: ignore
+BIRTH_END = datetime(*[2002, 10, 10]) # type: ignore
+
+def numberID(area: int, sex: int, birth: int) -> str:
+ def checkSum(fullCode: str) -> int or str:
+ assert len(fullCode) == 17
+ checkSum = sum(
+ [((1 << (17 - i)) % 11) * int(fullCode[i]) for i in range(0, 17)]
+ )
+ checkDigit = (12 - (checkSum % 11)) % 11
+ if checkDigit < 10:
+ return checkDigit
+ else:
+ return "X"
+
+ orderCode = str(random.randint(10, 99))
+ sexCode = str(random.randrange(sex, 10, step=2))
+ fullCode = str(area) + str(birth) + str(orderCode) + str(sexCode)
+ fullCode += str(checkSum(fullCode))
+ return fullCode
+
+
+plugin_name = "one-key-adult"
+generateID = on_command("我要转大人,一天打25小时游戏")
+
+@generateID.handle() # type: ignore
+async def _(bot: Bot, event: Event, state: dict) -> None:
+ user = str(event.user_id)
+ group = str(event.group_id)
+
+ if banList(user, group):
+ id_card_area = int(random.choice(list(AREA.keys())))
+ id_card_area_name = AREA[str(id_card_area)]
+ id_card_year_old = timedelta(days=random.randint(0, (BIRTH_END - BIRTH_BEGIN).days) + 1)
+ id_card_birth_day = strftime("%Y%m%d", (BIRTH_BEGIN + id_card_year_old).timetuple())
+ id_card_sex = random.choice([0, 1])
+ id_card_name = random.choice(NAME[{0: "female", 1: "male"}[id_card_sex]])
+ id_card_id = numberID(id_card_area, id_card_sex, id_card_birth_day)
+
+ msg0 = "恭喜,你已经成大人了!\n"
+ msg0 += "这是你一天25h游戏的通行证:\n"
+ msg0 += f"NumberID: {id_card_id}\n"
+ msg0 += f"Sex: {'男' if id_card_sex == 1 else '女'}\n"
+ msg0 += f"Name: {id_card_name} || Address: {id_card_area_name}\n"
+ msg0 += "注: 1、以上信息根据国家公开标准生成,非真实信息。\n"
+ msg0 += " 2、不适用于网易和腾讯。"
+
+ await generateID.finish(msg0)