An advanced all-in-one Discord bot for server management, protection, engagement, and monetization.
systemd is a feature-packed Discord bot built from the ground up to handle everything your server needs β moderation, anti-nuke protection, welcome/goodbye greetings, starboard, giveaways, leveling, music, auto-moderation, temporary voice channels, bump reminders, roleplay commands, AI-powered content generation, and more. It's also designed to support a built-in premium subscription system with crypto payments via NOWPayments, so you can self-host and charge users for access to premium AI features.
The bot auto-installs its own dependencies and runs great on Pterodactyl panels or any standard Python environment.
- Kick / Ban / Unban β Standard moderation with role hierarchy checks and DM notifications
- Timeout / Untimeout β Discord native timeout with human-friendly duration parsing (
1h,30m,2d, etc.) - Warn / Warnings / Clearwarns β Full warning system stored in the database with per-user history
- Purge β Bulk message deletion with optional user filter (up to 500 messages)
- Slowmode β Set channel slowmode from 0β21600 seconds
- Lock / Unlock β Lock channels by revoking send permissions (configurable target role via env vars)
- Real-time detection and punishment for mass bans, kicks, channel deletions, role deletions, and webhook spam
- Configurable thresholds per action type (e.g. 3 bans in 10 seconds triggers punishment)
- Punishment options:
ban,kick, orstrip(remove all roles) - Whitelist trusted users from triggering anti-nuke
- Full audit-log-based detection
- Add filtered words with exact match, wildcard (
*,?), or regex patterns - Automatically deletes messages containing filtered content
- Ignore specific channels or roles from filtering
- Users with
Manage Messagespermission bypass filters
- Create automatic replies triggered by specific messages
- Supports placeholders:
{user},{server},{channel},{membercount}, etc. - Manage triggers per-guild with add / remove / list / view / clear
- Customizable welcome and goodbye messages per channel
- Rich placeholder support:
{user},{user.name},{server},{membercount}, etc. - Test your messages before going live with
,welcome testand,goodbye test
- Showcase the best messages in a dedicated channel
- Configurable star emoji, threshold count, and target channel
- Auto-updates star counts on the starboard when reactions change
- Doesn't count the message author's own reaction
- Listens for Disboard bumps and sends a reminder ping after the 2-hour cooldown
- Configurable reminder channel, role ping, and message text
- Background task checks every minute
- Quick start (
giveaway 1h Nitro) or advanced (gw start 1d 3 Nitro) creation - React-to-enter with π β auto-picks random winners when time runs out
- Supports multiple winners, early ending, rerolling, canceling, and listing active giveaways
- All giveaways persist through bot restarts via the database
- Members earn 5β15 XP per message (randomized)
- Check your level with
,levelsand see the server leaderboard with,levels leaderboard
- Automatic setup: creates a "Join to Create" channel and category
- Members join the trigger channel β bot creates a private voice channel for them
- Channel owners can: lock, unlock, rename, set user limit, permit/reject users, change bitrate, transfer ownership
- Channels are automatically deleted when empty
- Play music from YouTube via
yt-dlpwith queue, skip, pause, resume, loop, volume, and now playing - Per-guild player instances with automatic 5-minute idle disconnect
- Loop toggles for single-track repeat
- Generate songs via the Suno API with
,musicgen <prompt> - Supports custom lyrics, music style tags, and instrumental mode
- Integrated hCaptcha solving via 2Captcha when needed
- Premium subscription required
- Built-in payment system via NOWPayments β accept BTC, LTC, ETH, XMR, USDC
- Monthly ($9.99) and yearly ($99.99) plans (fully customizable)
- Automatic payment polling β the bot checks for confirmed transactions every 5 minutes and activates subscriptions
- Premium-gated commands: Uncensored AI chat, text-to-image, text-to-video, image-to-video, video editing, image editing
- Owner command
,addpremium @user 30dfor manual grants - You can configure your own pricing, payment provider, and even resell access to the bot
text2imageβ Generate images from text prompts via Fal.aitext2videoβ Generate videos from text with configurable aspect ratiosimage2videoβ Animate an uploaded image into videoeditimage/editvideoβ Edit uploaded media with AIuncensoredaiβ Chat with an uncensored AI model
- 50+ anime-style roleplay commands with GIF support (hug, kiss, pat, slap, cuddle, poke, etc.)
- GIFs fetched from the Otaku API
deepfry,grayscale,invert,blur,pixelateβ Image/GIF filtersmemeβ Top/bottom text meme generator- Works with attachments, replies, recent images, or URLs
avatarβ Get anyone's avatar in full resolutionuserinfo/serverinfoβ Detailed user and server informationweatherβ Real-time weather by city, state, country, or coordinates
- Pin a persistent message to a channel that re-posts itself at the bottom after new messages
- Add, remove, edit, list, and view sticky messages
- Built-in cooldown to prevent rate-limiting
- Create voice channels that display live stats: members, humans, bots, boosters, roles, channels
- Auto-updates on member join/leave, role create/delete, and channel changes
boostersβ Paginated list of all server boosters sorted by boost dateboostcountβ Server boost stats and progress to next levelboostleaderboardβ Top 10 longest-boosting members
- Post a verification message β members react with β to receive the verified role and lose the unverified role
- Role IDs configured via environment variables
- Prefix β Set server-wide or personal prefix with
,prefix setand,prefix self - Logging β Full audit logging for messages, members, moderation, roles, and channels
- Settings β Configure modlog, jail channel, mute role, staff role, joinlog, welcome/goodbye channels, and autorole
- Ignore β Ignore specific users, channels, or roles from bot commands entirely
- Invoke β Customize punishment DM/response messages for kick, ban, mute, warn, jail, and hardban
- Aliases β Create custom command shortcuts per server
- Autorole β Auto-assign roles to members on join
uwuβ Uwuify any textdefineβ Get both standard dictionary and Urban Dictionary definitionsrpsβ Rock-paper-scissors against the bot
- Monitor YouTube channels for new uploads via RSS
- Ping a role in a Discord channel when a video drops
- Checks every 10 minutes
reloadβ Hot-reload any cog without restarting the bot (owner only)jishakuβ Debug shell loaded automatically if availableaboutβ Bot info embed
- Python 3.10+
- FFmpeg installed and on your PATH (required for music playback)
- A Discord bot token
git clone https://github.com/yourusername/systemd-bot.git
cd systemd-botCopy the example env file and fill in your values:
cp .env.example .envOpen .env and add your bot token at minimum:
DISCORD_TOKEN=your_discord_bot_token_hereSee Environment Variables below for the full list.
python bot.pyThe bot will automatically install all dependencies from requirements.txt on startup β this is designed for ephemeral hosting environments like Pterodactyl. If you're running locally and prefer to install manually:
pip install -r requirements.txt
python bot.pyGenerate an invite link from the Discord Developer Portal with the following permissions:
- Administrator (recommended), or individually select: Manage Roles, Manage Channels, Kick Members, Ban Members, Manage Messages, Read Message History, Send Messages, Use External Emojis, Add Reactions, Connect, Speak, Move Members, Manage Webhooks, View Audit Log, Moderate Members
| Variable | Required | Description |
|---|---|---|
DISCORD_TOKEN |
β | Your Discord bot token |
VERIFIED_ROLE_ID |
β | Role ID granted on verification |
UNVERIFIED_ROLE_ID |
β | Role ID removed on verification |
MEMBER_ROLE_ID |
β | Role targeted by ,lock / ,unlock (falls back to @everyone) |
NOWPAYMENTS_API_KEY |
β | NOWPayments API key for crypto payments |
UNCENSORED_AI_KEY |
β | API key for the uncensored AI feature |
FAL_KEY |
β | Fal.ai API key for AI image/video generation |
SUNO_COOKIE |
β | Suno session cookie for AI music generation |
TWOCAPTCHA_KEY |
β | 2Captcha key for solving Suno captchas |
The default prefix is , (comma). You can change it per-server:
,prefix set !
Or set a personal prefix that follows you across all servers:
,prefix self !
systemd-bot/
βββ bot.py # Entry point β bot class, prefix logic, startup
βββ requirements.txt # Python dependencies
βββ .env.example # Template environment variables
βββ assets/
β βββ logo.png # Bot logo
βββ data/
β βββ systemd.db # SQLite database (auto-created)
βββ cogs/
β βββ alias.py # Command aliases
β βββ antinuke.py # Anti-nuke protection
β βββ automod.py # Word filtering / automod
β βββ autoresponder.py # Auto-reply triggers
β βββ boosters.py # Booster tracking
β βββ bump.py # Disboard bump reminders
β βββ config.py # Logging & ignore system
β βββ counter.py # Live stat counters
β βββ embed.py # Embed builder & manager
β βββ fun.py # Fun commands
β βββ general.py # General / utility commands
β βββ giveaways.py # Giveaway system
β βββ greet.py # Welcome & goodbye messages
β βββ help.py # Paginated help menu
β βββ invoke.py # Custom punishment messages
β βββ leveling.py # XP & leveling system
β βββ media.py # Image/GIF manipulation
β βββ misc.py # AFK system & misc
β βββ moderation.py # Moderation commands
β βββ music.py # YouTube music player
β βββ music_gen.py # AI music generation (Suno)
β βββ premium.py # Premium system & AI features
β βββ prefix.py # Prefix management
β βββ roles.py # Role management & autorole
β βββ rp.py # 50+ roleplay commands
β βββ settings.py # Guild settings
β βββ social.py # YouTube upload notifications
β βββ starboard.py # Starboard
β βββ stickymessage.py # Sticky messages
β βββ utility.py # Avatar, user/server info, weather
β βββ verify.py # Reaction-based verification
β βββ voicemaster.py # Temporary voice channels
βββ utils/
βββ database.py # SQLite database wrapper
systemd comes with a fully functional premium subscription system out of the box. It uses NOWPayments to accept cryptocurrency payments (BTC, LTC, ETH, XMR, USDC), but you're free to swap in any payment provider you want.
How it works:
- A user runs
,buy monthor,buy year - The bot creates a payment via the NOWPayments API and sends them a crypto address + amount
- A background task polls NOWPayments every 5 minutes for payment confirmations
- Once confirmed, the user's premium subscription is automatically activated and they're DM'd a confirmation
- Premium commands (AI image/video generation, uncensored AI, music generation) are gated behind an active subscription
You can customize pricing, supported currencies, subscription durations, and which commands require premium. The bot owner can also manually grant premium with ,addpremium @user 30d.
This means you can self-host systemd and run it as a paid service. Set your own prices, plug in your own NOWPayments (or Stripe, PayPal, etc.) keys, and charge users for premium features.
systemd is built to run anywhere:
- Pterodactyl β The bot auto-detects Pterodactyl's Python environment and patches
sys.pathaccordingly. Dependencies auto-install on every boot. - VPS / Dedicated Server β Just clone, set up
.env, and runpython bot.py. - Docker β Wrap it in a simple Python 3.10+ container with FFmpeg installed.
All dependencies are listed in requirements.txt and auto-installed on bot startup:
discord.pyβ Discord API wrapperaiosqliteβ Async SQLite for the databasepython-dotenvβ .env file loaderjishakuβ Debug/eval cog for bot ownersaiohttpβ Async HTTP clientPillowβ Image processing for media commandshumanfriendlyβ Human-readable formattingfal-clientβ Fal.ai SDK for AI generationopenaiβ OpenAI-compatible API clientyt-dlpβ YouTube audio extraction for musicPyNaClβ Voice encryption for music playbackfeedparserβ RSS feed parsing2captcha-pythonβ Captcha solving for Suno
Pull requests are welcome. If you're adding a new cog, just drop it in the cogs/ folder and it'll be auto-loaded on the next restart. Make sure to create any necessary database tables in your cog's setup() function.
This project is provided as-is. Feel free to self-host, modify, and monetize it however you want.
