refactor: restructure plugins per MTSS standard, consolidate assets to res/
Per docs/plugin-audit-report.md (plugins normalized to Trigger(handlers) → Service(services) → Model(repository/models) + utils): - Split monolithic __init__.py into handlers/services/utils across dailywife, deer_pipe, dice, galgame_card, helldivers_tools, huoziyinshua, learning_chat, makeaquote, mc_server_status, ncm_saying, picfinder_take, picstatus, random_jm_code, regif, steam_info, video_analysis, group_tools - Move static assets under res/: deer_pipe font/img, makeaquote font, helldivers img/templates, huoziyinshua HuoZiYinShua - Add config.py + register_config_items to ncm_saying, random_jm_code, group_tools; learning_chat unified config bridge - Remove deprecated: voice_trans plugin, bf_bot/test.py, dead code in dailywife/deer_pipe, empty dirs, debug scripts under helldivers temp - Disable brash_general_supercredits_tools (stub comment only) - bot.py: optional stdout/stderr redirect to log file for Web log viewer, force ANSI colorize on non-TTY sinks - Move runtime data (jm_code.json) out of plugin dir into hexi/data - Docs: plugin-audit-report.md; README reflects removed plugins Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
import os
|
||||
import random
|
||||
from nonebot import logger
|
||||
from ..utils.equipment_renderer import render_equipment_card
|
||||
from .equipment_store import list_stratagems
|
||||
|
||||
|
||||
basic_path = os.path.dirname(os.path.dirname(__file__))
|
||||
save_path = os.path.join(basic_path, "temp")
|
||||
img_path = os.path.join(basic_path, "res", "img")
|
||||
data_path = os.path.join(basic_path, "data")
|
||||
|
||||
|
||||
async def get_random_equipment(count):
|
||||
data = list_stratagems()
|
||||
indices = select_random_equipment(len(data), count)
|
||||
selected_equipment = [data[i] for i in indices]
|
||||
|
||||
return await render_equipment_card(selected_equipment)
|
||||
|
||||
|
||||
async def get_equipment_by_combination(type_combination):
|
||||
data = list_stratagems()
|
||||
|
||||
equipment_by_type = categorize_equipment_by_type(data)
|
||||
selected_equipment = select_equipment_by_type(equipment_by_type, type_combination)
|
||||
|
||||
logger.debug(f"根据组合选择的装备: {selected_equipment}")
|
||||
return await render_equipment_card(selected_equipment)
|
||||
|
||||
|
||||
def categorize_equipment_by_type(data):
|
||||
equipment_by_type = {}
|
||||
for item in data:
|
||||
equip_type = item['type']
|
||||
if equip_type not in equipment_by_type:
|
||||
equipment_by_type[equip_type] = []
|
||||
equipment_by_type[equip_type].append(item)
|
||||
return equipment_by_type
|
||||
|
||||
|
||||
def select_equipment_by_type(equipment_by_type, type_combination):
|
||||
selected_equipment = []
|
||||
backpack_count = 0
|
||||
|
||||
for equip_type, count in type_combination.items():
|
||||
if equip_type in equipment_by_type:
|
||||
available_items = equipment_by_type[equip_type]
|
||||
random.shuffle(available_items)
|
||||
selected = 0
|
||||
for item in available_items:
|
||||
if selected < count:
|
||||
if item['backpack'] == 1 and backpack_count >= 1:
|
||||
continue
|
||||
selected_equipment.append(item)
|
||||
selected += 1
|
||||
if item['backpack'] == 1:
|
||||
backpack_count += 1
|
||||
else:
|
||||
break
|
||||
|
||||
return selected_equipment
|
||||
|
||||
|
||||
def select_random_equipment(max_equipment, count):
|
||||
return random.sample(range(max_equipment), count)
|
||||
Reference in New Issue
Block a user