Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions LittlePaimon/config/plugin/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
class MatcherInfo(BaseModel):
pm_name: str
"""命令名称"""
pm_description: Optional[str]
pm_description: Optional[str] = None
"""命令描述"""
pm_usage: Optional[str]
pm_usage: Optional[str] = None
"""命令用法"""
pm_priority: int = 99
"""命令优先级"""
Expand All @@ -21,11 +21,11 @@ class PluginInfo(BaseModel):
"""插件名称"""
module_name: str
"""插件模块名称"""
description: Optional[str]
description: Optional[str] = None
"""插件描述"""
usage: Optional[str]
usage: Optional[str] = None
"""插件用法"""
status: Optional[bool]
status: Optional[bool] = None
"""插件状态(无用项)"""
show: bool = True
"""是否展示"""
Expand Down
54 changes: 27 additions & 27 deletions LittlePaimon/database/models/player_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,35 +22,35 @@ class PlayerBaseInfo(BaseModel):
"""
玩家基础数据信息,比如神瞳数、宝箱数等
"""
activate_days: Optional[int]
activate_days: Optional[int] = None
"""活跃天数"""
achievements: Optional[int]
achievements: Optional[int] = None
"""成就数"""
abyss_floor: Optional[str]
abyss_floor: Optional[str] = None
"""深渊到达层数"""
way_point: Optional[int]
way_point: Optional[int] = None
"""传送点解锁数"""
domain_num: Optional[int]
domain_num: Optional[int] = None
"""秘境解锁数"""
anemoculus: Optional[int]
anemoculus: Optional[int] = None
"""风神瞳收集数"""
geoculus: Optional[int]
geoculus: Optional[int] = None
"""岩神瞳收集数"""
electroculus: Optional[int]
electroculus: Optional[int] = None
"""雷神瞳收集数"""
dendroculus: Optional[int]
dendroculus: Optional[int] = None
"""草神瞳收集数"""
character_num: Optional[int]
character_num: Optional[int] = None
"""角色收集数数"""
luxurious_chest: Optional[int]
luxurious_chest: Optional[int] = None
"""华丽宝箱收集数"""
precious_chest: Optional[int]
precious_chest: Optional[int] = None
"""珍贵宝箱收集数"""
exquisite_chest: Optional[int]
exquisite_chest: Optional[int] = None
"""精致宝箱收集数"""
common_chest: Optional[int]
common_chest: Optional[int] = None
"""普通宝箱收集数"""
magic_chest: Optional[int]
magic_chest: Optional[int] = None
"""奇馈宝箱收集数"""


Expand All @@ -62,32 +62,32 @@ class PlayerWorldInfo(BaseModel):
"""地区名称"""
unlock: bool
"""是否解锁"""
percent: Optional[int]
percent: Optional[int] = None
"""探索度,100%以1000显示,注意转换"""
level: Optional[int]
level: Optional[int] = None
"""声望等级"""
tree_level: Optional[int]
tree_level: Optional[int] = None
"""神樱树或忍冬之树等级"""
stone_level: Optional[int]
stone_level: Optional[int] = None
"""流明石等级"""


class PlayerWorldInfos(BaseModel):
MengDe: Optional[PlayerWorldInfo]
MengDe: Optional[PlayerWorldInfo] = None
"""蒙德"""
LiYue: Optional[PlayerWorldInfo]
LiYue: Optional[PlayerWorldInfo] = None
"""璃月"""
DaoQi: Optional[PlayerWorldInfo]
DaoQi: Optional[PlayerWorldInfo] = None
"""稻妻"""
SnowMountain: Optional[PlayerWorldInfo]
SnowMountain: Optional[PlayerWorldInfo] = None
"""龙脊雪山"""
ChasmsMaw: Optional[PlayerWorldInfo]
ChasmsMaw: Optional[PlayerWorldInfo] = None
"""层岩巨渊"""
ChasmsMawBelow: Optional[PlayerWorldInfo]
ChasmsMawBelow: Optional[PlayerWorldInfo] = None
"""层岩巨渊地下"""
Enkanomiya: Optional[PlayerWorldInfo]
Enkanomiya: Optional[PlayerWorldInfo] = None
"""渊下宫"""
Xumi: Optional[PlayerWorldInfo]
Xumi: Optional[PlayerWorldInfo] = None
"""须弥"""

def list(self):
Expand Down
7 changes: 4 additions & 3 deletions LittlePaimon/plugins/Paimon_Abyss/youchuang/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import List, Optional

from pydantic import BaseModel, validator
from pydantic import field_validator, BaseModel


class Member(BaseModel):
Expand All @@ -12,9 +12,10 @@ class Member(BaseModel):
class TeamRate(BaseModel):
rate: float
formation: List[Member]
ownerNum: Optional[int]
ownerNum: Optional[int] = None

@validator('rate', pre=True)
@field_validator('rate', mode="before")
@classmethod
def str2float(cls, v):
return float(v.replace('%', '')) / 100.0 if isinstance(v, str) else v

Expand Down
4 changes: 2 additions & 2 deletions LittlePaimon/plugins/Paimon_Gacha_Log/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@

class FiveStarItem(BaseModel):
name: str
icon: Optional[str]
icon: Optional[str] = None
count: int
type: str


class FourStarItem(BaseModel):
name: str
icon: Optional[str]
icon: Optional[str] = None
type: str
num: Dict[str, int] = {
'角色祈愿': 0,
Expand Down
4 changes: 2 additions & 2 deletions LittlePaimon/plugins/Paimon_Wiki/SereniteaPot/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
class Item(BaseModel):
id: int
name: str
icon: Optional[str]
icon: Optional[str] = None
num: int
wiki_url: Optional[str]
wiki_url: Optional[str] = None
level: int
icon_url: str
22 changes: 13 additions & 9 deletions LittlePaimon/plugins/Paimon_Wiki/genshinmap/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from enum import IntEnum
from typing import List, Tuple, Optional, NamedTuple

from pydantic import HttpUrl, BaseModel, validator
from pydantic import field_validator, HttpUrl, BaseModel


class MapID(IntEnum):
Expand Down Expand Up @@ -71,7 +71,8 @@ class Maps(BaseModel):
total_size: List[int]
padding: List[int]

@validator("slices", pre=True)
@field_validator("slices", mode="before")
@classmethod
def slices_to_list(cls, v):
urls: List[str] = []
for i in v:
Expand All @@ -87,10 +88,11 @@ class MapInfo(BaseModel):
detail: Maps
node_type: int
children: list
icon: Optional[HttpUrl]
ch_ext: Optional[str]
icon: Optional[HttpUrl] = None
ch_ext: Optional[str] = None

@validator("detail", pre=True)
@field_validator("detail", mode="before")
@classmethod
def detail_str_to_maps(cls, v):
return Maps.parse_raw(v)

Expand Down Expand Up @@ -173,15 +175,17 @@ class PageLabel(BaseModel):
map_id: int
jump_url: str
jump_type: str
center: Optional[Tuple[float, float]]
zoom: Optional[float]
center: Optional[Tuple[float, float]] = None
zoom: Optional[float] = None

@validator("center", pre=True)
@field_validator("center", mode="before")
@classmethod
def center_str_to_tuple(cls, v: str) -> Optional[Tuple[float, float]]:
if v and (splitted := v.split(",")):
return tuple(map(float, splitted))

@validator("zoom", pre=True)
@field_validator("zoom", mode="before")
@classmethod
def zoom_str_to_float(cls, v: str):
if v:
return float(v)
2 changes: 1 addition & 1 deletion LittlePaimon/plugins/star_rail_info/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class Skill(BaseModel):
name: str
level: int
max_level: int
element: Optional[Element]
element: Optional[Element] = None
type: SkillType
type_text: str
effect: str
Expand Down
7 changes: 3 additions & 4 deletions LittlePaimon/utils/scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from nonebot import get_driver
from nonebot.log import LoguruHandler, logger
from pydantic import Field, BaseSettings
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict


class Config(BaseSettings):
Expand All @@ -12,9 +13,7 @@ class Config(BaseSettings):
apscheduler_config: dict = Field(
default_factory=lambda: {"apscheduler.timezone": "Asia/Shanghai"}
)

class Config:
extra = "ignore"
model_config = SettingsConfigDict(extra="ignore")


driver = get_driver()
Expand Down
2 changes: 1 addition & 1 deletion LittlePaimon/utils/typing.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import re
from typing import Literal, List

from pydantic import BaseModel, parse_raw_as
from pydantic.v1 import BaseModel, parse_raw_as

try:
import ujson as json
Expand Down
10 changes: 5 additions & 5 deletions LittlePaimon/web/api/cookie.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@


class BindCookie(BaseModel):
id: Optional[int]
user_id: Optional[int]
uid: Optional[int]
mys_id: Optional[int]
id: Optional[int] = None
user_id: Optional[int] = None
uid: Optional[int] = None
mys_id: Optional[int] = None
cookie: str
stoken: Optional[str]
stoken: Optional[str] = None



Expand Down