refactor(task): 将 PIdol 改为 IntEnum
This commit is contained in:
parent
a1401494bd
commit
724ad9f3b5
|
@ -1,13 +1,19 @@
|
||||||
import os
|
import os
|
||||||
|
import json
|
||||||
|
import shutil
|
||||||
from importlib import resources
|
from importlib import resources
|
||||||
from typing import Literal, Dict, NamedTuple, Tuple, TypeVar, Generic
|
from typing import Literal, Dict, NamedTuple, Tuple, TypeVar, Generic, Any
|
||||||
|
from typing_extensions import assert_never
|
||||||
from enum import IntEnum, Enum
|
from enum import IntEnum, Enum
|
||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
# TODO: from kotonebot import config (context) 会和 kotonebot.config 冲突
|
# TODO: from kotonebot import config (context) 会和 kotonebot.config 冲突
|
||||||
|
from kotonebot import logging
|
||||||
from kotonebot.backend.context import config
|
from kotonebot.backend.context import config
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
T = TypeVar('T')
|
T = TypeVar('T')
|
||||||
class ConfigEnum(Enum):
|
class ConfigEnum(Enum):
|
||||||
def display(self) -> str:
|
def display(self) -> str:
|
||||||
|
@ -30,86 +36,269 @@ class APShopItems(IntEnum):
|
||||||
"""回忆再生成券"""
|
"""回忆再生成券"""
|
||||||
|
|
||||||
|
|
||||||
class PIdol(Enum):
|
倉本千奈_BASE = 0
|
||||||
|
十王星南_BASE = 100
|
||||||
|
姫崎莉波_BASE = 200
|
||||||
|
月村手毬_BASE = 300
|
||||||
|
有村麻央_BASE = 400
|
||||||
|
篠泽广_BASE = 500
|
||||||
|
紫云清夏_BASE = 600
|
||||||
|
花海佑芽_BASE = 700
|
||||||
|
花海咲季_BASE = 800
|
||||||
|
葛城リーリヤ_BASE = 900
|
||||||
|
藤田ことね_BASE = 1000
|
||||||
|
|
||||||
|
class PIdol(IntEnum):
|
||||||
"""P偶像"""
|
"""P偶像"""
|
||||||
倉本千奈_Campusmode = ["倉本千奈", "Campus", "mode", "!!"]
|
倉本千奈_Campusmode = 倉本千奈_BASE + 0
|
||||||
倉本千奈_WonderScale = ["倉本千奈", "Wonder", "Scale"]
|
倉本千奈_WonderScale = 倉本千奈_BASE + 1
|
||||||
倉本千奈_ようこそ初星温泉 = ["倉本千奈", "ようこそ初星温泉"]
|
倉本千奈_ようこそ初星温泉 = 倉本千奈_BASE + 2
|
||||||
倉本千奈_仮装狂騒曲 = ["倉本千奈", "仮装狂騒曲"]
|
倉本千奈_仮装狂騒曲 = 倉本千奈_BASE + 3
|
||||||
倉本千奈_初心 = ["倉本千奈", "初心"]
|
倉本千奈_初心 = 倉本千奈_BASE + 4
|
||||||
倉本千奈_学園生活 = ["倉本千奈", "学園生活"]
|
倉本千奈_学園生活 = 倉本千奈_BASE + 5
|
||||||
倉本千奈_日々_発見的ステップ = ["倉本千奈", "日々、発見的ステップ!"]
|
倉本千奈_日々_発見的ステップ = 倉本千奈_BASE + 6
|
||||||
倉本千奈_胸を張って一歩ずつ = ["倉本千奈", "胸を張って一歩ずつ"]
|
倉本千奈_胸を張って一歩ずつ = 倉本千奈_BASE + 7
|
||||||
十王星南_Campusmode = ["十王星南", "Campus", "mode", "!!"]
|
|
||||||
十王星南_一番星 = ["十王星南", "一番星"]
|
十王星南_Campusmode = 十王星南_BASE + 0
|
||||||
十王星南_学園生活 = ["十王星南", "学園生活"]
|
十王星南_一番星 = 十王星南_BASE + 1
|
||||||
十王星南_小さな野望 = ["十王星南", "小さな野望"]
|
十王星南_学園生活 = 十王星南_BASE + 2
|
||||||
姫崎莉波_clumsytrick = ["姫崎莉波", "clumsy", "trick"]
|
十王星南_小さな野望 = 十王星南_BASE + 3
|
||||||
姫崎莉波_私らしさのはじまり = ["姫崎莉波", "『私らしさ』のはじまり"]
|
|
||||||
姫崎莉波_キミとセミブルー = ["姫崎莉波", "キミとセミブルー"]
|
姫崎莉波_clumsytrick = 姫崎莉波_BASE + 0
|
||||||
姫崎莉波_Campusmode = ["姫崎莉波", "Campus", "mode", "!!"]
|
姫崎莉波_私らしさのはじまり = 姫崎莉波_BASE + 1
|
||||||
姫崎莉波_LUV = ["姫崎莉波", "L.U.V"]
|
姫崎莉波_キミとセミブルー = 姫崎莉波_BASE + 2
|
||||||
姫崎莉波_ようこそ初星温泉 = ["姫崎莉波", "ようこそ初星温泉"]
|
姫崎莉波_Campusmode = 姫崎莉波_BASE + 3
|
||||||
姫崎莉波_ハッピーミルフィーユ = ["姫崎莉波", "ハッピーミルフィーユ"]
|
姫崎莉波_LUV = 姫崎莉波_BASE + 4
|
||||||
姫崎莉波_初心 = ["姫崎莉波", "初心"]
|
姫崎莉波_ようこそ初星温泉 = 姫崎莉波_BASE + 5
|
||||||
姫崎莉波_学園生活 = ["姫崎莉波", "学園生活"]
|
姫崎莉波_ハッピーミルフィーユ = 姫崎莉波_BASE + 6
|
||||||
月村手毬_Lunasaymaybe = ["月村手毬", "Luna", "say", "maybe"]
|
姫崎莉波_初心 = 姫崎莉波_BASE + 7
|
||||||
月村手毬_一匹狼 = ["月村手毬", "一匹狼"]
|
姫崎莉波_学園生活 = 姫崎莉波_BASE + 8
|
||||||
月村手毬_Campusmode = ["月村手毬", "Campus mode!!"]
|
|
||||||
月村手毬_アイヴイ = ["月村手毬", "アイヴイ"]
|
月村手毬_Lunasaymaybe = 月村手毬_BASE + 0
|
||||||
月村手毬_初声 = ["月村手毬", "初声"]
|
月村手毬_一匹狼 = 月村手毬_BASE + 1
|
||||||
月村手毬_学園生活 = ["月村手毬", "学園生活"]
|
月村手毬_Campusmode = 月村手毬_BASE + 2
|
||||||
月村手毬_仮装狂騒曲 = ["月村手毬", "仮装狂騒曲"]
|
月村手毬_アイヴイ = 月村手毬_BASE + 3
|
||||||
有村麻央_Fluorite = ["有村麻央", "Fluorite"]
|
月村手毬_初声 = 月村手毬_BASE + 4
|
||||||
有村麻央_はじまりはカッコよく = ["有村麻央", "はじまりはカッコよく"]
|
月村手毬_学園生活 = 月村手毬_BASE + 5
|
||||||
有村麻央_Campusmode = ["有村麻央", "Campus", "mode", "!!"]
|
月村手毬_仮装狂騒曲 = 月村手毬_BASE + 6
|
||||||
有村麻央_FeelJewelDream = ["有村麻央", "Feel", "Jewel", "Dream"]
|
|
||||||
有村麻央_キミとセミブルー = ["有村麻央", "キミとセミブルー"]
|
有村麻央_Fluorite = 有村麻央_BASE + 0
|
||||||
有村麻央_初恋 = ["有村麻央", "初恋"]
|
有村麻央_はじまりはカッコよく = 有村麻央_BASE + 1
|
||||||
有村麻央_学園生活 = ["有村麻央", "学園生活"]
|
有村麻央_Campusmode = 有村麻央_BASE + 2
|
||||||
篠泽广_コントラスト = ["篠泽广", "コントラスト"]
|
有村麻央_FeelJewelDream = 有村麻央_BASE + 3
|
||||||
篠泽广_一番向いていないこと = ["篠泽广", "一番向いていないこと"]
|
有村麻央_キミとセミブルー = 有村麻央_BASE + 4
|
||||||
篠泽广_光景 = ["篠泽广", "光景"]
|
有村麻央_初恋 = 有村麻央_BASE + 5
|
||||||
篠泽广_Campusmode = ["篠泽广", "Campus", "mode", "!!"]
|
有村麻央_学園生活 = 有村麻央_BASE + 6
|
||||||
篠泽广_仮装狂騒曲 = ["篠泽广", "仮装狂騒曲"]
|
|
||||||
篠泽广_ハッピーミルフィーユ = ["篠泽广", "ハッピーミルフィーユ"]
|
篠泽广_コントラスト = 篠泽广_BASE + 0
|
||||||
篠泽广_初恋 = ["篠泽广", "初恋"]
|
篠泽广_一番向いていないこと = 篠泽广_BASE + 1
|
||||||
篠泽广_学園生活 = ["篠泽广", "学園生活"]
|
篠泽广_光景 = 篠泽广_BASE + 2
|
||||||
紫云清夏_TameLieOneStep = ["紫云清夏", "Tame", "Lie", "One", "Step"]
|
篠泽广_Campusmode = 篠泽广_BASE + 3
|
||||||
紫云清夏_カクシタワタシ = ["紫云清夏", "カクシタワタシ"]
|
篠泽广_仮装狂騒曲 = 篠泽广_BASE + 4
|
||||||
紫云清夏_夢へのリスタート = ["紫云清夏", "夢へのリスタート"]
|
篠泽广_ハッピーミルフィーユ = 篠泽广_BASE + 5
|
||||||
紫云清夏_Campusmode = ["紫云清夏", "Campus", "mode", "!!"]
|
篠泽广_初恋 = 篠泽广_BASE + 6
|
||||||
紫云清夏_キミとセミブルー = ["紫云清夏", "キミとセミブルー"]
|
篠泽广_学園生活 = 篠泽广_BASE + 7
|
||||||
紫云清夏_初恋 = ["紫云清夏", "初恋"]
|
|
||||||
紫云清夏_学園生活 = ["紫云清夏", "学園生活"]
|
紫云清夏_TameLieOneStep = 紫云清夏_BASE + 0
|
||||||
花海佑芽_WhiteNightWhiteWish = ["花海佑芽", "White", "Night", "Wish", "!"]
|
紫云清夏_カクシタワタシ = 紫云清夏_BASE + 1
|
||||||
花海佑芽_学園生活 = ["花海佑芽", "学園生活"]
|
紫云清夏_夢へのリスタート = 紫云清夏_BASE + 2
|
||||||
花海佑芽_Campusmode = ["花海佑芽", "Campus", "mode", "!!"]
|
紫云清夏_Campusmode = 紫云清夏_BASE + 3
|
||||||
花海佑芽_TheRollingRiceball = ["花海佑芽", "The", "Rolling", "Riceball"]
|
紫云清夏_キミとセミブルー = 紫云清夏_BASE + 4
|
||||||
花海佑芽_アイドル_はじめっ = ["花海佑芽", "アイドル、はじめっ!"]
|
紫云清夏_初恋 = 紫云清夏_BASE + 5
|
||||||
花海咲季_BoomBoomPow = ["花海咲季", "Boom", "Boom", "Pow"]
|
紫云清夏_学園生活 = 紫云清夏_BASE + 6
|
||||||
花海咲季_Campusmode = ["花海咲季", "Campus", "mode", "!!"]
|
|
||||||
花海咲季_FightingMyWay = ["花海咲季", "Fighting", "My", "Way"]
|
花海佑芽_WhiteNightWhiteWish = 花海佑芽_BASE + 0
|
||||||
花海咲季_わたしが一番 = ["花海咲季", "わたしが一番!"]
|
花海佑芽_学園生活 = 花海佑芽_BASE + 1
|
||||||
花海咲季_冠菊 = ["花海咲季", "冠菊"]
|
花海佑芽_Campusmode = 花海佑芽_BASE + 2
|
||||||
花海咲季_初声 = ["花海咲季", "初声"]
|
花海佑芽_TheRollingRiceball = 花海佑芽_BASE + 3
|
||||||
花海咲季_古今東西ちょちょいのちょい = ["花海咲季", "古今東西ちょちょいのちょい"]
|
花海佑芽_アイドル_はじめっ = 花海佑芽_BASE + 4
|
||||||
花海咲季_学園生活 = ["花海咲季", "学園生活"]
|
|
||||||
葛城リーリヤ_一つ踏み出した先に = ["葛城リーリヤ", "一つ踏み出した先に"]
|
花海咲季_BoomBoomPow = 花海咲季_BASE + 0
|
||||||
葛城リーリヤ_白線 = ["葛城リーリヤ", "白線"]
|
花海咲季_Campusmode = 花海咲季_BASE + 1
|
||||||
葛城リーリヤ_Campusmode = ["葛城リーリヤ", "Campus", "mode", "!!"]
|
花海咲季_FightingMyWay = 花海咲季_BASE + 2
|
||||||
葛城リーリヤ_WhiteNightWhiteWish = ["葛城リーリヤ", "White", "Night", "Wish", "!"]
|
花海咲季_わたしが一番 = 花海咲季_BASE + 3
|
||||||
葛城リーリヤ_冠菊 = ["葛城リーリヤ", "冠菊"]
|
花海咲季_冠菊 = 花海咲季_BASE + 4
|
||||||
葛城リーリヤ_初心 = ["葛城リーリヤ", "初心"]
|
花海咲季_初声 = 花海咲季_BASE + 5
|
||||||
葛城リーリヤ_学園生活 = ["葛城リーリヤ", "学園生活"]
|
花海咲季_古今東西ちょちょいのちょい = 花海咲季_BASE + 6
|
||||||
藤田ことね_カワイイ_はじめました = ["藤田ことね", "カワイイ", "はじめました"]
|
花海咲季_学園生活 = 花海咲季_BASE + 7
|
||||||
藤田ことね_世界一可愛い私 = ["藤田ことね", "世界一可愛い私"]
|
|
||||||
藤田ことね_Campusmode = ["藤田ことね", "Campus", "mode", "!!"]
|
葛城リーリヤ_一つ踏み出した先に = 葛城リーリヤ_BASE + 0
|
||||||
藤田ことね_YellowBigBang = ["藤田ことね", "Yellow", "Big", "Bang", "!"]
|
葛城リーリヤ_白線 = 葛城リーリヤ_BASE + 1
|
||||||
藤田ことね_WhiteNightWhiteWish = ["藤田ことね", "White", "Night", "Wish", "!"]
|
葛城リーリヤ_Campusmode = 葛城リーリヤ_BASE + 2
|
||||||
藤田ことね_冠菊 = ["藤田ことね", "冠菊"]
|
葛城リーリヤ_WhiteNightWhiteWish = 葛城リーリヤ_BASE + 3
|
||||||
藤田ことね_初声 = ["藤田ことね", "初声"]
|
葛城リーリヤ_冠菊 = 葛城リーリヤ_BASE + 4
|
||||||
藤田ことね_学園生活 = ["藤田ことね", "学園生活"]
|
葛城リーリヤ_初心 = 葛城リーリヤ_BASE + 5
|
||||||
|
葛城リーリヤ_学園生活 = 葛城リーリヤ_BASE + 6
|
||||||
|
|
||||||
|
藤田ことね_カワイイ_はじめました = 藤田ことね_BASE + 0
|
||||||
|
藤田ことね_世界一可愛い私 = 藤田ことね_BASE + 1
|
||||||
|
藤田ことね_Campusmode = 藤田ことね_BASE + 2
|
||||||
|
藤田ことね_YellowBigBang = 藤田ことね_BASE + 3
|
||||||
|
藤田ことね_WhiteNightWhiteWish = 藤田ことね_BASE + 4
|
||||||
|
藤田ことね_冠菊 = 藤田ことね_BASE + 5
|
||||||
|
藤田ことね_初声 = 藤田ことね_BASE + 6
|
||||||
|
藤田ことね_学園生活 = 藤田ことね_BASE + 7
|
||||||
|
|
||||||
|
def to_title(self) -> list[str]:
|
||||||
|
match self:
|
||||||
|
case PIdol.倉本千奈_Campusmode:
|
||||||
|
return ["倉本千奈", "Campus", "mode", "!!"]
|
||||||
|
case PIdol.倉本千奈_WonderScale:
|
||||||
|
return ["倉本千奈", "Wonder", "Scale"]
|
||||||
|
case PIdol.倉本千奈_ようこそ初星温泉:
|
||||||
|
return ["倉本千奈", "ようこそ初星温泉"]
|
||||||
|
case PIdol.倉本千奈_仮装狂騒曲:
|
||||||
|
return ["倉本千奈", "仮装狂騒曲"]
|
||||||
|
case PIdol.倉本千奈_初心:
|
||||||
|
return ["倉本千奈", "初心"]
|
||||||
|
case PIdol.倉本千奈_学園生活:
|
||||||
|
return ["倉本千奈", "学園生活"]
|
||||||
|
case PIdol.倉本千奈_日々_発見的ステップ:
|
||||||
|
return ["倉本千奈", "日々、発見的ステップ!"]
|
||||||
|
case PIdol.倉本千奈_胸を張って一歩ずつ:
|
||||||
|
return ["倉本千奈", "胸を張って一歩ずつ"]
|
||||||
|
case PIdol.十王星南_Campusmode:
|
||||||
|
return ["十王星南", "Campus", "mode", "!!"]
|
||||||
|
case PIdol.十王星南_一番星:
|
||||||
|
return ["十王星南", "一番星"]
|
||||||
|
case PIdol.十王星南_学園生活:
|
||||||
|
return ["十王星南", "学園生活"]
|
||||||
|
case PIdol.十王星南_小さな野望:
|
||||||
|
return ["十王星南", "小さな野望"]
|
||||||
|
case PIdol.姫崎莉波_clumsytrick:
|
||||||
|
return ["姫崎莉波", "clumsy", "trick"]
|
||||||
|
case PIdol.姫崎莉波_私らしさのはじまり:
|
||||||
|
return ["姫崎莉波", "『私らしさ』のはじまり"]
|
||||||
|
case PIdol.姫崎莉波_キミとセミブルー:
|
||||||
|
return ["姫崎莉波", "キミとセミブルー"]
|
||||||
|
case PIdol.姫崎莉波_Campusmode:
|
||||||
|
return ["姫崎莉波", "Campus", "mode", "!!"]
|
||||||
|
case PIdol.姫崎莉波_LUV:
|
||||||
|
return ["姫崎莉波", "L.U.V"]
|
||||||
|
case PIdol.姫崎莉波_ようこそ初星温泉:
|
||||||
|
return ["姫崎莉波", "ようこそ初星温泉"]
|
||||||
|
case PIdol.姫崎莉波_ハッピーミルフィーユ:
|
||||||
|
return ["姫崎莉波", "ハッピーミルフィーユ"]
|
||||||
|
case PIdol.姫崎莉波_初心:
|
||||||
|
return ["姫崎莉波", "初心"]
|
||||||
|
case PIdol.姫崎莉波_学園生活:
|
||||||
|
return ["姫崎莉波", "学園生活"]
|
||||||
|
case PIdol.月村手毬_Lunasaymaybe:
|
||||||
|
return ["月村手毬", "Luna", "say", "maybe"]
|
||||||
|
case PIdol.月村手毬_一匹狼:
|
||||||
|
return ["月村手毬", "一匹狼"]
|
||||||
|
case PIdol.月村手毬_Campusmode:
|
||||||
|
return ["月村手毬", "Campus mode!!"]
|
||||||
|
case PIdol.月村手毬_アイヴイ:
|
||||||
|
return ["月村手毬", "アイヴイ"]
|
||||||
|
case PIdol.月村手毬_初声:
|
||||||
|
return ["月村手毬", "初声"]
|
||||||
|
case PIdol.月村手毬_学園生活:
|
||||||
|
return ["月村手毬", "学園生活"]
|
||||||
|
case PIdol.月村手毬_仮装狂騒曲:
|
||||||
|
return ["月村手毬", "仮装狂騒曲"]
|
||||||
|
case PIdol.有村麻央_Fluorite:
|
||||||
|
return ["有村麻央", "Fluorite"]
|
||||||
|
case PIdol.有村麻央_はじまりはカッコよく:
|
||||||
|
return ["有村麻央", "はじまりはカッコよく"]
|
||||||
|
case PIdol.有村麻央_Campusmode:
|
||||||
|
return ["有村麻央", "Campus", "mode", "!!"]
|
||||||
|
case PIdol.有村麻央_FeelJewelDream:
|
||||||
|
return ["有村麻央", "Feel", "Jewel", "Dream"]
|
||||||
|
case PIdol.有村麻央_キミとセミブルー:
|
||||||
|
return ["有村麻央", "キミとセミブルー"]
|
||||||
|
case PIdol.有村麻央_初恋:
|
||||||
|
return ["有村麻央", "初恋"]
|
||||||
|
case PIdol.有村麻央_学園生活:
|
||||||
|
return ["有村麻央", "学園生活"]
|
||||||
|
case PIdol.篠泽广_コントラスト:
|
||||||
|
return ["篠泽广", "コントラスト"]
|
||||||
|
case PIdol.篠泽广_一番向いていないこと:
|
||||||
|
return ["篠泽广", "一番向いていないこと"]
|
||||||
|
case PIdol.篠泽广_光景:
|
||||||
|
return ["篠泽广", "光景"]
|
||||||
|
case PIdol.篠泽广_Campusmode:
|
||||||
|
return ["篠泽广", "Campus", "mode", "!!"]
|
||||||
|
case PIdol.篠泽广_仮装狂騒曲:
|
||||||
|
return ["篠泽广", "仮装狂騒曲"]
|
||||||
|
case PIdol.篠泽广_ハッピーミルフィーユ:
|
||||||
|
return ["篠泽广", "ハッピーミルフィーユ"]
|
||||||
|
case PIdol.篠泽广_初恋:
|
||||||
|
return ["篠泽广", "初恋"]
|
||||||
|
case PIdol.篠泽广_学園生活:
|
||||||
|
return ["篠泽广", "学園生活"]
|
||||||
|
case PIdol.紫云清夏_TameLieOneStep:
|
||||||
|
return ["紫云清夏", "Tame", "Lie", "One", "Step"]
|
||||||
|
case PIdol.紫云清夏_カクシタワタシ:
|
||||||
|
return ["紫云清夏", "カクシタワタシ"]
|
||||||
|
case PIdol.紫云清夏_夢へのリスタート:
|
||||||
|
return ["紫云清夏", "夢へのリスタート"]
|
||||||
|
case PIdol.紫云清夏_Campusmode:
|
||||||
|
return ["紫云清夏", "Campus", "mode", "!!"]
|
||||||
|
case PIdol.紫云清夏_キミとセミブルー:
|
||||||
|
return ["紫云清夏", "キミとセミブルー"]
|
||||||
|
case PIdol.紫云清夏_初恋:
|
||||||
|
return ["紫云清夏", "初恋"]
|
||||||
|
case PIdol.紫云清夏_学園生活:
|
||||||
|
return ["紫云清夏", "学園生活"]
|
||||||
|
case PIdol.花海佑芽_WhiteNightWhiteWish:
|
||||||
|
return ["花海佑芽", "White", "Night", "Wish", "!"]
|
||||||
|
case PIdol.花海佑芽_学園生活:
|
||||||
|
return ["花海佑芽", "学園生活"]
|
||||||
|
case PIdol.花海佑芽_Campusmode:
|
||||||
|
return ["花海佑芽", "Campus", "mode", "!!"]
|
||||||
|
case PIdol.花海佑芽_TheRollingRiceball:
|
||||||
|
return ["花海佑芽", "The", "Rolling", "Riceball"]
|
||||||
|
case PIdol.花海佑芽_アイドル_はじめっ:
|
||||||
|
return ["花海佑芽", "アイドル、はじめっ!"]
|
||||||
|
case PIdol.花海咲季_BoomBoomPow:
|
||||||
|
return ["花海咲季", "Boom", "Boom", "Pow"]
|
||||||
|
case PIdol.花海咲季_Campusmode:
|
||||||
|
return ["花海咲季", "Campus", "mode", "!!"]
|
||||||
|
case PIdol.花海咲季_FightingMyWay:
|
||||||
|
return ["花海咲季", "Fighting", "My", "Way"]
|
||||||
|
case PIdol.花海咲季_わたしが一番:
|
||||||
|
return ["花海咲季", "わたしが一番!"]
|
||||||
|
case PIdol.花海咲季_冠菊:
|
||||||
|
return ["花海咲季", "冠菊"]
|
||||||
|
case PIdol.花海咲季_初声:
|
||||||
|
return ["花海咲季", "初声"]
|
||||||
|
case PIdol.花海咲季_古今東西ちょちょいのちょい:
|
||||||
|
return ["花海咲季", "古今東西ちょちょいのちょい"]
|
||||||
|
case PIdol.花海咲季_学園生活:
|
||||||
|
return ["花海咲季", "学園生活"]
|
||||||
|
case PIdol.葛城リーリヤ_一つ踏み出した先に:
|
||||||
|
return ["葛城リーリヤ", "一つ踏み出した先に"]
|
||||||
|
case PIdol.葛城リーリヤ_白線:
|
||||||
|
return ["葛城リーリヤ", "白線"]
|
||||||
|
case PIdol.葛城リーリヤ_Campusmode:
|
||||||
|
return ["葛城リーリヤ", "Campus", "mode", "!!"]
|
||||||
|
case PIdol.葛城リーリヤ_WhiteNightWhiteWish:
|
||||||
|
return ["葛城リーリヤ", "White", "Night", "Wish", "!"]
|
||||||
|
case PIdol.葛城リーリヤ_冠菊:
|
||||||
|
return ["葛城リーリヤ", "冠菊"]
|
||||||
|
case PIdol.葛城リーリヤ_初心:
|
||||||
|
return ["葛城リーリヤ", "初心"]
|
||||||
|
case PIdol.葛城リーリヤ_学園生活:
|
||||||
|
return ["葛城リーリヤ", "学園生活"]
|
||||||
|
case PIdol.藤田ことね_カワイイ_はじめました:
|
||||||
|
return ["藤田ことね", "カワイイ", "はじめました"]
|
||||||
|
case PIdol.藤田ことね_世界一可愛い私:
|
||||||
|
return ["藤田ことね", "世界一可愛い私"]
|
||||||
|
case PIdol.藤田ことね_Campusmode:
|
||||||
|
return ["藤田ことね", "Campus", "mode", "!!"]
|
||||||
|
case PIdol.藤田ことね_YellowBigBang:
|
||||||
|
return ["藤田ことね", "Yellow", "Big", "Bang", "!"]
|
||||||
|
case PIdol.藤田ことね_WhiteNightWhiteWish:
|
||||||
|
return ["藤田ことね", "White", "Night", "Wish", "!"]
|
||||||
|
case PIdol.藤田ことね_冠菊:
|
||||||
|
return ["藤田ことね", "冠菊"]
|
||||||
|
case PIdol.藤田ことね_初声:
|
||||||
|
return ["藤田ことね", "初声"]
|
||||||
|
case PIdol.藤田ことね_学園生活:
|
||||||
|
return ["藤田ことね", "学園生活"]
|
||||||
|
case _:
|
||||||
|
assert_never(self)
|
||||||
|
|
||||||
class DailyMoneyShopItems(IntEnum):
|
class DailyMoneyShopItems(IntEnum):
|
||||||
"""日常商店物品"""
|
"""日常商店物品"""
|
||||||
|
@ -167,33 +356,57 @@ class DailyMoneyShopItems(IntEnum):
|
||||||
@classmethod
|
@classmethod
|
||||||
def to_ui_text(cls, item: "DailyMoneyShopItems") -> str:
|
def to_ui_text(cls, item: "DailyMoneyShopItems") -> str:
|
||||||
"""获取枚举值对应的UI显示文本"""
|
"""获取枚举值对应的UI显示文本"""
|
||||||
MAP = {
|
match item:
|
||||||
cls.Recommendations: "所有推荐商品",
|
case cls.Recommendations:
|
||||||
cls.LessonNote: "课程笔记",
|
return "所有推荐商品"
|
||||||
cls.VeteranNote: "老手笔记",
|
case cls.LessonNote:
|
||||||
cls.SupportEnhancementPt: "支援强化点数",
|
return "课程笔记"
|
||||||
cls.SenseNoteVocal: "感性笔记(声乐)",
|
case cls.VeteranNote:
|
||||||
cls.SenseNoteDance: "感性笔记(舞蹈)",
|
return "老手笔记"
|
||||||
cls.SenseNoteVisual: "感性笔记(形象)",
|
case cls.SupportEnhancementPt:
|
||||||
cls.LogicNoteVocal: "理性笔记(声乐)",
|
return "支援强化点数"
|
||||||
cls.LogicNoteDance: "理性笔记(舞蹈)",
|
case cls.SenseNoteVocal:
|
||||||
cls.LogicNoteVisual: "理性笔记(形象)",
|
return "感性笔记(声乐)"
|
||||||
cls.AnomalyNoteVocal: "非凡笔记(声乐)",
|
case cls.SenseNoteDance:
|
||||||
cls.AnomalyNoteDance: "非凡笔记(舞蹈)",
|
return "感性笔记(舞蹈)"
|
||||||
cls.AnomalyNoteVisual: "非凡笔记(形象)",
|
case cls.SenseNoteVisual:
|
||||||
cls.RechallengeTicket: "重新挑战券",
|
return "感性笔记(形象)"
|
||||||
cls.RecordKey: "记录钥匙",
|
case cls.LogicNoteVocal:
|
||||||
cls.IdolPiece_倉本千奈_WonderScale: "倉本千奈 WonderScale 碎片",
|
return "理性笔记(声乐)"
|
||||||
cls.IdolPiece_篠泽广_光景: "篠泽广 光景 碎片",
|
case cls.LogicNoteDance:
|
||||||
cls.IdolPiece_紫云清夏_TameLieOneStep: "紫云清夏 Tame-Lie-One-Step 碎片",
|
return "理性笔记(舞蹈)"
|
||||||
cls.IdolPiece_葛城リーリヤ_白線: "葛城リーリヤ 白線 碎片",
|
case cls.LogicNoteVisual:
|
||||||
cls.IdolPiece_姫崎薪波_cIclumsy_trick: "姫崎薪波 cIclumsy trick 碎片",
|
return "理性笔记(形象)"
|
||||||
cls.IdolPiece_花海咲季_FightingMyWay: "花海咲季 FightingMyWay 碎片",
|
case cls.AnomalyNoteVocal:
|
||||||
cls.IdolPiece_藤田ことね_世界一可愛い私: "藤田ことね 世界一可愛い私 碎片",
|
return "非凡笔记(声乐)"
|
||||||
cls.IdolPiece_花海佑芽_TheRollingRiceball: "花海佑芽 The Rolling Riceball 碎片",
|
case cls.AnomalyNoteDance:
|
||||||
cls.IdolPiece_月村手毬_LunaSayMaybe: "月村手毬 Luna say maybe 碎片"
|
return "非凡笔记(舞蹈)"
|
||||||
}
|
case cls.AnomalyNoteVisual:
|
||||||
return MAP.get(item, str(item))
|
return "非凡笔记(形象)"
|
||||||
|
case cls.RechallengeTicket:
|
||||||
|
return "重新挑战券"
|
||||||
|
case cls.RecordKey:
|
||||||
|
return "记录钥匙"
|
||||||
|
case cls.IdolPiece_倉本千奈_WonderScale:
|
||||||
|
return "倉本千奈 WonderScale 碎片"
|
||||||
|
case cls.IdolPiece_篠泽广_光景:
|
||||||
|
return "篠泽广 光景 碎片"
|
||||||
|
case cls.IdolPiece_紫云清夏_TameLieOneStep:
|
||||||
|
return "紫云清夏 Tame-Lie-One-Step 碎片"
|
||||||
|
case cls.IdolPiece_葛城リーリヤ_白線:
|
||||||
|
return "葛城リーリヤ 白線 碎片"
|
||||||
|
case cls.IdolPiece_姫崎薪波_cIclumsy_trick:
|
||||||
|
return "姫崎薪波 cIclumsy trick 碎片"
|
||||||
|
case cls.IdolPiece_花海咲季_FightingMyWay:
|
||||||
|
return "花海咲季 FightingMyWay 碎片"
|
||||||
|
case cls.IdolPiece_藤田ことね_世界一可愛い私:
|
||||||
|
return "藤田ことね 世界一可愛い私 碎片"
|
||||||
|
case cls.IdolPiece_花海佑芽_TheRollingRiceball:
|
||||||
|
return "花海佑芽 The Rolling Riceball 碎片"
|
||||||
|
case cls.IdolPiece_月村手毬_LunaSayMaybe:
|
||||||
|
return "月村手毬 Luna say maybe 碎片"
|
||||||
|
case _:
|
||||||
|
assert_never(item)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def all(cls) -> list[tuple[str, 'DailyMoneyShopItems']]:
|
def all(cls) -> list[tuple[str, 'DailyMoneyShopItems']]:
|
||||||
|
@ -252,7 +465,7 @@ class DailyMoneyShopItems(IntEnum):
|
||||||
case DailyMoneyShopItems.IdolPiece_月村手毬_LunaSayMaybe:
|
case DailyMoneyShopItems.IdolPiece_月村手毬_LunaSayMaybe:
|
||||||
return R.Shop.IdolPiece.月村手毬_LunaSayMaybe
|
return R.Shop.IdolPiece.月村手毬_LunaSayMaybe
|
||||||
case _:
|
case _:
|
||||||
raise ValueError(f"Unknown daily shop item: {self}")
|
assert_never(self)
|
||||||
|
|
||||||
class ConfigBaseModel(BaseModel):
|
class ConfigBaseModel(BaseModel):
|
||||||
model_config = ConfigDict(use_attribute_docstrings=True)
|
model_config = ConfigDict(use_attribute_docstrings=True)
|
||||||
|
@ -468,6 +681,215 @@ def sprite_path(path: str) -> str:
|
||||||
return standalone
|
return standalone
|
||||||
return str(resources.files('kotonebot.tasks.sprites') / path)
|
return str(resources.files('kotonebot.tasks.sprites') / path)
|
||||||
|
|
||||||
|
def upgrade_config() -> str | None:
|
||||||
|
"""
|
||||||
|
升级配置文件
|
||||||
|
"""
|
||||||
|
with open('config.json', 'r', encoding='utf-8') as f:
|
||||||
|
root = json.load(f)
|
||||||
|
|
||||||
|
user_configs = root['user_configs']
|
||||||
|
old_version = root['version']
|
||||||
|
messages = []
|
||||||
|
def upgrade_user_config(version: int, user_config: dict[str, Any]) -> int:
|
||||||
|
nonlocal messages
|
||||||
|
while True:
|
||||||
|
match version:
|
||||||
|
case 1:
|
||||||
|
logger.info('Upgrading config: v1 -> v2')
|
||||||
|
user_config, msg = upgrade_v1_to_v2(user_config['options'])
|
||||||
|
messages.append(msg)
|
||||||
|
version = 2
|
||||||
|
case _:
|
||||||
|
logger.info('No config upgrade needed.')
|
||||||
|
return version
|
||||||
|
for user_config in user_configs:
|
||||||
|
new_version = upgrade_user_config(old_version, user_config)
|
||||||
|
root['version'] = new_version
|
||||||
|
|
||||||
|
with open('config.json', 'w', encoding='utf-8') as f:
|
||||||
|
json.dump(root, f, ensure_ascii=False, indent=4)
|
||||||
|
return '\n'.join(messages)
|
||||||
|
|
||||||
|
def upgrade_v1_to_v2(options: dict[str, Any]) -> tuple[dict[str, Any], str | None]:
|
||||||
|
"""
|
||||||
|
v1 -> v2 变更:
|
||||||
|
|
||||||
|
1. 将 PIdol 的枚举值改为整数
|
||||||
|
"""
|
||||||
|
msg = ''
|
||||||
|
# 转换 PIdol 的枚举值
|
||||||
|
def map_idol(idol: list[str]) -> PIdol | None:
|
||||||
|
logger.debug("Converting %s", idol)
|
||||||
|
match idol:
|
||||||
|
case ["倉本千奈", "Campus mode!!"]:
|
||||||
|
return PIdol.倉本千奈_Campusmode
|
||||||
|
case ["倉本千奈", "Wonder Scale"]:
|
||||||
|
return PIdol.倉本千奈_WonderScale
|
||||||
|
case ["倉本千奈", "ようこそ初星温泉"]:
|
||||||
|
return PIdol.倉本千奈_ようこそ初星温泉
|
||||||
|
case ["倉本千奈", "仮装狂騒曲"]:
|
||||||
|
return PIdol.倉本千奈_仮装狂騒曲
|
||||||
|
case ["倉本千奈", "初心"]:
|
||||||
|
return PIdol.倉本千奈_初心
|
||||||
|
case ["倉本千奈", "学園生活"]:
|
||||||
|
return PIdol.倉本千奈_学園生活
|
||||||
|
case ["倉本千奈", "日々、発見的ステップ!"]:
|
||||||
|
return PIdol.倉本千奈_日々_発見的ステップ
|
||||||
|
case ["倉本千奈", "胸を張って一歩ずつ"]:
|
||||||
|
return PIdol.倉本千奈_胸を張って一歩ずつ
|
||||||
|
case ["十王星南", "Campus mode!!"]:
|
||||||
|
return PIdol.十王星南_Campusmode
|
||||||
|
case ["十王星南", "一番星"]:
|
||||||
|
return PIdol.十王星南_一番星
|
||||||
|
case ["十王星南", "学園生活"]:
|
||||||
|
return PIdol.十王星南_学園生活
|
||||||
|
case ["十王星南", "小さな野望"]:
|
||||||
|
return PIdol.十王星南_小さな野望
|
||||||
|
case ["姫崎莉波", "clumsy trick"]:
|
||||||
|
return PIdol.姫崎莉波_clumsytrick
|
||||||
|
case ["姫崎莉波", "『私らしさ』のはじまり"]:
|
||||||
|
return PIdol.姫崎莉波_私らしさのはじまり
|
||||||
|
case ["姫崎莉波", "キミとセミブルー"]:
|
||||||
|
return PIdol.姫崎莉波_キミとセミブルー
|
||||||
|
case ["姫崎莉波", "Campus mode!!"]:
|
||||||
|
return PIdol.姫崎莉波_Campusmode
|
||||||
|
case ["姫崎莉波", "L.U.V"]:
|
||||||
|
return PIdol.姫崎莉波_LUV
|
||||||
|
case ["姫崎莉波", "ようこそ初星温泉"]:
|
||||||
|
return PIdol.姫崎莉波_ようこそ初星温泉
|
||||||
|
case ["姫崎莉波", "ハッピーミルフィーユ"]:
|
||||||
|
return PIdol.姫崎莉波_ハッピーミルフィーユ
|
||||||
|
case ["姫崎莉波", "初心"]:
|
||||||
|
return PIdol.姫崎莉波_初心
|
||||||
|
case ["姫崎莉波", "学園生活"]:
|
||||||
|
return PIdol.姫崎莉波_学園生活
|
||||||
|
case ["月村手毬", "Luna say maybe"]:
|
||||||
|
return PIdol.月村手毬_Lunasaymaybe
|
||||||
|
case ["月村手毬", "一匹狼"]:
|
||||||
|
return PIdol.月村手毬_一匹狼
|
||||||
|
case ["月村手毬", "Campus mode!!"]:
|
||||||
|
return PIdol.月村手毬_Campusmode
|
||||||
|
case ["月村手毬", "アイヴイ"]:
|
||||||
|
return PIdol.月村手毬_アイヴイ
|
||||||
|
case ["月村手毬", "初声"]:
|
||||||
|
return PIdol.月村手毬_初声
|
||||||
|
case ["月村手毬", "学園生活"]:
|
||||||
|
return PIdol.月村手毬_学園生活
|
||||||
|
case ["月村手毬", "仮装狂騒曲"]:
|
||||||
|
return PIdol.月村手毬_仮装狂騒曲
|
||||||
|
case ["有村麻央", "Fluorite"]:
|
||||||
|
return PIdol.有村麻央_Fluorite
|
||||||
|
case ["有村麻央", "はじまりはカッコよく"]:
|
||||||
|
return PIdol.有村麻央_はじまりはカッコよく
|
||||||
|
case ["有村麻央", "Campus mode!!"]:
|
||||||
|
return PIdol.有村麻央_Campusmode
|
||||||
|
case ["有村麻央", "Feel Jewel Dream"]:
|
||||||
|
return PIdol.有村麻央_FeelJewelDream
|
||||||
|
case ["有村麻央", "キミとセミブルー"]:
|
||||||
|
return PIdol.有村麻央_キミとセミブルー
|
||||||
|
case ["有村麻央", "初恋"]:
|
||||||
|
return PIdol.有村麻央_初恋
|
||||||
|
case ["有村麻央", "学園生活"]:
|
||||||
|
return PIdol.有村麻央_学園生活
|
||||||
|
case ["篠泽广", "コントラスト"]:
|
||||||
|
return PIdol.篠泽广_コントラスト
|
||||||
|
case ["篠泽广", "一番向いていないこと"]:
|
||||||
|
return PIdol.篠泽广_一番向いていないこと
|
||||||
|
case ["篠泽广", "光景"]:
|
||||||
|
return PIdol.篠泽广_光景
|
||||||
|
case ["篠泽广", "Campus mode!!"]:
|
||||||
|
return PIdol.篠泽广_Campusmode
|
||||||
|
case ["篠泽广", "仮装狂騒曲"]:
|
||||||
|
return PIdol.篠泽广_仮装狂騒曲
|
||||||
|
case ["篠泽广", "ハッピーミルフィーユ"]:
|
||||||
|
return PIdol.篠泽广_ハッピーミルフィーユ
|
||||||
|
case ["篠泽广", "初恋"]:
|
||||||
|
return PIdol.篠泽广_初恋
|
||||||
|
case ["篠泽广", "学園生活"]:
|
||||||
|
return PIdol.篠泽广_学園生活
|
||||||
|
case ["紫云清夏", "Tame-Lie-One-Step"]:
|
||||||
|
return PIdol.紫云清夏_TameLieOneStep
|
||||||
|
case ["紫云清夏", "カクシタワタシ"]:
|
||||||
|
return PIdol.紫云清夏_カクシタワタシ
|
||||||
|
case ["紫云清夏", "夢へのリスタート"]:
|
||||||
|
return PIdol.紫云清夏_夢へのリスタート
|
||||||
|
case ["紫云清夏", "Campus mode!!"]:
|
||||||
|
return PIdol.紫云清夏_Campusmode
|
||||||
|
case ["紫云清夏", "キミとセミブルー"]:
|
||||||
|
return PIdol.紫云清夏_キミとセミブルー
|
||||||
|
case ["紫云清夏", "初恋"]:
|
||||||
|
return PIdol.紫云清夏_初恋
|
||||||
|
case ["紫云清夏", "学園生活"]:
|
||||||
|
return PIdol.紫云清夏_学園生活
|
||||||
|
case ["花海佑芽", "White Night! White Wish!"]:
|
||||||
|
return PIdol.花海佑芽_WhiteNightWhiteWish
|
||||||
|
case ["花海佑芽", "学園生活"]:
|
||||||
|
return PIdol.花海佑芽_学園生活
|
||||||
|
case ["花海佑芽", "Campus mode!!"]:
|
||||||
|
return PIdol.花海佑芽_Campusmode
|
||||||
|
case ["花海佑芽", "The Rolling Riceball"]:
|
||||||
|
return PIdol.花海佑芽_TheRollingRiceball
|
||||||
|
case ["花海佑芽", "アイドル、はじめっ!"]:
|
||||||
|
return PIdol.花海佑芽_アイドル_はじめっ
|
||||||
|
case ["花海咲季", "Boom Boom Pow"]:
|
||||||
|
return PIdol.花海咲季_BoomBoomPow
|
||||||
|
case ["花海咲季", "Campus mode!!"]:
|
||||||
|
return PIdol.花海咲季_Campusmode
|
||||||
|
case ["花海咲季", "Fighting My Way"]:
|
||||||
|
return PIdol.花海咲季_FightingMyWay
|
||||||
|
case ["花海咲季", "わたしが一番!"]:
|
||||||
|
return PIdol.花海咲季_わたしが一番
|
||||||
|
case ["花海咲季", "冠菊"]:
|
||||||
|
return PIdol.花海咲季_冠菊
|
||||||
|
case ["花海咲季", "初声"]:
|
||||||
|
return PIdol.花海咲季_初声
|
||||||
|
case ["花海咲季", "古今東西ちょちょいのちょい"]:
|
||||||
|
return PIdol.花海咲季_古今東西ちょちょいのちょい
|
||||||
|
case ["花海咲季", "学園生活"]:
|
||||||
|
return PIdol.花海咲季_学園生活
|
||||||
|
case ["葛城リーリヤ", "一つ踏み出した先に"]:
|
||||||
|
return PIdol.葛城リーリヤ_一つ踏み出した先に
|
||||||
|
case ["葛城リーリヤ", "白線"]:
|
||||||
|
return PIdol.葛城リーリヤ_白線
|
||||||
|
case ["葛城リーリヤ", "Campus mode!!"]:
|
||||||
|
return PIdol.葛城リーリヤ_Campusmode
|
||||||
|
case ["葛城リーリヤ", "White Night! White Wish!"]:
|
||||||
|
return PIdol.葛城リーリヤ_WhiteNightWhiteWish
|
||||||
|
case ["葛城リーリヤ", "冠菊"]:
|
||||||
|
return PIdol.葛城リーリヤ_冠菊
|
||||||
|
case ["葛城リーリヤ", "初心"]:
|
||||||
|
return PIdol.葛城リーリヤ_初心
|
||||||
|
case ["葛城リーリヤ", "学園生活"]:
|
||||||
|
return PIdol.葛城リーリヤ_学園生活
|
||||||
|
case ["藤田ことね", "カワイイ", "はじめました"]:
|
||||||
|
return PIdol.藤田ことね_カワイイ_はじめました
|
||||||
|
case ["藤田ことね", "世界一可愛い私"]:
|
||||||
|
return PIdol.藤田ことね_世界一可愛い私
|
||||||
|
case ["藤田ことね", "Campus mode!!"]:
|
||||||
|
return PIdol.藤田ことね_Campusmode
|
||||||
|
case ["藤田ことね", "Yellow Big Bang!"]:
|
||||||
|
return PIdol.藤田ことね_YellowBigBang
|
||||||
|
case ["藤田ことね", "White Night! White Wish!"]:
|
||||||
|
return PIdol.藤田ことね_WhiteNightWhiteWish
|
||||||
|
case ["藤田ことね", "冠菊"]:
|
||||||
|
return PIdol.藤田ことね_冠菊
|
||||||
|
case ["藤田ことね", "初声"]:
|
||||||
|
return PIdol.藤田ことね_初声
|
||||||
|
case ["藤田ことね", "学園生活"]:
|
||||||
|
return PIdol.藤田ことね_学園生活
|
||||||
|
case _:
|
||||||
|
nonlocal msg
|
||||||
|
if msg == '':
|
||||||
|
msg = '培育设置中的以下偶像升级失败。请尝试手动添加。\n'
|
||||||
|
msg += f'{idol} 未找到\n'
|
||||||
|
return None
|
||||||
|
old_idols = options['produce']['idols']
|
||||||
|
new_idols = list(filter(lambda x: x is not None, map(map_idol, old_idols)))
|
||||||
|
options['produce']['idols'] = new_idols
|
||||||
|
shutil.copy('config.json', 'config.json.v1.json')
|
||||||
|
return options, msg
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print(PurchaseConfig.model_fields['money_refresh_on'].description)
|
print(PurchaseConfig.model_fields['money_refresh_on'].description)
|
|
@ -56,7 +56,7 @@ def select_idol(target_titles: list[str] | PIdol):
|
||||||
device.screenshot()
|
device.screenshot()
|
||||||
|
|
||||||
if isinstance(target_titles, PIdol):
|
if isinstance(target_titles, PIdol):
|
||||||
target_titles = target_titles.value
|
target_titles = target_titles.to_title()
|
||||||
_target_titles = [contains(t) for t in target_titles]
|
_target_titles = [contains(t) for t in target_titles]
|
||||||
device.screenshot()
|
device.screenshot()
|
||||||
# 定位滑动基准
|
# 定位滑动基准
|
||||||
|
@ -207,7 +207,7 @@ def do_produce(
|
||||||
device.click(image.expect_wait(R.InPurodyuusu.ButtonCancel))
|
device.click(image.expect_wait(R.InPurodyuusu.ButtonCancel))
|
||||||
return False
|
return False
|
||||||
# 1. 选择 PIdol [screenshots/produce/select_p_idol.png]
|
# 1. 选择 PIdol [screenshots/produce/select_p_idol.png]
|
||||||
select_idol(idol.value)
|
select_idol(idol.to_title())
|
||||||
device.click(image.expect_wait(R.Common.ButtonNextNoIcon))
|
device.click(image.expect_wait(R.Common.ButtonNextNoIcon))
|
||||||
# 2. 选择支援卡 自动编成 [screenshots/produce/select_support_card.png]
|
# 2. 选择支援卡 自动编成 [screenshots/produce/select_support_card.png]
|
||||||
ocr.expect_wait(contains('サポート'), rect=R.Produce.BoxStepIndicator)
|
ocr.expect_wait(contains('サポート'), rect=R.Produce.BoxStepIndicator)
|
||||||
|
|
|
@ -11,17 +11,6 @@ from typing import List, Dict, Tuple, Literal, Generator
|
||||||
import cv2
|
import cv2
|
||||||
import gradio as gr
|
import gradio as gr
|
||||||
|
|
||||||
from kotonebot.backend.context import task_registry, ContextStackVars
|
|
||||||
from kotonebot.config.manager import load_config, save_config
|
|
||||||
from kotonebot.tasks.common import (
|
|
||||||
BaseConfig, APShopItems, PurchaseConfig, ActivityFundsConfig,
|
|
||||||
PresentsConfig, AssignmentConfig, ContestConfig, ProduceConfig,
|
|
||||||
MissionRewardConfig, PIdol, DailyMoneyShopItems, ProduceAction,
|
|
||||||
RecommendCardDetectionMode, TraceConfig, StartGameConfig, StartKuyoAndGameConfig
|
|
||||||
)
|
|
||||||
from kotonebot.config.base_config import UserConfig, BackendConfig
|
|
||||||
from kotonebot.backend.bot import KotoneBot
|
|
||||||
|
|
||||||
# 初始化日志
|
# 初始化日志
|
||||||
os.makedirs('logs', exist_ok=True)
|
os.makedirs('logs', exist_ok=True)
|
||||||
log_formatter = logging.Formatter('[%(asctime)s][%(levelname)s][%(name)s] %(message)s')
|
log_formatter = logging.Formatter('[%(asctime)s][%(levelname)s][%(name)s] %(message)s')
|
||||||
|
@ -39,6 +28,21 @@ root_logger.addHandler(file_handler)
|
||||||
|
|
||||||
logging.getLogger("kotonebot").setLevel(logging.DEBUG)
|
logging.getLogger("kotonebot").setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
from kotonebot.backend.context import task_registry, ContextStackVars
|
||||||
|
from kotonebot.config.manager import load_config, save_config
|
||||||
|
from kotonebot.tasks.common import (
|
||||||
|
BaseConfig, APShopItems, PurchaseConfig, ActivityFundsConfig,
|
||||||
|
PresentsConfig, AssignmentConfig, ContestConfig, ProduceConfig,
|
||||||
|
MissionRewardConfig, PIdol, DailyMoneyShopItems, ProduceAction,
|
||||||
|
RecommendCardDetectionMode, TraceConfig, StartGameConfig, StartKuyoAndGameConfig,
|
||||||
|
upgrade_config
|
||||||
|
)
|
||||||
|
from kotonebot.config.base_config import UserConfig, BackendConfig
|
||||||
|
from kotonebot.backend.bot import KotoneBot
|
||||||
|
|
||||||
|
# 升级配置
|
||||||
|
upgrade_msg = upgrade_config()
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
def _save_bug_report(
|
def _save_bug_report(
|
||||||
|
@ -351,11 +355,12 @@ class KotoneBotUI:
|
||||||
def _create_status_tab(self) -> None:
|
def _create_status_tab(self) -> None:
|
||||||
with gr.Tab("状态"):
|
with gr.Tab("状态"):
|
||||||
gr.Markdown("## 状态")
|
gr.Markdown("## 状态")
|
||||||
progress_bar = gr.Progress()
|
|
||||||
|
|
||||||
with gr.Row():
|
with gr.Row():
|
||||||
run_btn = gr.Button("启动", scale=1)
|
run_btn = gr.Button("启动", scale=1)
|
||||||
debug_btn = gr.Button("调试", scale=1)
|
if upgrade_msg:
|
||||||
|
gr.Markdown('### 配置升级报告')
|
||||||
|
gr.Markdown(upgrade_msg)
|
||||||
gr.Markdown('脚本报错或者卡住?点击"日志"选项卡中的"一键导出报告"可以快速反馈!')
|
gr.Markdown('脚本报错或者卡住?点击"日志"选项卡中的"一键导出报告"可以快速反馈!')
|
||||||
|
|
||||||
task_status = gr.Dataframe(
|
task_status = gr.Dataframe(
|
||||||
|
|
Loading…
Reference in New Issue