ドキュメント・画像の送信機能は正常で、実際に遭遇する送信問題はすべてファイルパスの問題である;
ドキュメント・画像の受信機能は、グループチャットでは正常で、sendWithResponse("get_group_file_url", { group_id: groupId, file_id: seg.data?.file_id, busid: seg.data?.busid }); を含む;しかし、個人チャットでは正常でなく、この場合はファイル名とファイルidしかなく、ファイルurlがない;
解決策:
sendWithResponse("get_file", { file_id: seg.data.file_id }); を呼び出して seg.data.url を設定する;
主な欠陥:
napcat のファイルダウンロードは .config/QQ/NapCat/temp に保存され、かつ /NapCat/temp は変更できない。docker を使用する場合は必ず .config/QQ をマウントする必要があり、openclaw も docker でデプロイするなら同様に .config/QQ をマウントする必要がある。このときパスの無効化に遭遇しやすく、ファイル送信や画像送信の失敗も同じ原因である。
難点:
ファイル送信時は共有ディレクトリを用意して napcat にマウントさせればよいが、ファイル受信時は napcat が強制的に /NapCat/temp へダウンロードする;NapCat 側を改修しない前提では、最も簡単な解決策はむしろホストマシン上の共有ディレクトリに直接揃えて、元のパスをそのまま使うこと:
napcat:shared-data:/root/.config/QQ/NapCat/temp;
openclaw:shared-data:/root/.config/QQ/NapCat/temp;