new file: .gitignore
new file: Dockerfile new file: README.md new file: app.py new file: index.html new file: projekte des/PROJECT_DESCRIPTION.txt new file: projekte des/WEBSITE_DESCRIPTION.md new file: projekte des/website_project_description_en.txt new file: requirements.txt new file: script.js new file: static/css/styles.css new file: static/js/script.js new file: styles.css new file: templates/about.html new file: templates/base.html new file: templates/contact.html new file: templates/index.html new file: templates/minecraft.html new file: templates/project_detail.html new file: templates/projects.html
This commit is contained in:
95
projekte des/website_project_description_en.txt
Normal file
95
projekte des/website_project_description_en.txt
Normal file
@@ -0,0 +1,95 @@
|
||||
SimolZimol Discord AI Bot — Moderation, Giveaways, and Web Dashboard
|
||||
|
||||
Overview
|
||||
A production-ready Discord bot built by SimolZimol that combines advanced moderation, a persistent giveaway engine with Steam/Epic game integration, AI-powered utilities, and a lightweight Flask-based admin dashboard. The project focuses on reliability, data persistence, and a great user experience for community servers.
|
||||
|
||||
Highlights
|
||||
- Advanced Moderation System: Warnings, temporary mutes with automatic unmute, role restoration, detailed logs, and user-friendly commands with numeric and UUID identifiers.
|
||||
- Persistent Giveaways: Robust giveaway engine with UUID-based IDs, sponsor attribution, Steam URL parsing (auto title/image), message auto-updates on edits, and restart-safe state via MySQL.
|
||||
- Web Dashboard: Flask templates for server admin and user views (leaderboard, user data, settings, logs) to complement Discord commands.
|
||||
- Reliability & Recovery: Active processes are tracked in the database and restored on startup so running giveaways are never lost.
|
||||
- Clean UX: Rich embeds, buttons for joining giveaways, clear admin feedback, and helpful list/view commands for transparency.
|
||||
|
||||
Key Features
|
||||
1) Moderation & Safety
|
||||
- Warn and mute users with clear audit trails
|
||||
- Temporary mutes stored in user_mutes table; auto-unmute + role restoration
|
||||
- View/list mutes with status filters (active, completed, expired, cancelled)
|
||||
- Mod log channel integration and smart notifications
|
||||
|
||||
2) Giveaways (Steam/Epic Ready)
|
||||
- Start giveaways with title, subtitle, prize, duration, platform, sponsor, and optional game URL
|
||||
- Steam integration via aiohttp: automatic game info extraction (title, image, short description)
|
||||
- Sponsor handling: mention parsing to display a clean sponsor name in the embed footer
|
||||
- UUID-based giveaway IDs for reliability across restarts and edits
|
||||
- Edit giveaways after launch; the original Discord post updates automatically
|
||||
- List giveaways from memory and database; load any giveaway back into memory on demand
|
||||
- Full restart safety: active giveaways are restored when the bot starts
|
||||
|
||||
3) Web & Admin Experience
|
||||
- Flask-powered pages (templates folder) for landing, dashboards, settings, users, logs, giveaways
|
||||
- Complements Discord-first management with a browsable UI for staff and users
|
||||
|
||||
4) Observability & Logs
|
||||
- Structured log files per day to simplify troubleshooting
|
||||
- Clear status messages for admins after every critical action (create, edit, load)
|
||||
|
||||
Architecture at a Glance
|
||||
- Language: Python
|
||||
- Frameworks/Libraries: discord.py, Flask, aiohttp, aiomysql, regex, requests
|
||||
- Data: MySQL (connection pooling) with tables for user data, mutes, and active processes
|
||||
- Process Orchestration: A process manager persists and restores active tasks (e.g., running giveaways)
|
||||
- Caching: In-memory maps for hot data with DB as the source of truth
|
||||
- Background Workers: Queues for AI tasks and live chat processing
|
||||
|
||||
How Giveaways Work
|
||||
1) Creation: Admin triggers a hybrid command; the bot builds a rich embed with join button and (optional) Steam info.
|
||||
2) Persistence: A process entry is created in MySQL (active_processes) with all metadata and end time.
|
||||
3) Participation: Users join via button; participants are tracked and persisted.
|
||||
4) Editing: Admins can modify title/subtitle/prize/sponsor/duration; embeds update automatically.
|
||||
5) Resilience: If the bot restarts, giveaways are restored from the database (including message IDs) and continue.
|
||||
6) Completion: Winners are selected and recorded; sponsors and results can be announced.
|
||||
|
||||
Notable Technical Decisions
|
||||
- UUIDs as Giveaway IDs: Avoids collisions and survives restarts; matches process UUIDs in the DB.
|
||||
- Dual-Source Listing: listgiveaways reads both live memory and DB to present the complete picture.
|
||||
- Message Update Pipeline: Each giveaway stores its message ID so edits can refresh the original post.
|
||||
- Sponsor Mentions: Clean display names in embeds even when the raw input is a mention or handle.
|
||||
|
||||
Security & Permissions
|
||||
- Local permission levels (5+ for moderators, higher for admins/owner)
|
||||
- Command gating for sensitive operations (edit, load, list, config)
|
||||
- Read-only fallbacks where appropriate to avoid destructive actions
|
||||
|
||||
What You Can Do With It
|
||||
- Run a professional-grade community bot with moderation and giveaway tools
|
||||
- Host sponsor-backed game key drops integrated with Steam/Epic pages
|
||||
- Offer a friendly web dashboard for staff and users alongside Discord commands
|
||||
|
||||
Getting Started (Local)
|
||||
- Requirements are listed in requirements.txt (Python 3.10+ recommended)
|
||||
- Create a virtual environment and install dependencies
|
||||
- Provide your Discord and database credentials via environment variables or config
|
||||
- Start the bot (bot.py) and optional Flask app (app.py)
|
||||
|
||||
Production Notes
|
||||
- Use a managed MySQL instance and set up proper connection pooling
|
||||
- Run the bot in a process manager (e.g., systemd, pm2, or Docker as provided)
|
||||
- Configure regular backups for the database (active processes, user_mutes, user_data)
|
||||
- Rotate logs and monitor for rate limits or permission issues
|
||||
|
||||
Status & Roadmap
|
||||
- Completed: Persistent mutes, restart-safe giveaways, Steam integration, sponsor support, message auto-updates, admin listing/editing
|
||||
- In Progress: Quality-of-life improvements across dashboard and command UX
|
||||
- Future Ideas: Analytics, multi-language embeds, role-locked giveaways, prize claim portals
|
||||
|
||||
About the Author
|
||||
Built by SimolZimol — I design and operate community-first tooling with a focus on reliability, clear UX, and practical automation.
|
||||
|
||||
Contact & Links
|
||||
- Email/Discord: (your preferred contact)
|
||||
- Live Demo: (link if hosted)
|
||||
- Source Code: (GitHub/website link)
|
||||
|
||||
Short Blurb (Copy-Paste)
|
||||
A production-ready Discord bot by SimolZimol featuring advanced moderation, a restart-safe giveaway engine with Steam integration, and a companion Flask dashboard — built for reliability, clarity, and great community UX.
|
||||
Reference in New Issue
Block a user