Sync broccolini-bot: rename from zammad, docs in docs/, security gitignore, remove zammad deps

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
samkintop
2026-02-12 02:56:00 -06:00
parent 08a16b4a75
commit 29a13768f7
37 changed files with 1093 additions and 3229 deletions

View File

@@ -1,5 +1,5 @@
# =============================================================================
# GMAILDISCORDZAMMAD BRIDGE Example environment (no secrets)
# Broccolini Bot Example environment (no secrets)
# Copy to .env and fill in real values. See README for full docs.
# =============================================================================
@@ -21,14 +21,14 @@ EMAIL_THREAD_CHANNEL_ID= # Text channel for email ticket threads (optio
# Escalation categories (tier 2 and tier 3)
DISCORD_ESCALATED_CATEGORY_ID= # Fallback escalation category (Discord)
EMAIL_ESCALATED_CATEGORY_ID= # Fallback escalation category (email)
EMAIL_ESCALATED_CATEGORY_ID= # Fallback escalation category (email); legacy alias: ESCALATED_CATEGORY_ID
DISCORD_ESCALATED2_CHANNEL_ID= # Tier 2 escalation category/channel (Discord)
DISCORD_ESCALATED3_CHANNEL_ID= # Tier 3 escalation category/channel (Discord)
EMAIL_ESCALATED2_CHANNEL_ID= # Tier 2 escalation category/channel (email)
EMAIL_ESCALATED3_CHANNEL_ID= # Tier 3 escalation category/channel (email)
# Logging, transcripts, and utility
ROLE_ID_TO_PING= # Role ID to ping on new tickets
ROLE_ID_TO_PING= # Role ID to ping on new tickets (config also accepts ROLE_TO_PING_ID as alias)
TRANSCRIPT_CHANNEL_ID= # Channel for ticket transcripts on close
LOGGING_CHANNEL_ID= # Channel for lifecycle log messages
DEBUGGING_CHANNEL_ID= # Channel for error logs (escalate, poll, etc.); optional
@@ -37,7 +37,8 @@ ACCOUNT_INFO_CHANNEL_ID= # Channel for account info lookups; optional
DISCORD_CHANNEL_ID= # General Discord channel (if used)
# --- Discord: Ticket copy & buttons ---
ESCALATION_MESSAGE= # Message shown when a ticket is escalated
# ESCALATION_MESSAGE: use {support_name} for SUPPORT_NAME
ESCALATION_MESSAGE= # e.g. Your ticket has been escalated.\n\nA senior {support_name} will be here to assist as soon as possible.
BUTTON_LABEL_CLOSE=Close Ticket
BUTTON_LABEL_CLAIM=Claim
BUTTON_LABEL_UNCLAIM=Unclaim
@@ -51,29 +52,26 @@ GOOGLE_CLIENT_SECRET= # OAuth2 Client Secret
REFRESH_TOKEN= # OAuth2 refresh token for the support inbox
MY_EMAIL= # Support inbox email address
# --- Zammad ---
ZAMMAD_TOKEN= # Zammad API token
ZAMMAD_URL= # Base URL of Zammad (e.g. https://zammad.example.com or ${NGROK_URL})
ZAMMAD_CLIENT_ID= # Zammad OAuth client ID (if used)
ZAMMAD_CLIENT_SECRET= # Zammad OAuth client secret (if used)
ZAMMAD_EMAIL_GROUP=Email Users # Zammad group for email-sourced tickets
ZAMMAD_DISCORD_GROUP=Discord Users # Zammad group for Discord-sourced tickets
# --- Server & URLs ---
NGROK_URL= # ngrok or public URL (optional; used if ZAMMAD_URL=${NGROK_URL})
ZAMMAD_PORT=3050 # Port for Zammad-related server (if any)
NGROK_URL= # Public URL (optional); run ngrok outside this repo
DISCORD_ONLY_PORT=5000 # Port for healthcheck / Discord-only server
# --- Database ---
MONGODB_URI= # MongoDB connection string (e.g. mongodb+srv://user:pass@cluster/dbname)
# MONGODB_DATABASE= # Optional; DB name usually in MONGODB_URI path (not read by app currently)
# --- Branding & copy ---
SUPPORT_NAME=Support
LOGO_URL= # URL of logo shown in embeds (optional)
EMAIL_SIGNATURE= # HTML signature for outgoing emails (use \n for line breaks)
TICKET_CLOSE_SUBJECT_PREFIX=[Resolved]
TICKET_CLOSE_MESSAGE= # Body of closure email
# Email tickets only (closure email body):
TICKET_CLOSE_MESSAGE= # Body of closure email to customer
TICKET_CLOSE_SIGNATURE= # Signature on closure email
# Discord ticket closure (in-channel before transcript, transcript post, and auto-close):
DISCORD_CLOSE_MESSAGE= # Message in ticket channel before transcript (e.g. ... If you still need assistance, please open a new ticket.)
DISCORD_TRANSCRIPT_MESSAGE= # When posting transcript / DM to user. Use {channel_name}, {email}, {date_opened}, {date_closed}
DISCORD_AUTO_CLOSE_MESSAGE= # Message in ticket when auto-closed (e.g. ... If you still need assistance, please open a new ticket.)
# --- Ticket limits & permissions ---
GLOBAL_TICKET_LIMIT=5 # Max concurrent open tickets globally
@@ -91,10 +89,12 @@ AUTO_CLOSE_MESSAGE= # Message when ticket is auto-closed
# --- Reminders ---
REMINDER_ENABLED=false
REMINDER_AFTER_HOURS=24
REMINDER_MESSAGE= # Supports {hours}
TICKET_WELCOME_MESSAGE= # Message when ticket channel is created
TICKET_CLAIMED_MESSAGE= # Supports {staff_name}
TICKET_UNCLAIMED_MESSAGE=
# REMINDER_MESSAGE: use {ping} (claimer mention or role ping), {hours}
REMINDER_MESSAGE= # e.g. Hey {ping}! This ticket has been inactive for {hours} hours. Please provide an update or close the ticket.
TICKET_WELCOME_MESSAGE= # Message in welcome embed when ticket channel is created
# TICKET_CLAIMED_MESSAGE / TICKET_UNCLAIMED_MESSAGE: use {staff_mention}, {staff_name}
TICKET_CLAIMED_MESSAGE= # e.g. Ticket claimed by {staff_mention} 🚀
TICKET_UNCLAIMED_MESSAGE= # e.g. Ticket unclaimed by {staff_mention} ☀️
# --- Priority (low, normal, medium, high; default: normal) ---
PRIORITY_ENABLED=false