fix: break circular import in horse racing commands
Extract shared.py from commands/__init__.py to break circular dependency: - shared.py: shared variables/services/helper functions - access.py: get_scope/check_access/get_event_id (canonical source) - __init__.py: re-exports from shared.py for backward compat - register/bet/race/help: import from .shared instead of package
This commit is contained in:
@@ -1,14 +1,18 @@
|
||||
import asyncio
|
||||
from nonebot import on_command
|
||||
from nonebot.adapters.onebot.v11 import Bot, Event
|
||||
from . import (
|
||||
from .shared import (
|
||||
room_store, race_engine, config, logger,
|
||||
get_scope, check_access, get_event_id,
|
||||
_find_user_horse, _find_duplicate_horse, _get_horses_in_order,
|
||||
_format_horse_label, _send_to_scope, _build_race_image_message,
|
||||
_get_user_name, _normalize_horse_name,
|
||||
run_race_with_settlement,
|
||||
)
|
||||
from ..models import HorseState, RoomState
|
||||
from ..models import HorseState, RoomState, Horse
|
||||
|
||||
register_cmd = on_command("赛马报名", priority=5)
|
||||
|
||||
|
||||
@register_cmd.handle()
|
||||
async def handle_register(bot: Bot, event: Event):
|
||||
@@ -25,7 +29,6 @@ async def handle_register(bot: Bot, event: Event):
|
||||
if not horse_name:
|
||||
scope = get_scope(event)
|
||||
horse_name = await _get_user_name(bot, scope, user_id)
|
||||
# Ensure name is not too long when using nickname as default
|
||||
if len(horse_name) > 10:
|
||||
horse_name = horse_name[:10]
|
||||
|
||||
@@ -67,8 +70,3 @@ async def handle_register(bot: Bot, event: Event):
|
||||
count = len(room.horses)
|
||||
registered_horse = room.horses[horse_name]
|
||||
await register_cmd.finish(f"报名成功!{_format_horse_label(registered_horse)} 已加入比赛({count}/8)")
|
||||
|
||||
|
||||
cancel_cmd = on_command("赛马取消报名", priority=5)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user