30 Claude Prompts That Build Discord Bots
Describe the bot you want and Claude returns runnable discord.js or discord.py code with slash commands, event handlers, and setup steps. Prompts for moderation, welcome flows, reaction roles, games, reminders, polls, and community tools. Not "explain how bots work".
In short: This page contains 30 copy-paste ready prompts, organized into 6 categories with a description and pro tip for each. The first 15 prompts are free instantly โ no signup needed. Hand-curated and tested by the AI Academy team.
Moderation Bots
5 promptsAuto-Moderation & Bad-Word Filter Bot
1/30You are a senior discord.js engineer who ships production-ready moderation bots. <context> I need a single-file, runnable Discord auto-moderation bot that scans messages, deletes rule-breaking content, and warns the author. The output must be a self-contained, ready-to-run artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Blocked content: [PROFANITY LIST / INVITE LINKS / MASS MENTIONS / ALL CAPS] - Action on violation: [DELETE + WARN / DELETE + TIMEOUT] - Warn threshold before timeout: [E.G. 3] - Log channel name or ID: [MOD-LOG] - Roles exempt from filtering: [ADMIN, MODERATOR] </inputs> <task> Build the full bot: client with the needed intents (MessageContent, GuildMessages, GuildMembers), a configurable RULES object at the top holding the word list and thresholds, a messageCreate handler that normalizes text (lowercase, de-leet, strip zero-width chars) before matching, deletion of offending messages, an in-memory warn counter per user, escalation to a timeout at the threshold, and an embed logged to the mod-log channel for every action. Include an example .env and the exact npm/pip install line. </task> <constraints> - One self-contained file; valid, runnable syntax; no pseudocode. - Exempt roles and the bot itself must never be actioned. - Comment each section; make the word list and thresholds trivial to edit at the top. </constraints> <format> Return the complete bot file as a code block, then a short "setup in 4 steps" note (token, intents in the Developer Portal, install, run). </format>
Produces a complete, runnable auto-moderation bot that filters banned content, warns, and escalates to timeouts, ready to use.
Pro tip: Give Claude your real blocked-word list and exempt roles up front so the config object works without edits on first run.
Anti-Spam & Raid-Protection Bot
2/30You are a Discord security engineer who builds anti-spam and anti-raid systems. <context> My server keeps getting hit by spam bursts and join raids. I need a runnable bot that detects both and locks things down automatically, delivered as one self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Spam trigger: [X MESSAGES IN Y SECONDS, E.G. 5 IN 3] - Duplicate-message trigger: [SAME MESSAGE N TIMES] - Raid trigger: [X JOINS IN Y SECONDS] - Spam action: [TIMEOUT / KICK] - Raid action: [ENABLE VERIFICATION LOCKDOWN / PAUSE INVITES + ALERT] - Alert channel: [MOD-ALERTS] </inputs> <task> Build the bot with: a per-user sliding-window message rate tracker, duplicate-content detection, and a join-rate tracker across the guild. On spam, mute or time the user out and log it; on a detected raid, post a loud alert embed to the mod channel and trigger the configured lockdown response. Keep all thresholds in one CONFIG block. Auto-clear stale tracking data so memory does not grow unbounded. </task> <constraints> - One self-contained, runnable file; correct intents; no placeholders in logic. - False-positive safety: exempt staff roles and ignore the bot's own messages. - Comment the rate-window math so I can tune it. </constraints> <format> Return the full bot as a code block, then explain each threshold and how to tune it for a small vs. large server. </format>
Generates a runnable anti-spam and anti-raid bot with rate-window detection and automatic lockdown, ready to use.
Pro tip: Tell Claude your server size; the safe message-per-second thresholds differ a lot between a 200-member and a 50,000-member guild.
Warn / Mute / Ban Command Bot
3/30You are a discord.js engineer specializing in moderator tooling and slash commands. <context> I need a moderation command bot with slash commands for warning, muting (timeout), kicking, and banning members, plus a persistent case log. Deliver it as a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Storage for cases: [JSON FILE / SQLITE] - Commands wanted: [/warn /mute /unmute /kick /ban /unban /warnings /case] - Who can use them: [ROLE OR PERMISSION, E.G. MODERATE_MEMBERS] - Mod-log channel: [MOD-LOG] - DM the user on action: [YES / NO] </inputs> <task> Build the bot with slash-command registration, a permission gate on every mod command, a case system that assigns an incrementing case ID and stores {caseId, type, target, moderator, reason, timestamp}, /warnings and /case lookups that read it back, optional DM to the target explaining the action, and an embed to the mod-log for each case. Handle role-hierarchy errors (cannot action someone above the bot) gracefully with a clear reply. </task> <constraints> - One self-contained, runnable file; include the command-registration script inline or as a clearly marked block. - Validate permissions and hierarchy before every action; never crash on missing member. - Persist cases so they survive a restart. </constraints> <format> Return the complete bot code, then a table listing each command, its options, and the permission required. </format>
Builds a full moderation command bot with warn/mute/ban slash commands and a persistent case log, ready to use.
Pro tip: Ask for SQLite storage if you expect thousands of cases; JSON is fine for a small server and easier to inspect by hand.
Slowmode & Link-Filter Bot
4/30You are a discord.js engineer who builds channel-hygiene bots. <context> I want a bot that auto-manages slowmode based on activity and filters unwanted links in specific channels. Deliver a single runnable artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Channels to manage: [CHANNEL IDS OR NAMES] - Auto-slowmode rule: [E.G. IF >30 MSGS/MIN SET 10s SLOWMODE, RELAX WHEN QUIET] - Link policy: [ALLOWLIST DOMAINS / BLOCK ALL EXCEPT STAFF] - Allowed domains: [E.G. YOUTUBE.COM, GITHUB.COM] - Action on bad link: [DELETE + WARN] </inputs> <task> Build the bot with: a per-channel message-rate tracker that raises slowmode during bursts and lowers it when traffic calms, a link detector that extracts URLs and checks them against the domain allowlist, deletion plus a short ephemeral-style warning for disallowed links, and staff-role exemption. Keep channel config and the allowlist in one editable object. </task> <constraints> - One self-contained, runnable file; correct intents; live, working URL parsing. - Never touch channels not in the config; exempt staff and the bot. - Comment the slowmode step logic so I can adjust the tiers. </constraints> <format> Return the full bot code, then explain the slowmode tiers and how to add a channel to the managed list. </format>
Creates a runnable bot that auto-adjusts slowmode by activity and enforces a link allowlist per channel, ready to use.
Pro tip: Provide your exact allowlist domains; Claude will build the matcher to catch subdomains and query strings, not just exact URLs.
Message Purge & Bulk-Delete Bot
5/30You are a discord.js engineer building safe cleanup tooling for moderators. <context> I need a slash-command bot to bulk-delete messages with useful filters, respecting Discord's 14-day bulk-delete limit. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Purge filters wanted: [COUNT / BY USER / CONTAINS TEXT / BOTS ONLY / HAS LINKS] - Max messages per command: [E.G. 100] - Who can run it: [MANAGE_MESSAGES PERMISSION] - Log purges to: [MOD-LOG CHANNEL] - Confirmation before deleting: [YES / NO] </inputs> <task> Build a /purge command with options for count, target user, text-contains, and bots-only. Fetch recent messages, apply the filters, split out messages older than 14 days (which cannot be bulk-deleted) and report how many were skipped, perform the bulk delete, reply ephemerally with a summary (deleted, skipped, filters used), and log the action to the mod-log with the moderator and filters. Optionally require a confirm button first. </task> <constraints> - One self-contained, runnable file including command registration. - Handle the 14-day limit and empty-result cases without throwing. - Gate on MANAGE_MESSAGES; never delete outside the invoking channel. </constraints> <format> Return the complete bot code, then note the exact behavior when messages are older than 14 days and how the summary is reported. </format>
Generates a safe /purge bot with user/text/bot filters that respects the 14-day bulk-delete limit, ready to use.
Pro tip: Turn on the confirm button for large purges; it prevents an accidental "purge 100" from wiping a channel you did not mean to touch.
XML tags are just the start. Learn the full Claude workflow.
A growing library of 300+ hands-on AI tutorials covering Claude, ChatGPT, and 50+ tools. New tutorials added every week.
Welcome & Onboarding Bots
5 promptsWelcome Message & Image-Card Bot
6/30You are a discord.js engineer who builds polished welcome experiences. <context> When a member joins I want the bot to post a warm welcome with a generated image card (avatar + username + member number). Deliver a single runnable artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 (USE @napi-rs/canvas OR canvas)] - Welcome channel: [WELCOME CHANNEL ID/NAME] - Card style: [DESCRIBE COLORS / BACKGROUND / TEXT] - Welcome copy: [MESSAGE, USE {user} AND {count} TOKENS] - Also send a DM: [YES / NO โ AND ITS TEXT] - Mention the member: [YES / NO] </inputs> <task> Build the bot: on guildMemberAdd, draw a welcome card on a canvas (rounded avatar fetched from the member, username, and "Member #N"), attach it to an embed or message in the welcome channel with the configured copy (tokens replaced), and optionally DM the new member. Keep colors, text, and the copy template in one CONFIG block. Handle members who have DMs closed without crashing. </task> <constraints> - One self-contained, runnable file; include the canvas install line and required intents (GuildMembers). - Real drawing code, not a placeholder; graceful fallback if avatar fetch fails. - Comment the canvas layout so I can reposition text and swap the background. </constraints> <format> Return the full bot code, then explain how to change the card background image and adjust the text positions. </format>
Builds a welcome bot that renders a custom avatar image card and posts it on join, ready to use.
Pro tip: Hand Claude your brand colors and a background idea; it bakes them into the canvas so the card matches your server on first run.
Rules Gate & Verification Bot
7/30You are a discord.js engineer who builds verification gates that stop bot accounts. <context> New members should stay locked out until they agree to the rules. I need a verification bot where clicking a button (or reacting) grants the Member role. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Verify method: [BUTTON / REACTION EMOJI] - Role to grant: [MEMBER ROLE ID/NAME] - Rules text: [PASTE YOUR RULES] - Post-verify action: [WELCOME DM / ANNOUNCE IN CHANNEL / NOTHING] - Optional: [REQUIRE ACCOUNT OLDER THAN N DAYS] </inputs> <task> Build the bot with a /setup-verify command (staff only) that posts a rules embed with a green "I Agree" button, an interaction handler that grants the Member role on click and replies ephemerally to confirm, and idempotent behavior (already-verified users get a friendly "you're already in"). If the age gate is set, reject accounts younger than the threshold with a clear message. Include button custom-id handling that survives restarts. </task> <constraints> - One self-contained, runnable file including command registration. - Grant must be gated to the exact button; verify the member does not already have the role. - Handle missing role / insufficient permissions with a clear staff-facing error. </constraints> <format> Return the complete bot code, then explain how to re-post the verify panel and how the age gate works. </format>
Creates a rules-gate verification bot that grants the Member role on button click, with an optional account-age gate, ready to use.
Pro tip: Enable the account-age gate at 7 days to block freshly-created raid accounts without annoying real newcomers.
New-Member Onboarding DM Sequence
8/30You are a discord.js engineer building lifecycle onboarding flows. <context> I want new members to receive a short, staged onboarding DM sequence over their first few days, with each step nudging them toward one action. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Storage: [JSON FILE / SQLITE for scheduling state] - Sequence steps: [E.G. DAY 0 WELCOME, DAY 1 PICK ROLES, DAY 3 INTRO IN #GENERAL] - Each step's message + link/channel: [DESCRIBE] - Stop sending if: [USER LEAVES / VERIFIES] - Channels to reference: [ROLES CHANNEL, INTRO CHANNEL] </inputs> <task> Build the bot: on guildMemberAdd, enqueue the member with a schedule of timed DM steps; a persistent scheduler (setInterval + stored timestamps, restart-safe) checks who is due and sends the next step; each step is a clean embed with one clear CTA. Cancel remaining steps if the member leaves. Keep the whole sequence definition in one editable array so I can add or reorder steps. </task> <constraints> - One self-contained, runnable file; scheduling state must survive a restart. - Respect users with closed DMs (skip gracefully, mark as unreachable). - Comment the scheduler so I can change delays from days to hours for testing. </constraints> <format> Return the full bot code, then explain the schedule data model and how to add a new step. </format>
Produces a restart-safe onboarding bot that DMs new members a staged, CTA-driven sequence, ready to use.
Pro tip: Set the delays to minutes while testing, then switch to days; Claude will keep a single constant so it is a one-line change.
Auto-Role On Join Bot
9/30You are a discord.js engineer building membership automation. <context> I need a lightweight bot that automatically assigns one or more roles when a member joins, with support for separate roles for humans and bots. Deliver a single runnable artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Roles for human joins: [ROLE IDS/NAMES] - Roles for bot joins: [ROLE IDS/NAMES OR NONE] - Optional delay before assigning: [E.G. 0s / 10s to pass verification] - Announce the join: [YES + CHANNEL / NO] - Skip if member already has a role: [YES / NO] </inputs> <task> Build the bot: on guildMemberAdd, determine whether the account is a bot, assign the configured role set after the optional delay, and optionally post a short join announcement. Keep all role IDs in one CONFIG object. Handle the case where the bot's role is below the target role in the hierarchy by logging a clear, actionable warning instead of silently failing. </task> <constraints> - One self-contained, runnable file; correct GuildMembers intent enabled. - Never assign a role above the bot's own highest role; surface the error clearly. - Idempotent: do not re-add roles the member already has. </constraints> <format> Return the complete bot code, then explain the role-hierarchy requirement and how to add more roles. </format>
Generates a runnable auto-role bot that assigns roles on join with separate human/bot handling, ready to use.
Pro tip: Make sure the bot's role sits above every role it assigns in Server Settings, or the assignment silently fails, Claude flags this in the setup note.
Goodbye & Member-Leave Logger
10/30You are a discord.js engineer building member-retention telemetry. <context> I want a bot that posts a tidy goodbye message when someone leaves and logs useful leave data (join date, time in server, roles held) to a staff channel. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Goodbye channel: [CHANNEL ID/NAME] - Staff log channel: [AUDIT CHANNEL] - Goodbye copy: [MESSAGE, USE {user} TOKEN] - Log fields wanted: [JOINED AT, TENURE, ROLES, WAS KICKED/BANNED IF DETECTABLE] - Also track total member count: [YES / NO] </inputs> <task> Build the bot: on guildMemberRemove, post the configured goodbye message to the goodbye channel and a detailed embed to the staff log showing joinedAt, computed tenure (e.g. "3 months, 12 days"), and the roles the member had. If audit-log access is available, note whether the removal looks like a kick or ban. Optionally update a running member-count display. Keep copy and channel IDs in one CONFIG block. </task> <constraints> - One self-contained, runnable file; GuildMembers intent enabled. - Compute tenure from joinedAt safely (handle unknown join date). - Comment the audit-log lookup so I can disable it if the bot lacks the permission. </constraints> <format> Return the full bot code, then explain the tenure calculation and what permission the kick/ban detection needs. </format>
Builds a goodbye-and-leave-logger bot that posts farewells and logs tenure, roles, and removal type, ready to use.
Pro tip: Grant the bot View Audit Log so it can distinguish a voluntary leave from a kick or ban in the staff log.
Role & Reaction Bots
5 promptsReaction-Role Menu Bot
11/30You are a discord.js engineer who builds reaction-role systems used by large servers. <context> I want a classic reaction-role menu: members react to a message with an emoji to get the matching role, and removing the reaction removes the role. Deliver a single runnable artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Emoji-to-role map: [E.G. ๐ด -> RED TEAM, ๐ฎ -> GAMER, ๐ -> ANNOUNCEMENTS] - Channel for the menu: [CHANNEL ID/NAME] - Menu title and description: [DESCRIBE] - Exclusive group?: [ONLY ONE ROLE AT A TIME / MULTIPLE ALLOWED] - Persist across restarts: [YES] </inputs> <task> Build the bot with a /setup-reactionroles command (staff only) that posts the menu embed and adds all the emojis. Handle messageReactionAdd and messageReactionRemove: map the emoji to the role and add/remove it for that member. Store the message ID and the emoji-role map so it survives a restart (fetch partials on ready). If "exclusive" is set, remove other roles in the group when a new one is chosen. </task> <constraints> - One self-contained, runnable file; enable GuildMessageReactions intent and handle partials. - Ignore reactions from bots and reactions on unrelated messages. - Comment the emoji-role config so custom (server) emojis can be added by ID. </constraints> <format> Return the complete bot code, then explain how to add a role and how custom emoji IDs differ from unicode emojis. </format>
Creates a persistent reaction-role menu bot with optional exclusive groups, ready to use.
Pro tip: For custom server emojis, give Claude the full <:name:id> form; unicode and custom emojis are matched differently in the handler.
Button / Select-Menu Self-Role Panel
12/30You are a discord.js engineer who builds modern component-based role panels. <context> I want a self-role panel built with buttons or a select menu (not reactions) so members can toggle roles cleanly. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14] - Component type: [BUTTONS / STRING SELECT MENU] - Roles offered: [ROLE NAME + EMOJI + DESCRIPTION FOR EACH] - Panel channel, title, description: [DESCRIBE] - Multi-select allowed: [YES / NO] - Ephemeral confirmations: [YES] </inputs> <task> Build the bot with a /setup-roles command (staff only) that posts the panel. For buttons: each button toggles its role on click. For a select menu: the chosen values are synced to the member's roles (adding new, removing deselected). Reply with an ephemeral confirmation listing what changed. Use stable custom IDs so the panel keeps working after a restart. Keep the role list in one editable array. </task> <constraints> - One self-contained, runnable file including command registration. - Toggle logic must be correct: clicking again removes the role; deselecting in the menu removes it. - Handle the 5-buttons-per-row / 25-option limits gracefully. </constraints> <format> Return the complete bot code, then explain the toggle logic and the component limits to keep in mind when adding roles. </format>
Generates a button or select-menu self-role panel bot with ephemeral confirmations, ready to use.
Pro tip: Choose the select menu if you have more than 5 roles; buttons cap at 5 per row and 25 total, which Claude will note in the code.
Leveling & XP-Role Bot
13/30You are a discord.js engineer who builds engagement and leveling systems. <context> I want a leveling bot that awards XP for chatting, announces level-ups, and grants role rewards at milestones. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Storage: [SQLITE / JSON] - XP per message + cooldown: [E.G. 15-25 XP, 60s ANTI-SPAM COOLDOWN] - Level curve: [E.G. 5*(lvl^2)+50*lvl+100] - Role rewards: [LEVEL -> ROLE MAP] - Commands: [/rank /leaderboard] - No-XP channels: [SPAM, BOT-COMMANDS] </inputs> <task> Build the bot: a messageCreate handler that grants randomized XP per message with a per-user cooldown (ignoring no-XP channels and bots), a level formula, a level-up announcement, milestone role grants, and slash commands /rank (show a user's level, XP, and progress bar) and /leaderboard (top 10). Persist XP so it survives restarts. Keep the curve, cooldown, and reward map in one CONFIG block. </task> <constraints> - One self-contained, runnable file; correct intents; persistent storage that survives restarts. - Cooldown must actually prevent XP farming; comment the level math. - /rank progress bar rendered as text (no image dependency required). </constraints> <format> Return the complete bot code, then explain the level curve and how to tune XP rate and rewards. </format>
Builds a persistent XP leveling bot with level-up rewards and /rank plus /leaderboard commands, ready to use.
Pro tip: Keep the per-message cooldown at 60 seconds; without it, users farm XP by spamming and the leaderboard becomes meaningless.
Temporary / Timed-Role Bot
14/30You are a discord.js engineer who builds time-based role automation. <context> I want to grant roles that automatically expire, useful for trials, event access, or temporary mutes. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Storage: [SQLITE / JSON for expiry timestamps] - Command: [/temprole @user role duration reason] - Duration format accepted: [E.G. 30m, 2h, 7d] - Who can use it: [MANAGE_ROLES] - On expiry: [REMOVE ROLE + OPTIONAL LOG] </inputs> <task> Build the bot with a /temprole command that parses a human duration (e.g. "90m", "3d"), grants the role, stores the expiry, and confirms. A restart-safe scheduler checks stored assignments and removes each role when its time is up, logging the removal. Include /temprole-list to show active temporary roles and /temprole-cancel to end one early. Handle server restarts by re-scheduling from storage on ready. </task> <constraints> - One self-contained, runnable file; expiries must survive a restart (persist + reschedule on ready). - Robust duration parser with clear errors on bad input. - Gate on MANAGE_ROLES and respect role hierarchy. </constraints> <format> Return the complete bot code, then explain the duration parser and how the scheduler recovers after a restart. </format>
Creates a timed-role bot that grants roles which auto-expire, with list and cancel commands, ready to use.
Pro tip: Use this for paid-trial access; when the temp role expires the member loses the perk automatically with no manual cleanup.
Color-Role Picker Bot
15/30You are a discord.js engineer who builds cosmetic role systems. <context> I want members to pick a username color from a palette via a panel, with the bot managing mutually-exclusive color roles. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14] - Colors offered: [NAME + HEX FOR EACH, E.G. CORAL #FF6B6B] - Panel type: [BUTTONS / SELECT MENU] - Panel channel, title: [DESCRIBE] - Auto-create the roles if missing: [YES / NO] - Reset option to remove color: [YES] </inputs> <task> Build the bot with a /setup-colors command (staff only) that, if enabled, creates any missing color roles with the right hex, then posts a picker panel. When a member selects a color, remove all other color roles and apply the chosen one; include a "None" option to clear. Confirm ephemerally. Keep the palette in one editable array of {name, hex}. Ensure color roles carry no permissions. </task> <constraints> - One self-contained, runnable file including command registration. - Exactly one color role at a time; created roles must have zero permissions and correct hex. - Handle the case where the bot's role is below the color roles (cannot assign) with a clear error. </constraints> <format> Return the complete bot code, then explain how auto-creation works and how to reorder the palette. </format>
Produces a color-role picker bot that manages a mutually-exclusive palette and can auto-create the roles, ready to use.
Pro tip: Let the bot auto-create the roles from your hex list; it is far faster than making a dozen color roles by hand in Server Settings.
Games & Fun Bots
5 promptsTrivia Quiz Bot
16/30You are a discord.js engineer who builds interactive game bots. <context> I want a trivia bot that asks multiple-choice questions with buttons, scores answers, and tracks a leaderboard. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Question source: [BUILT-IN SAMPLE SET / OPEN TRIVIA DB API] - Categories/difficulty: [DESCRIBE OR ANY] - Answer time limit: [E.G. 15s] - Points: [E.G. FIRST CORRECT 3, OTHERS 1] - Storage for scores: [JSON / SQLITE] - Commands: [/trivia /trivia-leaderboard] </inputs> <task> Build the bot with /trivia that posts a question as an embed with four labeled buttons, disables them after the time limit, reveals the correct answer, awards points (bonus for first correct), and updates persistent scores. Prevent double-answering by the same user. Add /trivia-leaderboard for the top 10. If using an external API, include fetch with a graceful fallback to the built-in set on failure. Keep sample questions and settings editable at the top. </task> <constraints> - One self-contained, runnable file; correct button-interaction handling and timeouts. - One answer per user per question; scores persist across restarts. - No unhandled promise rejections on timeout or API failure. </constraints> <format> Return the complete bot code, then explain how to swap in your own question bank or the trivia API. </format>
Builds a button-based trivia bot with timed questions, scoring, and a persistent leaderboard, ready to use.
Pro tip: Start with the built-in question set to test the flow, then point Claude at the Open Trivia DB for an endless question supply.
Hangman / Word-Guess Game Bot
17/30You are a discord.js engineer who builds turn-based text games. <context> I want a hangman-style word-guessing game where players guess letters and the bot tracks progress per channel. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Word list source: [BUILT-IN THEMED LIST / CATEGORY] - Max wrong guesses: [E.G. 6] - Play mode: [SLASH COMMAND TO START, GUESS VIA MESSAGES / BUTTONS] - Multiplayer: [ANYONE IN CHANNEL CAN GUESS / SINGLE PLAYER] - Win/lose messages: [DESCRIBE] </inputs> <task> Build the bot with /hangman to start a game in a channel (rejecting a second concurrent game there), a display of the masked word, guessed letters, and remaining lives (ASCII gallows optional), letter-guess handling (via messages or buttons), correct/incorrect feedback, and win/lose detection that ends the game and reveals the word. Store one active game per channel in memory. Keep the word list editable at the top. </task> <constraints> - One self-contained, runnable file; one game per channel; ignore duplicate letter guesses. - Handle non-letter input and already-guessed letters gracefully. - Clean up the game state when it ends. </constraints> <format> Return the complete bot code, then explain the per-channel game state and how to add themed word lists. </format>
Generates a hangman word-guessing game bot with per-channel state and win/lose detection, ready to use.
Pro tip: Give Claude a themed word list (movies, coding terms, your niche) so the game feels tailored to your community instead of generic.
Meme / Random-Image Fetch Bot
18/30You are a discord.js engineer who builds fun content bots. <context> I want a bot that fetches a random meme or image on command from an API or a curated list, with basic NSFW safety. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Source: [MEME API (E.G. meme-api.com) / CURATED URL LIST / SUBREDDIT] - Commands: [/meme, OPTIONAL /meme category] - NSFW handling: [ONLY IN NSFW CHANNELS / ALWAYS FILTER OUT NSFW] - Cooldown per user: [E.G. 5s] - Attribution: [SHOW SOURCE/TITLE IN EMBED] </inputs> <task> Build the bot with /meme that fetches from the configured source, checks the NSFW flag against the channel type, and posts the image in an embed with title and source link. Add a per-user cooldown to prevent spam, graceful handling of API errors or empty responses, and an optional category argument. Keep the source URL and settings in one CONFIG block. </task> <constraints> - One self-contained, runnable file; real fetch code with timeout and error handling. - Never post NSFW content in non-NSFW channels; respect the cooldown. - Handle network failures with a friendly "try again" reply, not a crash. </constraints> <format> Return the complete bot code, then explain how to switch sources and how the NSFW gate is enforced. </format>
Creates a /meme bot that fetches random images with NSFW-channel gating and a cooldown, ready to use.
Pro tip: Set the NSFW gate to "only in NSFW channels" so an accidental spicy result never lands in your general chat.
8-Ball, Dice & RNG Fun Commands
19/30You are a discord.js engineer who builds lightweight fun-command packs. <context> I want a small pack of randomness commands: magic 8-ball, dice roller, coin flip, and a "who wins" picker. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Commands: [/8ball question, /roll NdN, /flip, /choose a b c...] - 8-ball answer set: [CLASSIC / CUSTOM LIST] - Dice syntax: [SUPPORT 2d6, d20, MODIFIERS LIKE 2d6+3] - Output style: [PLAIN / EMBED] - Per-user cooldown: [OPTIONAL] </inputs> <task> Build the bot with: /8ball that returns a random answer and echoes the question; /roll that parses NdN(+/-mod) dice notation, validates it, rolls, and shows each die plus the total; /flip for heads/tails; and /choose that picks randomly from the supplied options. Use a fair RNG, validate inputs (reject 0 dice, absurd counts), and format results cleanly. Keep the 8-ball answers in one editable array. </task> <constraints> - One self-contained, runnable file including command registration. - Dice parser must reject invalid or abusive input (e.g. 9999d9999) with a clear message. - Fair, unbiased randomness; no crashes on malformed dice strings. </constraints> <format> Return the complete bot code, then explain the dice-notation parser and the input caps you set. </format>
Produces a fun-commands bot with 8-ball, dice-notation rolling, coin flip, and random picker, ready to use.
Pro tip: Cap dice counts (e.g. max 100 dice, max d1000) so nobody freezes the bot with a "roll 99999d99999" prank.
Tic-Tac-Toe / Connect-Four Button Game
20/30You are a discord.js engineer who builds two-player button games. <context> I want a two-player tic-tac-toe (or connect four) game played entirely with a button grid, tracking turns and detecting wins. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14] - Game: [TIC-TAC-TOE 3x3 / CONNECT FOUR] - Start command: [/ttt @opponent] - Turn enforcement: [ONLY THE CURRENT PLAYER CAN MOVE] - Symbols/colors: [X vs O, OR TWO EMOJI] - On win/draw: [ANNOUNCE + DISABLE BOARD] </inputs> <task> Build the bot with /ttt @opponent that renders the board as a grid of buttons in an ActionRow layout. Enforce turn order (only the player whose turn it is can press, only the two players can play), update the pressed button's label/style to the current player's mark, disable used cells, and check for a win or draw after each move. On game end, announce the result and disable the whole board. Store one game per message. Handle the opponent being a bot or the same user with a clear rejection. </task> <constraints> - One self-contained, runnable file including command registration. - Correct win/draw detection; only valid players and turns accepted. - Respect the 5-buttons-per-row limit in the grid layout. </constraints> <format> Return the complete bot code, then explain the board state model and the win-check logic. </format>
Builds a two-player button-grid tic-tac-toe (or connect four) bot with turn enforcement and win detection, ready to use.
Pro tip: Ask for connect four if you want a bigger board; Claude will page columns as buttons and keep the win-check for four-in-a-row.
Utility Bots (Reminders & Polls)
5 promptsReminder / !remindme Bot
21/30You are a discord.js engineer who builds scheduling utilities. <context> I want a reminder bot where users set reminders in natural durations and get pinged when they are due, surviving restarts. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Storage: [SQLITE / JSON] - Command: [/remind duration message, PLUS /reminders and /reminder-cancel] - Duration format: [E.G. 10m, 2h, 3d, MIX LIKE 1h30m] - Delivery: [DM / SAME CHANNEL MENTION] - Max reminders per user: [OPTIONAL CAP] </inputs> <task> Build the bot with /remind that parses the duration, stores {userId, channelId, message, dueAt}, and confirms with the resolved due time. A restart-safe scheduler fires due reminders (ping the user with their message via DM or channel), then deletes them. Add /reminders to list a user's pending reminders and /reminder-cancel to remove one by ID. On ready, reload and reschedule everything from storage, firing any that came due while offline. </task> <constraints> - One self-contained, runnable file; reminders must survive a restart and catch up on missed ones. - Robust duration parser (supports combined units) with clear errors. - Optional per-user cap enforced with a friendly message. </constraints> <format> Return the complete bot code, then explain the duration parser and how offline-missed reminders are handled on startup. </format>
Creates a restart-safe reminder bot with duration parsing, listing, and cancellation, ready to use.
Pro tip: Ask Claude to fire missed reminders on startup; otherwise a restart silently drops anything that came due while the bot was offline.
Poll Bot With Live Tally
22/30You are a discord.js engineer who builds voting and poll tooling. <context> I want a poll bot using buttons (not reactions) with a live vote tally, single-vote enforcement, and an optional timed close. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14] - Command: [/poll question option1 option2 ... duration] - Max options: [E.G. UP TO 5] - Vote rule: [ONE VOTE PER USER, CHANGEABLE] - Show results: [LIVE PERCENT BARS / HIDDEN UNTIL CLOSE] - On close: [DISABLE BUTTONS + POST WINNER] </inputs> <task> Build the bot with /poll that creates an embed with the question and one button per option, tracks votes in memory keyed by message, enforces one vote per user (allow changing it), and updates the embed with a live text bar chart and percentages after each vote. If a duration is given, close the poll automatically: disable the buttons, freeze the tally, and announce the winner (handling ties). Support up to the configured option count. </task> <constraints> - One self-contained, runnable file including command registration. - Exactly one active vote per user per poll; vote-change must move the count correctly. - Handle the button limit and empty-option cases; no crash on close. </constraints> <format> Return the complete bot code, then explain the vote-tracking model and how the live bar chart is rendered in text. </format>
Generates a button-based poll bot with live percentage bars, single-vote enforcement, and timed close, ready to use.
Pro tip: Use buttons over reaction polls; buttons let Claude enforce one vote per user and re-tally cleanly when someone changes their mind.
Scheduled Announcement / Cron Bot
23/30You are a discord.js engineer who builds scheduled-messaging systems. <context> I want a bot that posts announcements on a recurring schedule (daily standup ping, weekly recap, etc.) using cron expressions. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 + node-cron] - Timezone: [E.G. AMERICA/NEW_YORK] - Scheduled jobs: [CRON EXPR -> CHANNEL -> MESSAGE/EMBED, LIST SEVERAL] - Management commands: [/schedule-list, /schedule-add, /schedule-remove] - Storage for dynamic jobs: [JSON / SQLITE] - Mention a role in some posts: [YES / NO] </inputs> <task> Build the bot: load a set of scheduled jobs (cron expression, target channel, message/embed, optional role ping) from config and from persistent storage, register them with node-cron in the given timezone, and post on schedule. Add slash commands to list, add, and remove jobs at runtime (persisting changes and re-registering cron tasks). Validate cron expressions on add and reject bad ones with a clear error. </task> <constraints> - One self-contained, runnable file; include the node-cron install line and timezone handling. - Dynamic jobs must persist and re-register on restart. - Validate cron syntax; never register an invalid job. </constraints> <format> Return the complete bot code, then give three example cron expressions (daily, weekday-only, weekly) with plain-English meanings. </format>
Builds a cron-based scheduled-announcement bot with runtime add/list/remove commands and timezone support, ready to use.
Pro tip: Always set the timezone explicitly; node-cron defaults to the server clock, so "9am daily" can fire at the wrong hour without it.
Timezone & World-Clock Bot
24/30You are a discord.js engineer who builds team-coordination utilities. <context> My community is global. I want a bot that lets members save their timezone and shows everyone's local time, plus converts a time between members. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 (USE luxon OR dayjs FOR TZ)] - Storage: [SQLITE / JSON of userId -> IANA timezone] - Commands: [/settz, /time @user, /times (whole server board), /convert time from-tz to-tz] - Board format: [GROUPED BY REGION / SIMPLE LIST] - Validate timezone input: [YES] </inputs> <task> Build the bot with /settz to save a member's IANA timezone (validated), /time to show a member's current local time, /times to render a board of all members who set a timezone with their current time, and /convert to translate a given time from one zone to another. Use a real timezone library, validate zone names, and handle DST correctly. Keep the stored data restart-safe. </task> <constraints> - One self-contained, runnable file; include the timezone-library install line. - Reject invalid IANA names with a helpful example; handle DST via the library, not manual offsets. - Board must stay readable if many members are listed (chunk if needed). </constraints> <format> Return the complete bot code, then explain how timezones are validated and how the board handles long member lists. </format>
Creates a world-clock bot where members save timezones and view a live team time board plus conversions, ready to use.
Pro tip: Insist on IANA names like "Europe/Paris" over fixed offsets; the library then handles daylight-saving shifts automatically.
Ticket / Support-Thread Bot
25/30You are a discord.js engineer who builds support-ticket systems. <context> I want a support-ticket bot: members open a private ticket via a button, staff handle it, and closing archives a transcript. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14] - Ticket style: [PRIVATE CHANNEL PER TICKET / PRIVATE THREAD] - Panel channel + button label: [DESCRIBE] - Staff role: [SUPPORT ROLE ID/NAME] - Category for ticket channels: [CATEGORY ID, IF CHANNEL STYLE] - On close: [POST TRANSCRIPT TO LOG CHANNEL + DELETE/ARCHIVE] </inputs> <task> Build the bot with a /setup-tickets command posting a panel with an "Open Ticket" button. On click, create a private channel or thread visible only to the opener and staff, ping staff, and add a "Close" button. Prevent a user from opening multiple open tickets. On close (staff or opener), generate a text transcript of the messages, post it to the log channel with metadata, and archive or delete the ticket. Keep role/category/log config at the top. </task> <constraints> - One self-contained, runnable file including command registration. - Correct permission overwrites so only the opener and staff see the ticket. - One open ticket per user; transcript generation must not crash on empty tickets. </constraints> <format> Return the complete bot code, then explain the permission-overwrite setup and the transcript format. </format>
Produces a support-ticket bot with a button panel, private ticket channels, and closing transcripts, ready to use.
Pro tip: Use private threads instead of channels if your server hits Discord's channel limit; Claude will swap the create logic on request.
Most people use 10% of Claude. Tutorials unlock the rest.
AI Academy: 300+ hands-on tutorials on Claude, ChatGPT, Midjourney, and 50+ AI tools. New tutorials added every week.
Community-Management Bots
5 promptsSuggestion Board Bot
26/30You are a discord.js engineer who builds community feedback systems. <context> I want a suggestion board where members submit ideas that post as embeds with upvote/downvote buttons and a live score, and staff can approve or reject them. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14] - Submit method: [/suggest text / MODAL FORM] - Suggestions channel: [CHANNEL ID/NAME] - Vote buttons: [UPVOTE / DOWNVOTE with live net score] - Staff actions: [APPROVE / REJECT / CONSIDER, staff role gated] - Storage: [SQLITE / JSON] </inputs> <task> Build the bot with /suggest (or a modal) that posts the suggestion as an embed with the author, an incrementing suggestion ID, upvote/downvote buttons, and a running net score. Enforce one vote per user (changeable). Add staff-only buttons or a /suggestion-status command to mark a suggestion Approved/Rejected/Considered, recoloring the embed and appending a staff note. Persist votes and statuses across restarts. </task> <constraints> - One self-contained, runnable file including command registration. - One vote per user per suggestion; staff actions gated to the staff role. - Votes and statuses persist; embed updates in place, no duplicate posts. </constraints> <format> Return the complete bot code, then explain the vote and status data model and how staff actions recolor the embed. </format>
Builds a suggestion-board bot with voteable embeds, one-vote enforcement, and staff approve/reject actions, ready to use.
Pro tip: Use a modal for submissions so you can capture a title and details separately, keeping the board scannable instead of wall-of-text.
Starboard Bot
27/30You are a discord.js engineer who builds highlight/starboard systems. <context> I want a starboard: when a message gets enough โญ reactions, the bot reposts it to a dedicated starboard channel and keeps the star count in sync. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14] - Star emoji: [โญ OR CUSTOM] - Threshold: [E.G. 5 STARS] - Starboard channel: [CHANNEL ID/NAME] - Ignore self-stars: [YES / NO] - Storage: [SQLITE / JSON mapping original -> starboard message] </inputs> <task> Build the bot: on messageReactionAdd/Remove for the star emoji, count unique starrers (optionally excluding the author's self-star), and when the threshold is reached repost the message to the starboard as an embed showing the content, author, jump link, any attached image, and the star count. Update the count live as stars change; if it drops below threshold, optionally remove or keep the starboard entry. Prevent duplicate starboard posts for the same message. </task> <constraints> - One self-contained, runnable file; GuildMessageReactions intent and partials handled. - Never repost the same message twice; keep the original -> starboard mapping persistent. - Handle deleted originals and messages without text (image-only) gracefully. </constraints> <format> Return the complete bot code, then explain the dedupe mapping and how live count updates work. </format>
Creates a starboard bot that reposts popular messages once a star threshold is hit and keeps counts synced, ready to use.
Pro tip: Exclude self-stars and set the threshold relative to your active member count so the starboard stays a genuine highlight reel.
Giveaway Bot
28/30You are a discord.js engineer who builds giveaway and raffle systems. <context> I want a giveaway bot: staff start a timed giveaway, members enter by clicking a button, and the bot picks winners fairly when time is up. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14] - Command: [/giveaway prize duration winners] - Entry: [ENTER BUTTON with live entrant count] - Requirements: [OPTIONAL REQUIRED ROLE / MIN ACCOUNT AGE] - Storage: [SQLITE / JSON, restart-safe] - Extras: [/giveaway-reroll, /giveaway-end early] </inputs> <task> Build the bot with /giveaway that posts an embed showing prize, end time, and winner count with an Enter button; track unique entrants and update the count; enforce any role/age requirement on entry with a clear rejection. When the timer ends (restart-safe scheduler), pick the required number of unique random winners fairly, announce them with a mention and jump link, and handle the "not enough entrants" case. Add /giveaway-reroll and an early-end command. </task> <constraints> - One self-contained, runnable file including command registration. - Fair, unbiased winner selection with no duplicates; entries and timers persist across restarts. - Enforce requirements at entry time; handle zero/low entrants gracefully. </constraints> <format> Return the complete bot code, then explain the winner-selection fairness and how reroll excludes previous winners. </format>
Generates a giveaway bot with button entry, requirement checks, fair winner draws, and reroll, ready to use.
Pro tip: Add a required-role gate so giveaways reward your real members and cannot be farmed by throwaway accounts that just joined.
Event RSVP & Scheduler Bot
29/30You are a discord.js engineer who builds event-coordination bots. <context> I want an event bot: staff announce an event, members RSVP as Going / Maybe / Can't via buttons, and the bot shows live attendee lists and reminds attendees before it starts. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14] - Command: [/event title datetime description] - Datetime input: [E.G. ISO OR "2026-08-01 18:00" WITH TIMEZONE] - RSVP options: [GOING / MAYBE / CANT] - Reminder: [PING "GOING" LIST N MINUTES BEFORE] - Storage: [SQLITE / JSON] </inputs> <task> Build the bot with /event that posts an embed showing title, time (as a Discord timestamp so each user sees their local time), description, and three RSVP buttons with live counts and name lists. Track each member's single RSVP status (changeable). Store the event and, via a restart-safe scheduler, DM or ping the Going list a configurable time before start. Handle the event passing (lock RSVPs, mark as ended). Keep config at the top. </task> <constraints> - One self-contained, runnable file including command registration. - Use Discord's <t:unix:F> timestamp format so times auto-localize; one RSVP per user. - Reminders and event state persist across restarts; lock RSVPs after start. </constraints> <format> Return the complete bot code, then explain the datetime parsing, the Discord timestamp trick, and how the reminder is scheduled. </format>
Builds an event RSVP bot with Going/Maybe/Can't buttons, localized times, live attendee lists, and pre-event reminders, ready to use.
Pro tip: Let Claude output times as Discord <t:unix> timestamps; every member sees the event in their own timezone with zero conversion.
Member Stats & Activity Leaderboard
30/30You are a discord.js engineer who builds community-analytics bots. <context> I want a stats bot that tracks message and voice activity and shows a weekly leaderboard, plus a per-member stats card. Deliver a runnable, self-contained artifact. </context> <inputs> - Runtime: [DISCORD.JS V14 / DISCORD.PY V2] - Storage: [SQLITE preferred] - Tracked metrics: [MESSAGES, VOICE MINUTES, REACTIONS GIVEN] - Time windows: [ALL-TIME + ROLLING 7-DAY] - Commands: [/stats @user, /leaderboard metric window] - Exclude channels: [BOT-SPAM, ETC] </inputs> <task> Build the bot that increments per-user message counts on messageCreate (ignoring excluded channels and bots), tracks voice minutes via voiceStateUpdate (accumulating time between join and leave), and optionally counts reactions. Store timestamped events or rolling counters so a 7-day window is computable. Add /stats to show a member's card (messages, voice time, rank) and /leaderboard with a metric and window argument rendering the top 10 with text bars. Keep everything restart-safe. </task> <constraints> - One self-contained, runnable file; correct intents (GuildVoiceStates, GuildMessages). - Accurate voice-time accounting across join/leave/move; exclude bots and excluded channels. - Persistent storage; leaderboard queries must be efficient, not scan-everything-each-time if avoidable. </constraints> <format> Return the complete bot code, then explain the voice-time accounting and how the 7-day window is computed from storage. </format>
Creates a community-stats bot tracking messages and voice activity with member cards and a rolling leaderboard, ready to use.
Pro tip: Track voice minutes via voiceStateUpdate join/leave pairs; polling presence is unreliable and Claude handles channel-moves correctly.
Frequently Asked Questions
Prompts are the starting line. Tutorials are the finish.
A growing library of 300+ hands-on tutorials on ChatGPT, Claude, Midjourney, and 50+ AI tools. New tutorials added every week.
7-day free trial. Cancel anytime.