mirror of
https://github.com/Shu-Ying/main_plugin_farm.git
synced 2026-10-29 13:40:00 +08:00
add # 新增种子商店界面
fixed # 修复数据库目录错误的BUG
This commit is contained in:
@@ -16,6 +16,7 @@ from zhenxun.utils.platform import PlatformUtils
|
||||
|
||||
from .runtime import COMMANDS, Runtime
|
||||
from .data_paths import data_directories
|
||||
from .config_migration import migrate_config
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
driver = get_driver()
|
||||
@@ -30,7 +31,14 @@ runtime = Runtime(
|
||||
font_dir=FONT_PATH,
|
||||
legacy_data_dir=legacy_data_dir,
|
||||
)
|
||||
driver.on_startup(runtime.start)
|
||||
async def start_runtime():
|
||||
from zhenxun.configs.config import Config
|
||||
|
||||
migrate_config(Config, __package__.split(".")[-1])
|
||||
await runtime.start()
|
||||
|
||||
|
||||
driver.on_startup(start_runtime)
|
||||
driver.on_shutdown(runtime.close)
|
||||
_avatars = {}
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
"""仅清理农场已废弃配置,保存备份并同步网页配置数据。"""
|
||||
|
||||
import logging
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
OBSOLETE_KEYS = (
|
||||
"绘制农场清晰度", "动态背景", "签到图片样式", "兑换倍数",
|
||||
"点券兑换倍数", "手续费", "服务地址",
|
||||
)
|
||||
|
||||
|
||||
def migrate_config(manager, module):
|
||||
group = manager.get(module)
|
||||
simple = manager._simple_data.get(module, {})
|
||||
removed = [key for key in OBSOLETE_KEYS
|
||||
if key in group.configs or key in simple]
|
||||
if not removed:
|
||||
return
|
||||
for source in (manager.file, manager._simple_file):
|
||||
source = Path(source)
|
||||
backup = source.with_name(source.name + ".farm-v1.bak")
|
||||
if source.exists() and not backup.exists():
|
||||
shutil.copy2(source, backup)
|
||||
for key in removed:
|
||||
group.configs.pop(key, None)
|
||||
simple.pop(key, None)
|
||||
manager.save(save_simple_data=True)
|
||||
logging.getLogger(__name__).info(
|
||||
"farm config migration module=%s removed_keys=%s", module, removed,
|
||||
)
|
||||
@@ -12,6 +12,7 @@ from ._vendor.farm_core.storage import SCHEMA_VERSION
|
||||
from ._vendor.farm_core.presentation import receipt_text, snapshot_text
|
||||
from ._vendor.farm_render import FarmRenderer, RenderOptions, RenderService
|
||||
from ._vendor.farm_render.seasons import season_for
|
||||
from ._vendor.farm_render.shop import shop_page
|
||||
from .data_paths import prepare_directory
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -167,17 +168,29 @@ class Runtime:
|
||||
return HELP
|
||||
if action == "shop":
|
||||
page = int(args[0]) if args else 1
|
||||
if not 1 <= page <= 100 or len(args) > 1:
|
||||
if len(args) > 1:
|
||||
raise ValueError()
|
||||
plants = sorted(
|
||||
(p for p in self.service.catalogue if p.buyable),
|
||||
key=lambda p: p.plant_id,
|
||||
)
|
||||
chunk = plants[(page-1)*12:page*12]
|
||||
return "种子商店 " + str(page) + "页\n" + "\n".join(
|
||||
f"{p.name}(#{p.plant_id}):"
|
||||
f"{p.cost}{'点券' if p.is_vip else '农场币'}"
|
||||
f" / 等级{p.level}" for p in chunk
|
||||
try:
|
||||
chunk, pages = shop_page(self.service.catalogue, page)
|
||||
except ValueError:
|
||||
return '页码无效,请发送:种子商店 1'
|
||||
if self.rendering:
|
||||
account = None
|
||||
try:
|
||||
account = (await self.service.snapshot(who)).account
|
||||
except FarmError as error:
|
||||
if error.code != 'not_registered':
|
||||
raise
|
||||
return await self.rendering.seed_shop(
|
||||
chunk, account, page, pages,
|
||||
)
|
||||
return f'种子商店 第{page}/{pages}页\n' + '\n'.join(
|
||||
f'{p.name}(#{p.plant_id}):'
|
||||
f'{p.cost}{"点券" if p.is_vip else "农场币"}'
|
||||
f' / 等级{p.level}' for p in chunk
|
||||
) + (
|
||||
'\n购买种子 #编号 数量 或 购买种子 种子名 数量'
|
||||
+ (f'\n下一页:种子商店 {page+1}' if page < pages else '')
|
||||
)
|
||||
if action == "inventory":
|
||||
if args:
|
||||
|
||||
Reference in New Issue
Block a user