Bulk Delete Slack Messages with Smart Filtering and Confirmations

Go to Workflow
44 views
Built by Elie Kattar Elie Kattar
Created on June 15, 2025

Description

🧹 Jedi Cleaner for Slack

❌ Slack's Limitation

Slack lacks a native bulk delete feature. Users must delete messages manually, which is time-consuming and inefficient for large volumes.

βœ… Our Solution

Jedi Cleaner automates Slack message deletion using smart filters, safety confirmations, and enterprise-grade reliability.

πŸš€ Key Features & Capabilities

⚑ Lightning-Fast Bulk Operations

Delete hundreds of messages in minutes
Intelligent rate limiting prevents API throttling
Auto-retry on failure ensures reliable operation

🎯 Smart Message Filtering

Keyword match** – Find messages with specific terms
User mentions** – Target messages that mention specific users
Exact phrases** – Use quotes for precision
Bot/User content** – Handle mixed sources seamlessly

πŸ›‘οΈ Enterprise-Grade Safety

Confirmation workflow** – No accidental deletions
Timeout** – Requests expire after 5 minutes
Preview-first** – Review messages before deletion
Granular control** – Choose exactly what to delete

πŸ” Intelligent Search & Preview

Flexible filters (words, phrases, patterns)
Preview + count before deletion
Multi-channel support with context isolation

πŸ“Š Complete Workflow Management

Auto-cleanup of bot messages after execution
Real-time progress tracking
Debug logs and audit trail
Static data persistence and cleanup

πŸ§ͺ How It Works

Phase 1: Search Request

User: /cleanup "error messages"
Bot Response:
πŸ” Found 15 messages containing "error messages"
πŸ“Š Breakdown:
β€’ Will be permanently deleted
β€’ Cannot be undone
β€’ Respond within 5 minutes

βœ… Type: @cleaner_jedi yes
❌ Type: @cleaner_jedi cancel

Phase 2: User Confirmation

User: @cleaner_jedi yes
Bot: πŸ—‘οΈ Deleting 15 messages containing "error messages"

Phase 3: Completion

βœ… Cleanup Complete
β€’ 15 messages deleted
β€’ Channel cleaned
β€’ Auto-deletes this message in 5 seconds

πŸ› οΈ Technical Architecture

Core Components

Unified Webhook Handler**
Handles slash commands & mentions, deduplicates events
Search Engine**
Integrates Slack API, parses & filters search terms
Safety & Confirmation System**
Temporary storage, expiration logic, user auth
Bulk Operations Engine**
Message deletion, progress tracking, error handling
Cleanup & Memory Management**
Deletes bot messages, static data cleanup

πŸ“± User Commands

| Command | Description | Example |
| ---------------------- | ----------------------------------- | -------------------------- |
| /cleanup [term] | Search messages containing [term] | /cleanup "webhook error" |
| @cleaner_jedi yes | Confirm deletion | After preview |
| @cleaner_jedi cancel | Cancel pending deletion | Cancels active request |

🧩 Edge Cases

| Scenario | Bot Response |
| -------------------- | ---------------------------------------------- |
| No messages found | "No messages found containing '\[term]'" |
| Expired confirmation | "Request expired. Please run /cleanup again" |
| No pending request | "No pending cleanup found. Run /cleanup first" |
| Invalid search term | "Please provide a valid search term" |

βš™οΈ Setup Requirements

Slack App Configuration

OAuth Scopes:

βœ… chat:write
βœ… chat:write.public
βœ… channels:history
βœ… groups:history
βœ… app_mentions:read
βœ… commands

Event Subscriptions:

βœ… app_mention
βœ… message.channels

Slash Command:

Command: /cleanup
URL: https://your-n8n.app.cloud/webhook/cleanerjedi
Hint: [search term]

n8n Workflow Setup

Required Nodes:

Webhook Trigger** – Captures Slack events
Respond to Webhook** – Handles routing
Switch Node** – Event type routing
Slack API Nodes** – Search, delete, notify
JavaScript Nodes** – Logic & validation

⚑ Advanced Features

🧠 Intelligent Deduplication

eventId = cmd_${body.command}${body.user_id}${body.trigger_id};
if (staticData.recentEvents.includes(eventId)) {
return []; // Skip duplicate
}

πŸ” Flexible Search Terms

Single words:** test
Phrases:** "error message"
Special characters:** webhook-failed
Case-insensitive by default

♻️ Auto-Cleanup

setTimeout(() => {
deleteMessage(completionMessage.ts);
deleteMessage(progressMessage.ts);
}, 5000);

🧠 Storage Management

Temp storage for requests
Auto-expiry cleanup
Memory-safe event trimming

πŸ“Š Error Handling & Logging

Error Scenarios

❌ Invalid term
⏰ Expired request
🚫 Access denied
⚠️ Rate limit hit

Debugging & Monitoring

Event IDs, timestamps
Key-value storage info
API response codes

βœ… Usage Examples

Example 1: Delete Error Messages

/cleanup "error"
β†’ Bot: Found 23 messages
β†’ @cleaner_jedi yes
β†’ βœ… Deleted 23 messages

Example 2: Cancel Midway

/cleanup "from:@john"
β†’ Bot: Found 8 messages
β†’ @cleaner_jedi cancel
β†’ ❌ Operation cancelled

Example 3: Search by Date

/cleanup "2024-01-15"
β†’ Bot: Found 12 messages
β†’ @cleaner_jedi yes
β†’ βœ… 12 messages deleted

πŸ”’ Security & Safety

βœ… User confirmation required
βœ… 5-minute time limits
βœ… Permission-aware deletions
βœ… Audit trail logging

πŸš€ Performance Optimizations

Minimal webhook/API usage
Batch deletion
Cached recent events

Memory Handling:

Temp data cleanup
Key expiration
Cache trimming

πŸ“ˆ Monitoring & Analytics

Metrics Tracked

Messages per operation
User response times
Failure & error rates
Storage performance

Logging

console.log('βœ… SUCCESS:', operationDetails);
console.warn('⚠️ WARNING:', warningDetails);
console.error('❌ ERROR:', errorDetails);
console.info('ℹ️ INFO:', informationDetails);

πŸŽ‰ Summary

For Users

βœ… Simple commands
βœ… Preview + safety
βœ… Fast processing
βœ… Clear status feedback

For Admins

βœ… Lower API load
βœ… Full logging
βœ… Resilient to errors
βœ… Lightweight memory footprint

For Developers

βœ… Modular, clean code
βœ… Well-documented
βœ… Scalable & robust
βœ… Easy to extend

PDF how to do Document Included

Nodes Used (2)

Code
n8n-nodes-base.code
Slack
n8n-nodes-base.slack