{"record":{"id":"795fed1177f883e4","repo":"zeroclaw-labs/zeroclaw","slug":"slack-reactions-add-failed-err","errorCode":null,"errorMessage":"Slack reactions.add failed: {err}","messagePattern":"Slack reactions\\.add failed: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-channels/src/slack.rs","lineNumber":5518,"sourceCode":"            .send()\n            .await?;\n\n        let status = resp.status();\n        let text = resp.text().await.unwrap_or_default();\n\n        if !status.is_success() {\n            let sanitized = zeroclaw_providers::sanitize_api_error(&text);\n            anyhow::bail!(\"Slack reactions.add failed ({status}): {sanitized}\");\n        }\n\n        let parsed: serde_json::Value = serde_json::from_str(&text).unwrap_or_default();\n        if parsed.get(\"ok\") == Some(&serde_json::Value::Bool(false)) {\n            let err = parsed\n                .get(\"error\")\n                .and_then(|e| e.as_str())\n                .unwrap_or(\"unknown\");\n            if err != \"already_reacted\" {\n                anyhow::bail!(\"Slack reactions.add failed: {err}\");\n            }\n        }\n\n        Ok(())\n    }\n\n    async fn remove_reaction(\n        &self,\n        channel_id: &str,\n        message_id: &str,\n        emoji: &str,\n    ) -> anyhow::Result<()> {\n        let ts = extract_slack_ts(message_id);\n        let name = unicode_emoji_to_slack_name(emoji);\n\n        let body = serde_json::json!({\n            \"channel\": channel_id,\n            \"timestamp\": ts,","sourceCodeStart":5500,"sourceCodeEnd":5536,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-channels/src/slack.rs#L5500-L5536","documentation":"Error \"Slack reactions.add failed: {err}\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-channels/src/slack.rs:5518 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check network connectivity and the underlying error; verify the Slack token."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}