CHAIN is a Go-based tool designed to automate content moderation on Roblox. It works by "chaining" through user profiles, starting from a given user ID, and analyzing their description and avatar for inappropriate content. If NSFW content is detected, it sends a notification to a specified Discord webhook.
The tool operates in a continuous loop, performing the following steps for each user in the chain:
- Fetch User Data: Retrieves the user's profile information, including their description, avatar, and friends list, using the Roblox API.
- Text Moderation: The user's description is sent to a local text classification service to check for inappropriate language.
- Image Moderation: The user's avatar is downloaded and sent to a local image classification service to detect NSFW content.
- Report: If either the text or image moderation service returns a positive result, a detailed alert is sent to a configured Discord webhook. This alert includes the moderation results, the user's description, and their avatar.
- Chain: The tool randomly selects a user from the current user's friend list and begins the process again with the new user ID, creating a "chain" of moderation.
- Roblox Integration: Directly interfaces with Roblox APIs to fetch user data.
- Text and Image Analysis: Supports both text and image-based content moderation.
- Discord Webhook Notifications: Provides real-time alerts for moderation events.
- Chaining Mechanism: Autonomously traverses the Roblox social graph to discover new content to moderate.
- Local and Modular: Relies on local classification services, which can be customized or replaced.
-
Dependencies: Project dependencies are managed with Go Modules. Run
go mod tidyto ensure you have everything you need. -
Classification Server: This tool requires a separate server running locally on
http://localhost:5000that provides the following endpoints for content moderation. See https://github.com/ProjectModeration/mlsidecar to setup. -
Environment Variables: You must create a
.envfile in theinteractiondirectory with the following variable:DISCORD_WEBHOOK_URL=your_discord_webhook_url_here
To run the application, execute the following command from the root of the project:
go run .By default, the starting user ID is hardcoded in the main.go file. You can change this value to start the chain from a different user.