{"record":{"id":"28581e96ab2109dd","repo":"JustArchiNET/ArchiSteamFarm","slug":"failed-due-to-error-0","errorCode":null,"errorMessage":"Failed due to error: {0}","messagePattern":"Failed due to error: (.+?)","errorType":"exception","errorClass":"TimeoutException","httpStatus":null,"severity":"error","filePath":"ArchiSteamFarm/Steam/Integration/ArchiHandler.cs","lineNumber":259,"sourceCode":"\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Interpret the result and see what we should do about it\n\t\t\t\t\tswitch (response.Result) {\n\t\t\t\t\t\tcase EResult.OK:\n\t\t\t\t\t\t\t// Success, we can continue\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase EResult.Busy:\n\t\t\t\t\t\tcase EResult.DuplicateRequest:\n\t\t\t\t\t\tcase EResult.Fail:\n\t\t\t\t\t\tcase EResult.RemoteCallFailed:\n\t\t\t\t\t\tcase EResult.ServiceUnavailable:\n\t\t\t\t\t\tcase EResult.Timeout:\n\t\t\t\t\t\t\t// Expected failures that we should be able to retry\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\tcase EResult.NoMatch:\n\t\t\t\t\t\t\t// Expected failures that we're not going to retry\n\t\t\t\t\t\t\tthrow new TimeoutException(Strings.FormatWarningFailedWithError(response.Result));\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// Unknown failures, report them and do not retry since we're unsure if we should\n\t\t\t\t\t\t\tArchiLogger.LogGenericError(Strings.FormatWarningUnknownValuePleaseReport(nameof(response.Result), response.Result));\n\n\t\t\t\t\t\t\tthrow new TimeoutException(Strings.FormatWarningFailedWithError(response.Result));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (response == null) {\n\t\t\t\t\tthrow new TimeoutException(Strings.FormatErrorObjectIsNull(nameof(response)));\n\t\t\t\t}\n\n\t\t\t\tif (response.Result != EResult.OK) {\n\t\t\t\t\tthrow new TimeoutException(Strings.FormatWarningFailedWithError(response.Result));\n\t\t\t\t}\n\n\t\t\t\tif ((response.Body.total_inventory_count == 0) || (response.Body.assets.Count == 0)) {\n\t\t\t\t\t// Empty inventory","sourceCodeStart":241,"sourceCodeEnd":277,"githubUrl":"https://github.com/JustArchiNET/ArchiSteamFarm/blob/fe57c4129f4ce02d452318cabc525eb49a087255/ArchiSteamFarm/Steam/Integration/ArchiHandler.cs#L241-L277","documentation":"Inside GetMyInventoryAsync's GameCoordinator retry loop, EResult.NoMatch is treated as a terminal, non-retryable failure and throws a TimeoutException wrapping the EResult. 'No match' from Steam means the request did not match an expected inventory/context (e.g. wrong app/context ID combination for the account).","triggerScenarios":"Steam's CEcon service returns EResult.NoMatch for the requested appID/contextID/account — typically an invalid app+context pair, a private/hidden inventory, or a context that does not exist for the account.","commonSituations":"Querying a non-Steam-community context ID; querying an app inventory the account does not own; inventory privacy settings or a restricted account; Steam temporarily misrouting the request.","solutions":["Verify appID and contextID passed to GetMyInventoryAsync are valid for the account (Steam community = 730/2 by default).","Confirm the target account's inventory is public / owned by the bot.","Treat NoMatch as a soft failure in the caller rather than retrying identically.","Retry once after a short delay in case of a transient Steam-side mismatch."],"exampleFix":"// before\nappID = 730, contextID = 6  // wrong context\n// after\nappID = Asset.SteamAppID /*730*/, contextID = Asset.SteamCommunityContextID /*2*/","handlingStrategy":"try-catch","validationCode":"// Validate the requested app/context pair is a known community inventory.\nif (appID != Asset.SteamAppID || contextID != Asset.SteamCommunityContextID)\n    logger.LogWarning(\"Non-standard inventory context may yield NoMatch\");","typeGuard":null,"tryCatchPattern":"try { await foreach (var a in handler.GetMyInventoryAsync(appID, contextID)) { /* ... */ } }\ncatch (TimeoutException ex) when (ex.Message.Contains(\"NoMatch\")) {\n    // terminal: stop retrying this app/context combination\n}","preventionTips":["Use the documented community app/context IDs unless you have a reason not to.","Treat NoMatch as terminal, not transient, in retry logic.","Confirm the account owns the target app and has a public inventory."],"tags":["steam","inventory","gamecoordinator","eresult","network"],"backgroundTag":null,"analyzedSha":"fe57c4129f4ce02d452318cabc525eb49a087255","analyzedAt":"2026-08-13T17:26:20.146Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}