babalae/better-genshin-impact · error · Exception

未找与凯瑟琳对话交互按钮

Error message

未找与凯瑟琳对话交互按钮

What it means

Thrown in GoToAdventurersGuildTask.DoOnce after the daily-commission reward is claimed and the UI is returned to the main view: Bv.FindFAndPress cannot find Catherine's localized interaction text (凯瑟琳) to reopen the dialogue for the expedition step.

Source

Thrown at BetterGenshinImpact/GameTask/Common/Job/GoToAdventurersGuildTask.cs:113

            // 6.2 每日提示确认
            using var ra1 = CaptureToRectArea();
            if (Bv.ClickBlackConfirmButton(ra1))
            {
                Logger.LogInformation("存在提示并确认");
            }
            
            await _chooseTalkOptionTask.SelectLastOptionUntilEnd(ct, null, 3); // 点几下
            await Bv.WaitUntilFound(ElementRecognition.Get("PaimonMenu"), ct);
            await Delay(500, ct);
            TaskContext.Instance().PostMessageSimulator.KeyPress(User32.VK.VK_ESCAPE);
            await new ReturnMainUiTask().Start(ct);

            // 结束后重新打开
            await Delay(1200, ct);
            using var ra = CaptureToRectArea();
            if (!Bv.FindFAndPress(ra, text: this.catherineLocalizedString))
            {
                throw new Exception("未找与凯瑟琳对话交互按钮");
            }
        }
        else if (res == TalkOptionRes.FoundButNotOrange)
        {
            Logger.LogInformation("▶ {Text} 未完成或者已领取", "领取『每日委托』奖励");
        }
        else
        {
            Logger.LogWarning("▶ 未找到 {Text} 选项", "领取『每日委托』奖励");
        }

        // 探索
        res = await _chooseTalkOptionTask.SingleSelectText(this.expeditionLocalizedString, ct, 10, true);
        if (res == TalkOptionRes.FoundAndClick)
        {
            await Delay(500, ct);
            new OneKeyExpeditionTask().Run();
        }

View on GitHub (pinned to a7cb36712d)

Solutions

  1. Lengthen the post-return delay or wait until the world F-prompts are visible before searching.
  2. Walk the character back to Catherine's known position before re-searching (reuse the pathing EndAction).
  3. Confirm TaskContext config GameCultureInfoName yields the expected localized '凯瑟琳' string.
  4. Retry the FindFAndPress a few times with small delays instead of failing on the first miss.

Example fix

null
Defensive patterns

Strategy: retry

Validate before calling

null

Type guard

null

Try / catch

try { await task.DoOnce(country, ct); }
catch (Exception e) when (e.Message == "未找与凯瑟琳对话交互按钮")
{ /* walk back to Catherine, wait for world render, then re-search */ }

Prevention

When it happens

Trigger: After pressing ESC + ReturnMainUiTask and a 1200ms delay, CaptureToRectArea + Bv.FindFAndPress(ra, text: catherineLocalizedString) returns false. The F-prompt text '凯瑟琳' is not found, meaning Catherine is off-screen, the camera moved, or the localization is wrong.

Common situations: The post-reward camera/character position drifted so Catherine is no longer in front; the 1200ms delay was too short and the world had not fully rendered; the configured game culture does not produce '凯瑟琳' as the F-prompt label; a different NPC's prompt occludes it.

Related errors


AI-assisted analysis of babalae/better-genshin-impact@a7cb36712d (2026-08-13). Data as JSON: /api/errors/a77a1343971e7651. Report an issue: GitHub.