Moderation Update
This commit is contained in:
54
checklist.md
54
checklist.md
@@ -1,27 +1,43 @@
|
||||
# Project Checklist (tidy & current)
|
||||
|
||||
Below are implemented features and pending items, grouped by area.
|
||||
Below are implemented features - [x] Front - [x] Live updates between bot and frontend using SSE events for real-time log synchronization (admin logs update immediately when moderation actions occur)nd UI for admin logs configuration in Server Settings
|
||||
- [x] Database schema for storing moderation action logs
|
||||
- [x] Require reason field (minimum 3 words) for all moderation commands
|
||||
- [x] Admin Logs UI: added logs display section showing recent moderation actions with detailsd pending items, grouped by area.
|
||||
|
||||
## Backend
|
||||
- [x] Express API: OAuth, server settings, channel/role endpoints, leave
|
||||
- [x] Invite endpoints (GET/POST/DELETE) and invite-token issuance
|
||||
- [x] Per-command toggles persistence and management
|
||||
- [x] Config endpoints for welcome/leave and autorole
|
||||
- [x] Admin Logs API endpoints: GET/POST for admin logs configuration, GET for retrieving moderation action logs
|
||||
- [x] Frontend Moderation API: POST endpoint for direct ban/kick/timeout actions from web interface
|
||||
- [x] Server Members API: GET endpoint for fetching server members for moderation user selection
|
||||
- [x] SSE events: added botStatusUpdate events for real-time bot join/leave notifications
|
||||
|
||||
## Frontend
|
||||
- [x] Login, Dashboard, Server Settings pages
|
||||
- Login redirects to Dashboard after OAuth and user/guilds are persisted in localStorage
|
||||
- Dashboard is protected: user must be logged in to view (redirects to login otherwise)
|
||||
- [x] MUI components, responsive layout, mobile fixes
|
||||
- [x] Theme switching (persist local) and user settings UI
|
||||
- [x] Theme switching (persist local) and user settings UI with adjusted light theme background
|
||||
- [x] Invite UI: create form, list, copy, delete with confirmation
|
||||
- [x] Commands UI (per-command toggles)
|
||||
- [x] Admin commands (kick/ban/timeout) removed from regular commands list, only shown in Admin Commands section
|
||||
- [x] Live Notifications UI (per-server toggle & config)
|
||||
- Channel selection, watched-user list, live status with Watch Live button
|
||||
- Real-time updates: adding/removing users via frontend or bot commands publishes SSE `twitchUsersUpdate` and pushes settings to bot
|
||||
- Bot commands (`/add-twitchuser`, `/remove-twitchuser`) refresh local cache immediately after backend success
|
||||
- Message mode: toggle between Default and Custom; Apply sends `message`/`customMessage` (default fallback if empty); no longer dual free-form fields
|
||||
- Collapsible accordion interface: separate Twitch and Kick tabs (Kick tab disabled)
|
||||
- [x] Admin Commands UI: dedicated section for moderation commands with toggle controls
|
||||
- [x] Moderation Commands (`/kick`, `/ban`, `/timeout`) displayed with permission requirements and toggle switches
|
||||
- [x] Admin Logs Configuration UI: channel selection and per-command enable/disable toggles
|
||||
- [x] Frontend Moderation Actions: direct ban/kick/timeout functionality from web interface with user autocomplete dropdown
|
||||
- [x] User permission validation and reason requirements (minimum 3 words)
|
||||
- [x] Integration with backend moderation API and admin logging system
|
||||
- [x] Admin Logs channel selection: shows all server text channels (not just channels where bot has permission) and updates immediately when changed
|
||||
- [x] Admin logs properly save moderator usernames for both bot slash commands and frontend moderation actions, and persist across page refreshes
|
||||
|
||||
## Discord Bot
|
||||
- [x] discord.js integration (events and commands)
|
||||
@@ -54,6 +70,23 @@
|
||||
- [x] Frontend tabs: separate Twitch and Kick tabs in Live Notifications accordion (Kick tab disabled)
|
||||
- [x] Bot watcher temporarily disabled in index.js startup
|
||||
- [x] Dev command filtering: commands marked with `dev: true` are hidden from UI, help, and Discord registration
|
||||
- [x] Admin Moderation Commands: `/kick`, `/ban`, `/timeout` with proper permission checks and role hierarchy validation
|
||||
- [x] Commands accept user mentions or user IDs as input to allow targeting any user (not limited by Discord's user selection filtering)
|
||||
- [x] Frontend integration: web interface moderation actions with permission validation
|
||||
- [x] Moderation actions are logged to postgres database with reasons and automatically posted to configured admin logs channel
|
||||
- [x] Admin logs properly capture and display the moderator who performed the action (both from bot slash commands and frontend)
|
||||
- [x] Admin Logs System: event logging for moderation actions
|
||||
- [x] New slash command: `/setup-adminlogs` to configure logging channel and per-command enable/disable
|
||||
- [x] Bot posts detailed moderation logs to configured channel showing: command used, target user, moderator, date/time, reason (required min 3 words), duration, end date
|
||||
- [x] Backend API endpoints for admin logs configuration and retrieval
|
||||
- [x] Frontend UI for admin logs configuration in Server Settings
|
||||
- [x] Database schema for storing moderation action logs
|
||||
- [x] Require reason field (minimum 3 words) for all moderation commands
|
||||
- [x] Admin logs are unique to each guild and stored in postgres database
|
||||
- [x] Frontend delete buttons for individual logs and delete all logs with confirm dialogs
|
||||
- [x] Live updates between bot and frontend using SSE events for real-time log synchronization
|
||||
- [x] Admin logs properly display the username who called the command and the user they called it on for both bot slash commands and frontend moderation actions
|
||||
- [x] Bot event handlers: added guildCreate and guildDelete events to publish SSE notifications for live dashboard updates
|
||||
|
||||
## Database
|
||||
- [x] Postgres support via `DATABASE_URL` (backend auto-creates `servers`, `invites`, `users`)
|
||||
@@ -68,12 +101,16 @@
|
||||
- [x] Schema: live notification settings stored in server settings (via `liveNotifications` JSON)
|
||||
- Fields: `enabled`, `channelId`, `users[]`, `kickUsers[]`, `message`, `customMessage` (custom overrides default if non-empty)
|
||||
- Users list preserved when updating other live notification settings (fixed: kickUsers now also preserved)
|
||||
- [x] Admin Logs Database Schema: new table for storing moderation action logs
|
||||
- Fields: id, guildId, action (kick/ban/timeout), targetUserId, targetUsername, moderatorUserId, moderatorUsername, reason, duration, endDate, timestamp
|
||||
|
||||
## Security & Behavior
|
||||
- [x] Invite DELETE requires short-lived HMAC token (`x-invite-token`)
|
||||
- [x] Frontend confirmation dialog for invite deletion
|
||||
- [ ] Harden invite-token issuance (require OAuth + admin check)
|
||||
- [ ] Template variables for messages (planned): support `{user}`, `{title}`, `{category}`, `{viewers}` replacement in `message` / `customMessage`
|
||||
- [x] Moderation Command Requirements: require reason field (minimum 3 words) for all moderation commands (`/kick`, `/ban`, `/timeout`)
|
||||
- [x] ServerSettings back button: fixed to navigate to dashboard instead of browser history to prevent accidental accordion opening
|
||||
|
||||
## Docs & Deployment
|
||||
- [x] README and CHANGELOG updated with setup steps and Postgres guidance
|
||||
@@ -90,6 +127,16 @@
|
||||
- Mobile spacing and typography adjustments
|
||||
- Dashboard action buttons repositioned (Invite/Leave under title)
|
||||
- Live Notifications: collapsible accordion with tabbed interface for Twitch and Kick tabs (Kick tab disabled)
|
||||
- [x] All accordions in ServerSettings: consistently grayed out (opacity 0.5) when bot is not in server
|
||||
|
||||
- [x] Footer component: added global footer showing "© ehchadservices.com 2025" on all pages
|
||||
- [x] Dashboard live reloading: real-time updates when bot joins/leaves servers via SSE events
|
||||
- [x] Responsive design: mobile-friendly layout with adaptive padding, typography, and component sizing
|
||||
- [x] Ultra-wide screen support: max-width constraints and overflow prevention
|
||||
- [x] Sticky footer: footer positioned at bottom of viewport regardless of content height
|
||||
|
||||
- [x] Navbar branding: title shows "ECS" on mobile, "EhChadServices" on desktop
|
||||
- [x] Dashboard welcome text: updated to "Welcome back, {username}" with even larger typography (h3/h2 variants) and increased spacing; title also enlarged (h4/h3) for better proportion and explicit margin-bottom for clear line separation
|
||||
|
||||
- [x] Browser tab now shows `ECS - <Page Name>` (e.g., 'ECS - Dashboard')
|
||||
- [x] Dashboard duplicate title fixed; user settings (avatar/themes) restored via NavBar
|
||||
@@ -106,5 +153,6 @@
|
||||
- [x] Moved `ConfirmDialog` and `MaintenancePage` to `components/common`
|
||||
- [x] Moved `ServerSettings` and `HelpPage` to `components/server`
|
||||
- [x] Fixed ESLint warnings: removed unused imports and handlers, added proper dependency management
|
||||
- [ ] Remove legacy top-level duplicate files (archival recommended)
|
||||
- [x] Fixed compilation errors: added missing MUI imports and Snackbar component
|
||||
- [x] Navbar visibility: enhanced with solid background and stronger border for better visibility across all themes
|
||||
|
||||
Reference in New Issue
Block a user