1 GrumpyWelcome EN
darksoon edited this page 2026-05-13 21:03:08 +02:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Welcome

Handles welcome and leave messages, verification with CAPTCHA, and raid protection.


Modes: Banner · Embed · Text

Both join (welcome) and leave messages support three modes with identical configuration:

Mode Description
banner (Default) Canvas-rendered image (900×300), custom colors, optional background
embed Fully configurable Discord embed (author, thumbnail, footer, fields, timestamp)
text Simple text post

In configs/modules/welcome.yml:

join:
  enabled: true
  mode: banner            # banner | embed | text
  channel: "CHANNEL_ID"
  banner:
    backgroundColor: "#1a1a2e"
    accentColor: "#ff6b35"
    textColor: "#ffffff"
    backgroundUrl: ""     # Optional: custom background image (https://...)
                          # Cover-fit — any aspect ratio works

leave:
  enabled: true
  mode: banner            # banner | embed | text
  channel: "CHANNEL_ID"
  banner:
    subText: "Goodbye!"
    backgroundColor: "#2a1010"
    accentColor: "#ff3333"
    textColor: "#ffffff"

Banner default size is 900×300. Custom background images are fitted with cover-fit — the aspect ratio does not need to match.


Verification

Flow:

  1. New member joins → gets the unverified role (can only see #verify)
  2. Bot pings them briefly in #verify (auto-deletes after 10 sec)
  3. User clicks 📋 Verify
  4. Bot sends a CAPTCHA via DM (math problem or image CAPTCHA)
  5. Correct answer → unverified role removed, member role added

If DMs are disabled: Bot shows instructions on how to enable DMs.

3 failed attempts → User is automatically kicked.

Verify Panel with Full Embed Schema Support

The verify panel is no longer a simple title/description embed — it supports the full embed schema:

verification:
  enabled: true
  channelId: "CHANNEL_ID"
  embed:
    title: "Verification"
    description: |
      Welcome to the server! Please verify yourself:
      1. Click **Verify** below
      2. You will receive a CAPTCHA via DM
      3. Reply with the solution
    color: "#5865F2"
    author:
      name: "Minetechworld"
      iconUrl: "https://..."
    thumbnail: "https://..."
    footer:
      text: "GrumpyCore"
      iconUrl: "https://..."
    timestamp: false
    fields: []
  buttonLabel: "Verify"
  buttonEmoji: "📋"

Auto-Deployment

On bot start, the verify panel is automatically posted to the configured channel. The bot tracks the message ID in the database (WelcomeState). If the panel is manually deleted, the bot posts a new one on the next start. To redeploy manually: /welcome setup-verify.


Anti-Alt Account Check

New members are checked for suspiciously young account age. Accounts below the minimum are kicked and receive a DM explaining why.

verification:
  minAccountAgeDays: 7    # 0 = disabled

Raid Protection

During a mass join event, the module detects the unusual activity.

raidProtection:
  enabled: true
  joinThreshold: 10       # Joins to trigger an alert
  windowSeconds: 10       # Time window
  action: "kick"          # "kick" or "alert"

To end lockdown manually: /welcome clear-lockdown.


Preview Commands

Command Function
/welcome preview Preview your own welcome banner / embed / text
/welcome preview-leave Preview a leave message with your own name
/welcome preview-verify Preview the verify embed + button
/welcome preview-captcha Example image CAPTCHA with solution

Permission: Manage Server

→ See also Preview-Commands