{"record":{"id":"820140c07aca1752","repo":"siyuan-note/siyuan","slug":"conf-language-204","errorCode":null,"errorMessage":"Conf.Language(204)","messagePattern":"Conf\\.Language\\(204\\)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"kernel/model/export.go","lineNumber":422,"sourceCode":"\t\treturn nil\n\t})\n\treturn\n}\n\nfunc Export2Liandi(id string) (err error) {\n\tif err = prepareExportBlockAssets(id, false); err != nil {\n\t\treturn\n\t}\n\terr = withExportReadLockByBlockID(id, func() error {\n\t\ttree, loadErr := LoadTreeByBlockID(id)\n\t\tif loadErr != nil {\n\t\t\tlogging.LogErrorf(\"load tree by block id [%s] failed: %s\", id, loadErr)\n\t\t\treturn loadErr\n\t\t}\n\n\t\tif IsUserGuide(tree.Box) {\n\t\t\t// Doc in the user guide no longer supports one-click sending to the community https://github.com/siyuan-note/siyuan/issues/8388\n\t\t\treturn errors.New(Conf.Language(204))\n\t\t}\n\n\t\tassets := getAssetsLinkDests(tree.Root, false)\n\t\tembedAssets := getQueryEmbedNodesAssetsLinkDests(tree.Root)\n\t\tassets = append(assets, embedAssets...)\n\t\tassets = gulu.Str.RemoveDuplicatedElem(assets)\n\t\t_, err = uploadAssets2Cloud(assets, bizTypeExport2Liandi, false)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tmsgId := util.PushMsg(Conf.Language(182), 15000)\n\t\tdefer util.PushClearMsg(msgId)\n\n\t\t// 判断帖子是否已经存在，存在则使用更新接口\n\t\tconst liandiArticleIdAttrName = \"custom-liandi-articleid\"\n\t\tconst liandiArticleIdAttrNameOld = \"custom-liandi-articleId\" // 兼容旧属性名\n\t\tfoundArticle := false","sourceCodeStart":404,"sourceCodeEnd":440,"githubUrl":"https://github.com/siyuan-note/siyuan/blob/8641553a1f07374001902d3ce773285db1292b2d/kernel/model/export.go#L404-L440","documentation":"Export2Liandi refuses to send documents that live inside the built-in user guide notebook. The kernel checks IsUserGuide(tree.Box) after loading the tree by block ID and returns a localized message (Conf.Language(204), 'The doc in the user guide does not support sharing to the community') because sending guide docs to the community was explicitly disabled (issue #8388).","triggerScenarios":"Calling the kernel export/Liandi share API (Export2Liandi) with a block/document ID that resolves to a tree inside the user guide notebook ('SiYuan User Guide' box).","commonSituations":"Users open a doc from the built-in user guide and click 'send to Liandi/community'; scripts or plugins that pass a block ID copied from a guide page.","solutions":["Copy the content into a normal (non-user-guide) notebook and share that document instead","Use a different export path (e.g. export Markdown/Docx) that does not restrict guide docs"],"exampleFix":"// before\nkernel.Model.Export2Liandi(\"20240101120000-abc1234\") // id inside user guide box\n// after\nkernel.Model.Export2Liandi(\"20240101120000-xyz5678\") // id in a user-created notebook","handlingStrategy":"validation","validationCode":"const doc = await getBlockInfo(blockId);\nif (doc.box === \"20210808180117-czj9bvb\") { // built-in user guide notebook id\n  throw new Error(\"Refusing to export: doc is in the user guide notebook\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  await export2Liandi(blockId);\n} catch (e) {\n  if (String(e.msg).includes(\"user guide\")) showHint(\"Copy the doc to a normal notebook first\");\n}","preventionTips":["Check doc.box against the built-in guide notebook id before share/export calls","Never present the Liandi share action on guide-notebook docs in plugin UI"],"tags":["export","user-guide","liandi","localization"],"backgroundTag":"unsupported-operation","analyzedSha":"8641553a1f07374001902d3ce773285db1292b2d","analyzedAt":"2026-09-11T16:08:28.414Z","contentChangedAt":"2026-09-11T16:08:28.414Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}