# AeThex Unified Bot A complete Discord bot combining AeThex community features, Sentinel enterprise security, and multi-purpose server management in one instance. ## Overview AeThex Unified Bot handles community features, security, AND general server management: - **Community Features**: User verification, profile linking, realm selection, leaderboards, community posts - **Sentinel Security**: Anti-nuke protection with RAM-based heat tracking - **Federation Sync**: Cross-server role synchronization across 5 realms - **Ticket System**: Support tickets with automatic channel creation - **Moderation**: Full moderation suite (warn, kick, ban, timeout) - **Leveling System**: Unified XP across Discord and AeThex platform - **Cross-Platform**: Integration with AeThex.studio and AeThex.foundation ## Tech Stack - **Runtime**: Node.js 20 - **Framework**: discord.js v14 - **Database**: Supabase (for verification, XP, moderation logs) - **Health Endpoint**: HTTP server on port 8080 ## Project Structure ``` aethex-bot/ ├── bot.js # Main entry point ├── package.json ├── public/ │ └── dashboard.html # Web dashboard ├── commands/ │ ├── admin.js # /admin status|heat|servers|threats|federation │ ├── announce.js # /announce - cross-server announcements │ ├── auditlog.js # /auditlog - admin action history │ ├── avatar.js # /avatar - get user avatar │ ├── badges.js # /badges - view earned badges │ ├── ban.js # /ban - ban users │ ├── config.js # /config - server settings │ ├── daily.js # /daily - claim daily XP │ ├── federation.js # /federation link|unlink|list │ ├── foundation.js # /foundation - foundation stats │ ├── help.js # /help - command list │ ├── kick.js # /kick - kick users │ ├── leaderboard.js # /leaderboard - top contributors │ ├── modlog.js # /modlog - user mod history │ ├── poll.js # /poll - community polls │ ├── post.js # /post - community feed posts │ ├── profile.js # /profile - view linked profile │ ├── rank.js # /rank - view level and XP │ ├── refresh-roles.js # /refresh-roles - sync roles │ ├── serverinfo.js # /serverinfo - server stats │ ├── set-realm.js # /set-realm - choose primary realm │ ├── stats.js # /stats - user statistics │ ├── status.js # /status - network overview │ ├── studio.js # /studio - studio profile │ ├── ticket.js # /ticket create|close │ ├── timeout.js # /timeout - timeout users │ ├── unlink.js # /unlink - disconnect account │ ├── userinfo.js # /userinfo - user details │ ├── verify-role.js # /verify-role - check roles │ ├── verify.js # /verify - link account │ └── warn.js # /warn - warn users ├── events/ │ └── messageCreate.js # Message event handler ├── listeners/ │ ├── feedSync.js # Community feed sync │ ├── welcome.js # Welcome messages + auto-role │ ├── goodbye.js # Goodbye messages │ ├── xpTracker.js # XP tracking on messages │ └── sentinel/ │ ├── antiNuke.js # Channel delete monitor │ ├── roleDelete.js # Role delete monitor │ ├── memberBan.js # Mass ban detection │ └── memberKick.js # Mass kick detection └── scripts/ └── register-commands.js # Slash command registration ``` ## Commands (29 Total) ### Community Commands | Command | Description | |---------|-------------| | `/verify` | Link your Discord account to AeThex | | `/unlink` | Disconnect your Discord from AeThex | | `/profile` | View your linked AeThex profile | | `/set-realm` | Choose your primary realm | | `/verify-role` | Check your assigned Discord roles | | `/refresh-roles` | Sync roles based on AeThex profile | | `/stats` | View your AeThex statistics | | `/leaderboard` | View top contributors | | `/post` | Create a community feed post | | `/help` | View all bot commands | ### Leveling & Engagement | Command | Description | |---------|-------------| | `/rank` | View your level and unified XP | | `/daily` | Claim daily XP bonus | | `/badges` | View earned badges across platforms | ### Moderation | Command | Description | |---------|-------------| | `/warn @user [reason]` | Warn a user | | `/kick @user [reason]` | Kick a user | | `/ban @user [reason]` | Ban a user | | `/timeout @user [minutes] [reason]` | Timeout a user | | `/modlog @user` | View moderation history | ### Utility | Command | Description | |---------|-------------| | `/userinfo [@user]` | View user information | | `/serverinfo` | View server statistics | | `/avatar [@user]` | Get user's avatar | ### Admin & Config | Command | Description | |---------|-------------| | `/config view` | View server configuration | | `/config welcome #channel` | Set welcome channel | | `/config goodbye #channel` | Set goodbye channel | | `/config modlog #channel` | Set mod log channel | | `/config levelup #channel` | Set level-up announcement channel | | `/config autorole @role` | Set auto-role for new members | | `/config levelrole @role [level]` | Add level-based role reward | | `/announce [title] [message]` | Send cross-server announcement | | `/poll [question] [options]` | Create community poll | | `/auditlog` | View admin action history | ### Cross-Platform | Command | Description | |---------|-------------| | `/studio [@user]` | View AeThex Studio profile | | `/foundation [@user]` | View Foundation contributions | ### Sentinel Security | Command | Description | |---------|-------------| | `/admin status` | View bot status and statistics | | `/admin heat @user` | Check heat level of a user | | `/admin servers` | View all connected servers | | `/admin threats` | View active threat monitor | | `/federation link @role` | Link a role for cross-server sync | | `/federation unlink @role` | Remove a role from sync | | `/federation list` | List all linked roles | | `/ticket create [reason]` | Create a support ticket | | `/ticket close` | Close the current ticket | | `/status` | View network status | ## Unified XP System XP is earned across all platforms and stored in a single profile: - **Discord Messages**: +5 XP per message (60s cooldown) - **Daily Claims**: +50 XP base + streak bonus (up to +100) - **Platform Activity**: Posts, likes, comments on AeThex sites Level formula: `level = floor(sqrt(xp / 100))` ## Supabase Tables Required ```sql -- Server configuration CREATE TABLE server_config ( guild_id TEXT PRIMARY KEY, welcome_channel TEXT, goodbye_channel TEXT, modlog_channel TEXT, level_up_channel TEXT, auto_role TEXT, updated_at TIMESTAMPTZ DEFAULT NOW() ); -- Warnings CREATE TABLE warnings ( id SERIAL PRIMARY KEY, guild_id TEXT NOT NULL, user_id TEXT NOT NULL, user_tag TEXT, moderator_id TEXT NOT NULL, moderator_tag TEXT, reason TEXT, created_at TIMESTAMPTZ DEFAULT NOW() ); -- Moderation actions CREATE TABLE mod_actions ( id SERIAL PRIMARY KEY, guild_id TEXT NOT NULL, action TEXT NOT NULL, user_id TEXT NOT NULL, user_tag TEXT, moderator_id TEXT NOT NULL, moderator_tag TEXT, reason TEXT, duration_minutes INTEGER, created_at TIMESTAMPTZ DEFAULT NOW() ); -- Level roles CREATE TABLE level_roles ( guild_id TEXT NOT NULL, role_id TEXT NOT NULL, level_required INTEGER NOT NULL, PRIMARY KEY (guild_id, role_id) ); -- Add to user_profiles (if not exists) ALTER TABLE user_profiles ADD COLUMN IF NOT EXISTS xp INTEGER DEFAULT 0; ALTER TABLE user_profiles ADD COLUMN IF NOT EXISTS daily_streak INTEGER DEFAULT 0; ALTER TABLE user_profiles ADD COLUMN IF NOT EXISTS last_daily TIMESTAMPTZ; ALTER TABLE user_profiles ADD COLUMN IF NOT EXISTS badges JSONB DEFAULT '[]'; ``` ## Environment Variables ### Required - `DISCORD_BOT_TOKEN` - Bot token from Discord Developer Portal - `DISCORD_CLIENT_ID` - Application ID ### Optional - Supabase - `SUPABASE_URL` - Supabase project URL - `SUPABASE_SERVICE_ROLE` - Supabase service role key ### Optional - Federation - `HUB_GUILD_ID`, `LABS_GUILD_ID`, `GAMEFORGE_GUILD_ID`, `CORP_GUILD_ID`, `FOUNDATION_GUILD_ID` ### Optional - Security - `WHITELISTED_USERS` - Comma-separated user IDs to skip heat tracking - `ALERT_CHANNEL_ID` - Channel for security alerts - `EXTRA_WHITELISTED_GUILDS` - Additional whitelisted server IDs ## Health Endpoints **GET /health** - Bot health status **GET /stats** - Server statistics **GET /dashboard** - Web dashboard ## Running the Bot ```bash cd aethex-bot npm install npm start ``` ## Current Status - Bot running as AeThex#9389 - 29 commands loaded - Unified XP system active - Welcome/goodbye system active - Moderation suite active - Cross-platform integration ready ## Workflow - **Name**: AeThex Unified Bot - **Command**: `cd aethex-bot && npm start` - **Runtime**: Node.js 20 - **Status**: Running