import nonebot from pathlib import Path from configs.path_config import DATA_PATH from configs.config import Config try: import ujson as json except ModuleNotFoundError: import json DRAW_PATH = DATA_PATH + "/draw_card/" _draw_config = Path(rf"{DRAW_PATH}/draw_card_config/draw_card_config.json") for game_flag, game_name in zip( [ "PRTS_FLAG", "GENSHIN_FLAG", "PRETTY_FLAG", "GUARDIAN_FLAG", "PCR_FLAG", "AZUR_FLAG", "FGO_FLAG", "ONMYOJI_FLAG", "PCR_TAI", ], ["明日方舟", "原神", "赛马娘", "坎公骑冠剑", "公主连结", "碧蓝航线", "命运-冠位指定(FGO)", "阴阳师", "pcr台服卡池"], ): Config.add_plugin_config( "draw_card", game_flag, True, name="游戏抽卡", help_=f"{game_name} 抽卡开关", default_value=True, ) Config.add_plugin_config( "draw_card", "SEMAPHORE", 5, help_=f"异步数据下载数量限制", default_value=5 ) PRTS_FLAG = Config.get_config("draw_card", "PRTS_FLAG") GENSHIN_FLAG = Config.get_config("draw_card", "GENSHIN_FLAG") PRETTY_FLAG = Config.get_config("draw_card", "PRETTY_FLAG") GUARDIAN_FLAG = Config.get_config("draw_card", "GUARDIAN_FLAG") PCR_FLAG = Config.get_config("draw_card", "PCR_FLAG") AZUR_FLAG = Config.get_config("draw_card", "AZUR_FLAG") FGO_FLAG = Config.get_config("draw_card", "FGO_FLAG") ONMYOJI_FLAG = Config.get_config("draw_card", "ONMYOJI_FLAG") PCR_TAI = Config.get_config("draw_card", "PCR_TAI") SEMAPHORE = Config.get_config("draw_card", "SEMAPHORE") # 方舟概率 PRTS_SIX_P = 0.02 PRTS_FIVE_P = 0.08 PRTS_FOUR_P = 0.48 PRTS_THREE_P = 0.42 # 原神概率 GENSHIN_FIVE_P = 0.006 GENSHIN_FOUR_P = 0.051 GENSHIN_THREE_P = 0.43 # 保底概率 GENSHIN_G_FIVE_P = 0.016 GENSHIN_G_FOUR_P = 0.13 # 72抽后增加的概率 I72_ADD = 0.0585 # 赛马娘概率 PRETTY_THREE_P = 0.03 PRETTY_TWO_P = 0.18 PRETTY_ONE_P = 0.79 # 坎公骑冠剑 # 角色概率 GUARDIAN_THREE_CHAR_P = 0.0275 GUARDIAN_TWO_CHAR_P = 0.19 GUARDIAN_ONE_CHAR_P = 0.7825 # UP角色 GUARDIAN_THREE_CHAR_UP_P = 0.01375 GUARDIAN_THREE_CHAR_OTHER_P = 0.01375 # 武器概率 GUARDIAN_EXCLUSIVE_ARMS_P = 0.03 GUARDIAN_FIVE_ARMS_P = 0.03 GUARDIAN_FOUR_ARMS_P = 0.09 GUARDIAN_THREE_ARMS_P = 0.27 GUARDIAN_TWO_ARMS_P = 0.58 # UP武器 GUARDIAN_EXCLUSIVE_ARMS_UP_P = 0.01 GUARDIAN_EXCLUSIVE_ARMS_OTHER_P = 0.02 # PCR PCR_THREE_P = 0.025 PCR_TWO_P = 0.18 PCR_ONE_P = 0.795 # 保底 PCR_G_THREE_P = 0.025 PCR_G_TWO_P = 0.975 # 碧蓝航线 AZUR_FIVE_P = 0.012 AZUR_FOUR_P = 0.07 AZUR_THREE_P = 0.12 AZUR_TWO_P = 0.51 AZUR_ONE_P = 0.3 # FGO FGO_SERVANT_FIVE_P = 0.01 FGO_SERVANT_FOUR_P = 0.03 FGO_SERVANT_THREE_P = 0.4 FGO_CARD_FIVE_P = 0.04 FGO_CARD_FOUR_P = 0.12 FGO_CARD_THREE_P = 0.4 # 阴阳师 ONMYOJI_SP = 0.0025 ONMYOJI_SSR = 0.01 ONMYOJI_SR = 0.2 ONMYOJI_R = 0.7875 path_dict = { "genshin": "原神", "prts": "明日方舟", "pretty": "赛马娘", "guardian": "坎公骑冠剑", "pcr": "公主连结", "azur": "碧蓝航线", "fgo": "命运-冠位指定", "onmyoji": "阴阳师", } driver: nonebot.Driver = nonebot.get_driver() config_default_data = { "path_dict": { "genshin": "原神", "prts": "明日方舟", "pretty": "赛马娘", "guardian": "坎公骑冠剑", "pcr": "公主连结", "azur": "碧蓝航线", "fgo": "命运-冠位指定", "onmyoji": "阴阳师", }, "prts": { "PRTS_SIX_P": 0.02, "PRTS_FIVE_P": 0.08, "PRTS_FOUR_P": 0.48, "PRTS_THREE_P": 0.42, }, "genshin": { "GENSHIN_FIVE_P": 0.006, "GENSHIN_FOUR_P": 0.051, "GENSHIN_THREE_P": 0.43, "GENSHIN_G_FIVE_P": 0.13, "GENSHIN_G_FOUR_P": 0.016, "I72_ADD": 0.0585, }, "pretty": { "PRETTY_THREE_P": 0.03, "PRETTY_TWO_P": 0.18, "PRETTY_ONE_P": 0.79, }, "guardian": { "GUARDIAN_THREE_CHAR_P": 0.0275, "GUARDIAN_TWO_CHAR_P": 0.19, "GUARDIAN_ONE_CHAR_P": 0.7825, "GUARDIAN_THREE_CHAR_UP_P": 0.01375, "GUARDIAN_THREE_CHAR_OTHER_P": 0.01375, "GUARDIAN_EXCLUSIVE_ARMS_P": 0.03, "GUARDIAN_FIVE_ARMS_P": 0.03, "GUARDIAN_FOUR_ARMS_P": 0.09, "GUARDIAN_THREE_ARMS_P": 0.27, "GUARDIAN_TWO_ARMS_P": 0.58, "GUARDIAN_EXCLUSIVE_ARMS_UP_P": 0.01, "GUARDIAN_EXCLUSIVE_ARMS_OTHER_P": 0.02, }, "pcr": { "PCR_THREE_P": 0.025, "PCR_TWO_P": 0.18, "PCR_ONE_P": 0.795, }, "azur": { "AZUR_FIVE_P": 0.012, "AZUR_FOUR_P": 0.07, "AZUR_THREE_P": 0.12, "AZUR_TWO_P": 0.51, "AZUR_ONE_P": 0.3, }, "fgo": { "FGO_SERVANT_FIVE_P": 0.01, "FGO_SERVANT_FOUR_P": 0.03, "FGO_SERVANT_THREE_P": 0.4, "FGO_CARD_FIVE_P": 0.04, "FGO_CARD_FOUR_P": 0.12, "FGO_CARD_THREE_P": 0.4, }, "onmyoji": { "ONMYOJI_SP": 0.0025, "ONMYOJI_SSR": 0.01, "ONMYOJI_SR": 0.2, "ONMYOJI_R": 0.7875, }, } @driver.on_startup def check_config(): global PRTS_SIX_P, PRTS_FOUR_P, PRTS_FIVE_P, PRTS_THREE_P, GENSHIN_G_FIVE_P, config_default_data, GENSHIN_G_FOUR_P, GENSHIN_FOUR_P, GENSHIN_FIVE_P, I72_ADD, path_dict, PRETTY_THREE_P, PRETTY_ONE_P, PRETTY_TWO_P, GENSHIN_THREE_P, GUARDIAN_THREE_CHAR_P, GUARDIAN_TWO_CHAR_P, GUARDIAN_ONE_CHAR_P, GUARDIAN_THREE_CHAR_UP_P, GUARDIAN_THREE_CHAR_OTHER_P, GUARDIAN_EXCLUSIVE_ARMS_P, GUARDIAN_FIVE_ARMS_P, GUARDIAN_FOUR_ARMS_P, GUARDIAN_THREE_ARMS_P, GUARDIAN_TWO_ARMS_P, GENSHIN_FLAG, PRTS_FLAG, PRETTY_FLAG, GUARDIAN_FLAG, GUARDIAN_EXCLUSIVE_ARMS_UP_P, GUARDIAN_EXCLUSIVE_ARMS_OTHER_P, DRAW_PATH, PCR_THREE_P, PCR_TWO_P, PCR_ONE_P, AZUR_FOUR_P, AZUR_THREE_P, AZUR_TWO_P, AZUR_ONE_P, AZUR_FIVE_P, FGO_CARD_FIVE_P, FGO_CARD_FOUR_P, FGO_CARD_THREE_P, FGO_SERVANT_THREE_P, FGO_SERVANT_FOUR_P, FGO_SERVANT_FIVE_P, ONMYOJI_R, ONMYOJI_SP, ONMYOJI_SSR, ONMYOJI_SR _draw_config.parent.mkdir(parents=True, exist_ok=True) try: data = json.load(open(_draw_config, "r", encoding="utf8")) except (FileNotFoundError, ValueError): _draw_config.parent.mkdir(parents=True, exist_ok=True) json.dump( config_default_data, open(_draw_config, "w", encoding="utf8"), indent=4, ensure_ascii=False, ) print("draw_card:配置文件不存在或格式错误,已重新生成配置文件.....") else: try: PRTS_SIX_P = float(data["prts"]["PRTS_SIX_P"]) PRTS_FIVE_P = float(data["prts"]["PRTS_FIVE_P"]) PRTS_FOUR_P = float(data["prts"]["PRTS_FOUR_P"]) PRTS_THREE_P = float(data["prts"]["PRTS_THREE_P"]) except KeyError: data["prts"] = {} data["prts"]["PRTS_SIX_P"] = config_default_data["prts"]["PRTS_SIX_P"] data["prts"]["PRTS_FIVE_P"] = config_default_data["prts"]["PRTS_FIVE_P"] data["prts"]["PRTS_FOUR_P"] = config_default_data["prts"]["PRTS_FOUR_P"] data["prts"]["PRTS_THREE_P"] = config_default_data["prts"]["PRTS_THREE_P"] try: GENSHIN_FIVE_P = float(data["genshin"]["GENSHIN_FIVE_P"]) GENSHIN_FOUR_P = float(data["genshin"]["GENSHIN_FOUR_P"]) GENSHIN_THREE_P = float(data["genshin"]["GENSHIN_THREE_P"]) GENSHIN_G_FIVE_P = float(data["genshin"]["GENSHIN_G_FIVE_P"]) GENSHIN_G_FOUR_P = float(data["genshin"]["GENSHIN_G_FOUR_P"]) I72_ADD = float(data["genshin"]["I72_ADD"]) except KeyError: data["genshin"] = {} data["genshin"]["GENSHIN_FIVE_P"] = config_default_data["genshin"][ "GENSHIN_FIVE_P" ] data["genshin"]["GENSHIN_FOUR_P"] = config_default_data["genshin"][ "GENSHIN_FOUR_P" ] data["genshin"]["GENSHIN_THREE_P"] = config_default_data["genshin"][ "GENSHIN_THREE_P" ] data["genshin"]["GENSHIN_G_FIVE_P"] = config_default_data["genshin"][ "GENSHIN_G_FIVE_P" ] data["genshin"]["GENSHIN_G_FOUR_P"] = config_default_data["genshin"][ "GENSHIN_G_FOUR_P" ] data["genshin"]["I72_ADD"] = config_default_data["genshin"]["I72_ADD"] try: PRETTY_THREE_P = float(data["pretty"]["PRETTY_THREE_P"]) PRETTY_TWO_P = float(data["pretty"]["PRETTY_TWO_P"]) PRETTY_ONE_P = float(data["pretty"]["PRETTY_ONE_P"]) except KeyError: data["pretty"] = {} data["pretty"]["PRETTY_THREE_P"] = config_default_data["pretty"][ "PRETTY_THREE_P" ] data["pretty"]["PRETTY_TWO_P"] = config_default_data["pretty"][ "PRETTY_TWO_P" ] data["pretty"]["PRETTY_ONE_P"] = config_default_data["pretty"][ "PRETTY_ONE_P" ] try: GUARDIAN_THREE_CHAR_P = float(data["guardian"]["GUARDIAN_THREE_CHAR_P"]) GUARDIAN_TWO_CHAR_P = float(data["guardian"]["GUARDIAN_TWO_CHAR_P"]) GUARDIAN_ONE_CHAR_P = float(data["guardian"]["GUARDIAN_ONE_CHAR_P"]) GUARDIAN_THREE_CHAR_UP_P = float( data["guardian"]["GUARDIAN_THREE_CHAR_UP_P"] ) GUARDIAN_THREE_CHAR_OTHER_P = float( data["guardian"]["GUARDIAN_THREE_CHAR_OTHER_P"] ) GUARDIAN_EXCLUSIVE_ARMS_P = float( data["guardian"]["GUARDIAN_EXCLUSIVE_ARMS_P"] ) GUARDIAN_FIVE_ARMS_P = float(data["guardian"]["GUARDIAN_FIVE_ARMS_P"]) GUARDIAN_FOUR_ARMS_P = float(data["guardian"]["GUARDIAN_FOUR_ARMS_P"]) GUARDIAN_THREE_ARMS_P = float(data["guardian"]["GUARDIAN_THREE_ARMS_P"]) GUARDIAN_TWO_ARMS_P = float(data["guardian"]["GUARDIAN_TWO_ARMS_P"]) GUARDIAN_EXCLUSIVE_ARMS_UP_P = float( data["guardian"]["GUARDIAN_EXCLUSIVE_ARMS_UP_P"] ) GUARDIAN_EXCLUSIVE_ARMS_OTHER_P = float( data["guardian"]["GUARDIAN_EXCLUSIVE_ARMS_OTHER_P"] ) except KeyError: data["guardian"] = {} data["guardian"]["GUARDIAN_THREE_CHAR_P"] = config_default_data["guardian"][ "GUARDIAN_THREE_CHAR_P" ] data["guardian"]["GUARDIAN_TWO_CHAR_P"] = config_default_data["guardian"][ "GUARDIAN_TWO_CHAR_P" ] data["guardian"]["GUARDIAN_ONE_CHAR_P"] = config_default_data["guardian"][ "GUARDIAN_ONE_CHAR_P" ] data["guardian"]["GUARDIAN_THREE_CHAR_UP_P"] = config_default_data[ "guardian" ]["GUARDIAN_THREE_CHAR_UP_P"] data["guardian"]["GUARDIAN_THREE_CHAR_OTHER_P"] = config_default_data[ "guardian" ]["GUARDIAN_THREE_CHAR_OTHER_P"] data["guardian"]["GUARDIAN_EXCLUSIVE_ARMS_P"] = config_default_data[ "guardian" ]["GUARDIAN_EXCLUSIVE_ARMS_P"] data["guardian"]["GUARDIAN_FIVE_ARMS_P"] = config_default_data["guardian"][ "GUARDIAN_FIVE_ARMS_P" ] data["guardian"]["GUARDIAN_FOUR_ARMS_P"] = config_default_data["guardian"][ "GUARDIAN_FOUR_ARMS_P" ] data["guardian"]["GUARDIAN_THREE_ARMS_P"] = config_default_data["guardian"][ "GUARDIAN_THREE_ARMS_P" ] data["guardian"]["GUARDIAN_TWO_ARMS_P"] = config_default_data["guardian"][ "GUARDIAN_TWO_ARMS_P" ] data["guardian"]["GUARDIAN_EXCLUSIVE_ARMS_UP_P"] = config_default_data[ "guardian" ]["GUARDIAN_EXCLUSIVE_ARMS_UP_P"] data["guardian"]["GUARDIAN_EXCLUSIVE_ARMS_OTHER_P"] = config_default_data[ "guardian" ]["GUARDIAN_EXCLUSIVE_ARMS_OTHER_P"] try: PCR_THREE_P = float(data["pcr"]["PCR_THREE_P"]) PCR_TWO_P = float(data["pcr"]["PCR_TWO_P"]) PCR_ONE_P = float(data["pcr"]["PCR_ONE_P"]) except KeyError: data["pcr"] = {} data["pcr"]["PCR_THREE_P"] = config_default_data["pcr"]["PCR_THREE_P"] data["pcr"]["PCR_TWO_P"] = config_default_data["pcr"]["PCR_TWO_P"] data["pcr"]["PCR_ONE_P"] = config_default_data["pcr"]["PCR_ONE_P"] try: AZUR_FIVE_P = float(data["azur"]["AZUR_FIVE_P"]) AZUR_FOUR_P = float(data["azur"]["AZUR_FOUR_P"]) AZUR_THREE_P = float(data["azur"]["AZUR_THREE_P"]) AZUR_TWO_P = float(data["azur"]["AZUR_TWO_P"]) AZUR_ONE_P = float(data["azur"]["AZUR_ONE_P"]) except KeyError: data["azur"] = {} data["azur"]["AZUR_FIVE_P"] = config_default_data["azur"]["AZUR_FIVE_P"] data["azur"]["AZUR_FOUR_P"] = config_default_data["azur"]["AZUR_FOUR_P"] data["azur"]["AZUR_THREE_P"] = config_default_data["azur"]["AZUR_THREE_P"] data["azur"]["AZUR_TWO_P"] = config_default_data["azur"]["AZUR_TWO_P"] data["azur"]["AZUR_ONE_P"] = config_default_data["azur"]["AZUR_ONE_P"] try: FGO_SERVANT_FIVE_P = float(data["fgo"]["FGO_SERVANT_FIVE_P"]) FGO_SERVANT_FOUR_P = float(data["fgo"]["FGO_SERVANT_FOUR_P"]) FGO_SERVANT_THREE_P = float(data["fgo"]["FGO_SERVANT_THREE_P"]) FGO_CARD_FIVE_P = float(data["fgo"]["FGO_CARD_FIVE_P"]) FGO_CARD_FOUR_P = float(data["fgo"]["FGO_CARD_FOUR_P"]) FGO_CARD_THREE_P = float(data["fgo"]["FGO_CARD_THREE_P"]) except KeyError: data["fgo"] = {} data["fgo"]["FGO_SERVANT_FIVE_P"] = config_default_data["fgo"][ "FGO_SERVANT_FIVE_P" ] data["fgo"]["FGO_SERVANT_FOUR_P"] = config_default_data["fgo"][ "FGO_SERVANT_FOUR_P" ] data["fgo"]["FGO_SERVANT_THREE_P"] = config_default_data["fgo"][ "FGO_SERVANT_THREE_P" ] data["fgo"]["FGO_CARD_FIVE_P"] = config_default_data["fgo"][ "FGO_CARD_FIVE_P" ] data["fgo"]["FGO_CARD_FOUR_P"] = config_default_data["fgo"][ "FGO_CARD_FOUR_P" ] data["fgo"]["FGO_CARD_THREE_P"] = config_default_data["fgo"][ "FGO_CARD_THREE_P" ] try: ONMYOJI_SP = float(data["onmyoji"]["ONMYOJI_SP"]) ONMYOJI_SSR = float(data["onmyoji"]["ONMYOJI_SSR"]) ONMYOJI_SR = float(data["onmyoji"]["ONMYOJI_SR"]) ONMYOJI_R = float(data["onmyoji"]["ONMYOJI_R"]) except KeyError: data["onmyoji"] = {} data["onmyoji"]["ONMYOJI_SP"] = config_default_data["onmyoji"]["ONMYOJI_SP"] data["onmyoji"]["ONMYOJI_SSR"] = config_default_data["onmyoji"][ "ONMYOJI_SSR" ] data["onmyoji"]["ONMYOJI_SR"] = config_default_data["onmyoji"]["ONMYOJI_SR"] data["onmyoji"]["ONMYOJI_R"] = config_default_data["onmyoji"]["ONMYOJI_R"] json.dump( data, open(_draw_config, "w", encoding="utf8"), indent=4, ensure_ascii=False )