A Discord bot that helps create meaningful connections in large Discord servers by automatically matching people based on their interests. Say goodbye to overwhelming message feeds and hello to deeper, more focused conversations with like-minded people. Join the Discord server now to test it out!
-
Smart Interest Matching
- Automatically matches users based on shared interests and conversation patterns
- Creates focused channels for matched groups
- Facilitates meaningful discussions in smaller, more manageable groups
-
Automatic Channel Management
- Creates private channels for matched groups
- Intelligently cleans up inactive channels
- Maintains optimal group sizes for better conversations
-
Organic Community Building
- Natural group formation based on actual interactions
- Vote-kick system for community moderation
- Easy group leaving with self-kick command
-
Commands
/kickme- Leave a channel/votekick- Start a vote to kick a member
The bot uses natural language processing and interest analysis to match users:
- Analyzes user messages and interactions
- Uses Jaccard similarity to calculate interest overlap between users
- Creates small, focused groups when sufficient interest matches are found
- Manages channel lifecycle based on group activity
- TypeScript
- Discord.js
- Supabase (for database)
- Jaccard similarity for interest matching
src/
├── commands/ # Bot command implementations
├── events/ # Discord event handlers
├── matching/ # Channel matching and cleanup logic
├── services/ # Core services (database, background tasks)
├── types/ # TypeScript type definitions
└── utils/ # Utility functions
- Clone the repository
- Install dependencies:
npm install- Configure environment variables (create a
.envfile) - Set up the database schema on Supabase:
- Open your Supabase project dashboard.
- Go to the SQL editor and run the schema file located at
schema.sqlin the project root to create the required tables.
- Deploy slash commands:
npm run deploy- Start the bot:
npm startCreate a .env file in the root directory with the following variables:
TOKEN=your_discord_bot_token
GUILD_ID=the_id_of_your_guild
CLIENT_ID=your_bots_client_id
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_keyGPLV3