😎更好的猜成语/接龙体验,新增困难模式

This commit is contained in:
EillesWan 2024-07-24 00:24:53 +08:00
parent 907740172b
commit 5ef4657805
5 changed files with 133176 additions and 59602 deletions

File diff suppressed because it is too large Load Diff

View File

@ -75,7 +75,11 @@ def game_not_running(user_id: UserId) -> bool:
handle = on_alconna(
Alconna("handle", Option("-s|--strict", default=False, action=store_true)),
Alconna(
"handle",
Option("-s|--strict", default=False, action=store_true),
Option("-d|--hard", default=False, action=store_true),
),
aliases=("猜成语",),
rule=to_me() & game_not_running,
use_cmd_start=True,
@ -168,9 +172,10 @@ async def _(
matcher: Matcher,
user_id: UserId,
strict: Query[bool] = AlconnaQuery("strict.value", False),
hard: Query[bool] = AlconnaQuery("hard.value", False),
):
is_strict = handle_config.handle_strict_mode or strict.result
idiom, explanation = random_idiom()
idiom, explanation = random_idiom(hard.result)
game = Handle(idiom, explanation, strict=is_strict)
games[user_id] = game

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -17,13 +17,18 @@ fonts_dir = resource_dir / "fonts"
data_dir = resource_dir / "data"
idiom_path = data_dir / "idioms.txt"
answer_path = data_dir / "answers.json"
answer_hard_path = data_dir / "answers_hard.json"
LEGAL_PHRASES = [
idiom.strip() for idiom in idiom_path.open("r", encoding="utf-8").readlines()
]
ANSWER_PHRASES: List[Dict[str, str]] = json.load(answer_path.open("r", encoding="utf-8"))
ANSWER_PHRASES: List[Dict[str, str]] = json.load(
answer_path.open("r", encoding="utf-8")
)
HARD_ANSWER_PHRASES: List[Dict[str, str]] = json.load(
answer_hard_path.open("r", encoding="utf-8")
)
# class LegalPhrasesModifiedHandler(FileSystemEventHandler):
# """
@ -57,8 +62,8 @@ def legal_idiom(word: str) -> bool:
return word in LEGAL_PHRASES
def random_idiom() -> Tuple[str, str]:
answer = random.choice(ANSWER_PHRASES)
def random_idiom(is_hard: bool = False) -> Tuple[str, str]:
answer = random.choice(HARD_ANSWER_PHRASES if is_hard else ANSWER_PHRASES)
return answer["word"], answer["explanation"]