v3.5.0 #20

Merged
FernandoJVideira merged 4 commits from dev into master 2026-10-20 22:39:58 +00:00
Owner

v3.5.0

Support tickets

  • Ticket panel with a category dropdown and a Create ticket button, each category with its own staff role
  • Each ticket is a private thread; opener and staff can add people, claim and close
  • Closing locks the thread and posts a transcript to the log channel
  • Every ticket embed is orange
  • /tickets setup|category|panel and /ticket add|remove|claim|close

Anti-raid and anti-nuke (Security)

  • Join Gate: account age, no avatar, advertising names, username patterns, unverified and unauthorized bots
  • Raid mode: detects join floods, pauses invites, acts on raiders; survives a restart
  • Anti-nuke: quarantines anyone who mass-deletes, mass-bans or mass-kicks past the limits
  • Lockdowns for a channel, the whole server or joins (/lockdown, /unlock)
  • Heat: anti-spam score with panic mode and mention-flood lockdown
  • Snapshots of roles and channels, and /security restore to rebuild after a nuke
  • Alerts in a channel, plus DMs of critical alerts to the owner and trusted users
  • Everything is off until turned on; turning protection off, unlocking and releasing need the owner or the trusted list

Follow-up fixes in #21 (ticket panel dropdown and orange embeds). Repost the ticket panel after deploying.

Needs the API from v1.7.0 (migrations 000016 to 000018).

🤖 Generated with Claude Code

## v3.5.0 **Support tickets** - Ticket panel with a category dropdown and a Create ticket button, each category with its own staff role - Each ticket is a private thread; opener and staff can add people, claim and close - Closing locks the thread and posts a transcript to the log channel - Every ticket embed is orange - `/tickets setup|category|panel` and `/ticket add|remove|claim|close` **Anti-raid and anti-nuke (Security)** - Join Gate: account age, no avatar, advertising names, username patterns, unverified and unauthorized bots - Raid mode: detects join floods, pauses invites, acts on raiders; survives a restart - Anti-nuke: quarantines anyone who mass-deletes, mass-bans or mass-kicks past the limits - Lockdowns for a channel, the whole server or joins (`/lockdown`, `/unlock`) - Heat: anti-spam score with panic mode and mention-flood lockdown - Snapshots of roles and channels, and `/security restore` to rebuild after a nuke - Alerts in a channel, plus DMs of critical alerts to the owner and trusted users - Everything is off until turned on; turning protection off, unlocking and releasing need the owner or the trusted list Follow-up fixes in #21 (ticket panel dropdown and orange embeds). Repost the ticket panel after deploying. Needs the API from v1.7.0 (migrations 000016 to 000018). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
FernandoJVideira added 4 commits 2026-10-20 22:27:48 +00:00
Members open a ticket from a panel in the ticket channel: one button per
category (a dropdown past five), then a short form. Each ticket is a private
thread named after the category, number and opener, with a first message
that mentions the category's staff role so its members join, and Claim and
Close buttons.

- Claim: staff (the category's role, or Manage Threads / Manage Server)
  take a ticket; the first message shows who has it.
- Close: the opener or staff close it, with an optional reason. The thread
  is locked and archived, and the log channel gets a summary and a .txt
  transcript of the whole thread.
- /ticket add|remove|claim|close inside a ticket; /tickets setup,
  /tickets category add|remove|list and /tickets panel for admins.
- Per-member limit on open tickets (default 1), per-server ticket numbers
  handed out atomically, a deleted thread closes its ticket.
- The dashboard asks the bot to post or refresh the panel through
  ticket_commands (LISTEN/NOTIFY, like music); the listener reconnects if
  the database connection drops.
- Setup warns about missing bot permissions in the ticket and log channels.

The flows live in internal/tickets behind small Discord and store
interfaces, with unit tests on fakes; the repo and the listener have
integration tests (-tags integration, TICKETS_TEST_DB).

Needs the ticket tables (velox-dashboard-api migration 000016_tickets).
.gitignore gains the /tldr benchmark rules so private chat exports and
benchmark results on disk can't be committed from this branch.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Join Gate (account age, avatar, advertising and username filters, bot
checks), raid detection with invite pausing, anti-nuke quarantine of
admins who mass delete, manual and automatic lockdowns, a decaying heat
score against spam, role and channel snapshots with restore, and alert
DMs to the owner and trusted users. Everything that weakens protection
is limited to the owner and the trusted list.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Reviewed-on: #18
Reviewed-on: #19
FernandoJVideira merged commit 177c820821 into master 2026-10-20 22:39:58 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: FernandoJVideira/velox-bot#20