29 slash commands across 7 categories. All commands are slash-only — type / in Discord to browse.
No arguments. Organized by category with descriptions.
Shows API ms + worker uptime. Use to verify 41 is alive.
| Option | Type | Description |
|---|---|---|
| user | user (optional) | Defaults to you. |
Clickable embed image (512px). Supports animated GIF avatars.
| Option | Type | Description |
|---|---|---|
| user | user (optional) | Defaults to you. |
Shows snowflake-based account creation, server join date, role count, timeout status.
Guild-only. Shows approximate member/presence counts, boost tier, channel/role counts.
| Option | Type | Description |
|---|---|---|
| question | string (required) | Up to 250 chars. |
| options | string (required) | Separate with | — e.g. pizza | sushi | tacos |
Posts an embed then auto-reacts with 1️⃣ 2️⃣ 3️⃣ 4️⃣ so users can vote.
| Option | Type | Description |
|---|---|---|
| prompt | string (required) | Up to 400 chars. Describe what you want. |
| shape | choice (optional) | square (1024x1024) · wide (1280x768) · tall (768x1280) |
Shows "thinking..." while generating (5-20s). Free — no API key needed. Image appears as a Discord attachment you can download.
| Option | Type | Description |
|---|---|---|
| question | string (required) | Your yes/no question, up to 200 chars. |
Returns one of 16 classic 8-ball responses at random.
No arguments. 50/50 random result.
| Option | Type | Description |
|---|---|---|
| sides | int (optional) | Sides per die, 2-1000. Default: 6. |
| count | int (optional) | Number of dice, 1-10. Default: 1. |
| Option | Type | Description |
|---|---|---|
| choice | choice (required) | rock · paper · scissors |
Fetches the website's /api/health endpoint, measures Discord REST latency, and counts servers. Shows green/yellow/red status. This is what the landing page widget also displays.
Owner sees extra runtime details (isolate boot time, exact request count). Normal users see uptime, servers, latency, version.
All mod commands require Moderate Members permission (or higher). The owner bypasses all permission checks.
| Option | Type | Description |
|---|---|---|
| user | user (required) | Member to kick. |
| reason | string (optional) | Shown in audit log and mod-log. |
Sends a DM to the target before kicking (if their DMs are open). Logged to mod-log if configured.
| Option | Type | Description |
|---|---|---|
| user | user (required) | User to ban. |
| delete_days | choice (optional) | Delete messages from last 0/1/3/7 days. |
| reason | string (optional) | Reason for the ban. |
Can ban users not currently in the server (via resolved user). Sends DM notification.
| Option | Type | Description |
|---|---|---|
| user_id | string (required) | The banned user's Discord ID. |
| Option | Type | Description |
|---|---|---|
| user | user (required) | Member to timeout. |
| duration | string (required) | e.g. 30s 10m 2h 7d |
| reason | string (optional) | Reason. |
Max 28 days (Discord limit). Uses Moderate Members permission.
| Option | Type | Description |
|---|---|---|
| user | user (required) | Member to un-timeout. |
| Option | Type | Description |
|---|---|---|
| user | user (required) | Member to warn. |
| reason | string (optional) | Why they were warned. |
Warnings are stored per-guild in Cloudflare KV. DMs the target. Shows total warn count after issuing.
| Option | Type | Description |
|---|---|---|
| user | user (required) | Which member? |
Shows the last 15 warnings with timestamps, moderator, and reason.
| Option | Type | Description |
|---|---|---|
| user | user (required) | Which member? |
| Option | Type | Description |
|---|---|---|
| count | int (required) | 1-100 messages. |
| user | user (optional) | Only delete messages from this user. |
Skips pinned messages. Respects Discord's 14-day bulk-delete age limit. Ephemeral response (only you see it).
| Option | Type | Description |
|---|---|---|
| seconds | int (required) | 0 to disable, max 21600 (6 hours). |
Sets the Send Messages deny bit for @everyone. Preserves all other permission overwrites. Logged to mod-log.
Reverses /lock. Removes the Send Messages deny bit for @everyone.
Admin commands require Manage Server or Administrator permission.
| Option | Type | Description |
|---|---|---|
| channel | channel (required) | Where mod actions get logged. |
Once set, every kick/ban/timeout/warn/purge/lock action posts an embed here. Requires BOT_KV (Cloudflare KV namespace).
Clears the stored log channel. Mod actions will no longer be logged.
| Option | Type | Description |
|---|---|---|
| title | string (required) | Embed title, up to 200 chars. |
| message | string (required) | Body text, up to 1500 chars. |
| color | choice (optional) | green · yellow · red · blue |
These commands are owner-only — only user ID 1379382159969878107 can use them. Works in DMs and servers.
| Option | Type | Description |
|---|---|---|
| guild_id | string (required) | The guild to leave. |
| Option | Type | Description |
|---|---|---|
| user_id | string (required) | Target user's ID. |
| message | string (required) | Message text, up to 1500 chars. |
| Option | Type | Description |
|---|---|---|
| channel_id | string (required) | Target channel ID. |
| message | string (required) | Message text, up to 1500 chars. |
| title | string (optional) | If set, sends an embed instead of plain text. |
| Option | Type | Description |
|---|---|---|
| action | choice (required) | add · remove · list |
| user_id | string (optional) | Target user (not needed for list). |
| reason | string (optional) | Why they're blacklisted. |
Blacklisted users get an ephemeral error when they try any command. Stored in Cloudflare KV.
| Option | Type | Description |
|---|---|---|
| guild_id | string (optional) | Guild to inspect (default: current). |
| reset | bool (optional) | Set true to clear config back to defaults. |
| Option | Type | Description |
|---|---|---|
| method | choice (required) | GET · POST · PUT · PATCH · DELETE |
| path | string (required) | API path — e.g. /guilds/{id}/members?limit=10 |
Use with caution. Directly hits the Discord API. Response is shown as a JSON code block.
41 uses Discord's built-in permission system. Each command requires specific permissions:
1379382159969878107. Admins cannot use these.The server owner always bypasses all permission checks (except the owner commands, which are ID-gated).
The bot owner can blacklist users globally. Blacklisted users cannot use any command — they get an ephemeral error message.
/owner blacklist action: add user_id: ... to block/owner blacklist action: list to see all blacklisted usersModeration actions (kick, ban, timeout, warn, purge, lock) can be automatically logged to a channel.
/setlog channel: #mod-log to enable/unsetlog to disableReturns JSON with live bot stats. Used by the landing page widget and /status command.
CORS enabled. No authentication required. Cache-Control: no-store.
Discord Interactions Endpoint. Handles all slash commands via Ed25519-verified POST requests.
https://41-discordbot.pages.dev/api/interactions{"type":1}