Quick Reference
Overview
AI Moderation in the CometChat SDK helps ensure that your chat application remains safe and compliant by automatically reviewing messages for inappropriate content. This feature leverages AI to moderate messages in real-time, reducing manual intervention and improving user experience.For a broader understanding of moderation features, configuring rules, and managing flagged messages, see the Moderation Overview.
Prerequisites
Before using AI Moderation, ensure the following:- Moderation is enabled for your app in the CometChat Dashboard
- Moderation rules are configured under Moderation > Rules
- You’re using a CometChat SDK version that supports moderation
How It Works
| Step | Description |
|---|---|
| 1. Send Message | App sends a text, image, or video message |
| 2. Pending Status | Message is sent with PENDING moderation status |
| 3. AI Processing | Moderation service analyzes the content |
| 4. Result Event | onMessageModerated event fires with final status |
Supported Message Types
Moderation is triggered only for the following message types:| Message Type | Moderated | Notes |
|---|---|---|
| Text Messages | ✅ | Content analyzed for inappropriate text |
| Image Messages | ✅ | Images scanned for unsafe content |
| Video Messages | ✅ | Videos analyzed for prohibited content |
| Custom Messages | ❌ | Not subject to AI moderation |
| Action Messages | ❌ | Not subject to AI moderation |
Moderation Status
ThegetModerationStatus() method returns one of the following values:
| Status | Enum Value | Description |
|---|---|---|
| Pending | CometChat.ModerationStatus.PENDING | Message is being processed by moderation |
| Approved | CometChat.ModerationStatus.APPROVED | Message passed moderation and is visible |
| Disapproved | CometChat.ModerationStatus.DISAPPROVED | Message violated rules and was blocked |
Implementation
Step 1: Send a Message and Check Initial Status
When you send a text, image, or video message, check the initial moderation status:- JavaScript
- TypeScript
Step 2: Listen for Moderation Results
Register a message listener to receive moderation results in real-time:- JavaScript
- TypeScript
Step 3: Handle Disapproved Messages
When a message is disapproved, handle it appropriately in your UI:Best Practices
Best Practices
- Always check
getModerationStatus()after sending a message to show appropriate UI indicators (e.g., a pending badge) - Register the
onMessageModeratedlistener early in your app lifecycle so you don’t miss moderation results - Provide clear feedback to users when their message is disapproved — avoid silently hiding content without explanation
- Custom and Action messages are not moderated — if you need moderation on custom message types, implement your own server-side checks
- Consider caching moderation status locally to avoid re-checking on message list re-renders
Troubleshooting
Troubleshooting
- Moderation status always PENDING: Ensure moderation rules are configured in the CometChat Dashboard under Moderation > Rules.
onMessageModeratednot firing: Verify you registered aMessageListenerwith the correct listener ID and that moderation is enabled for your app.- Custom messages not being moderated: This is expected — AI Moderation only applies to text, image, and video messages.
- Disapproved messages still visible: Make sure your
onMessageModeratedhandler updates the UI when a message status changes toDISAPPROVED.