Back to Templates

Bulk Delete Slack Messages with Smart Filtering and Confirmations

Created by

Created by: Elie Kattar || solutionflows

Elie Kattar

Last update

Last update 12 hours ago

Categories

Share


🧹 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