Discord Friends Bulk Checker + Remover (Panel Selection)

Select friends from an in-panel list (no inline checkboxes). Scan All to harvest names/IDs, then bulk remove safely.

作者
blancoleopardo
日安装量
0
总安装量
0
评分
0 0 0
版本
1.0.0
创建于
2025-08-31
更新于
2025-08-31
大小
19.3 KB
许可证
MIT
适用于

Discord Friends Bulk Checker + Remover (Panel Selection)

A lightweight userscript that adds a floating Bulk Tools panel to Discord’s Friends page so you can scan, search, select friends in-panel, and bulk remove them safely. It’s virtualization‑safe (works even when Discord only mounts a few rows at a time) and avoids opening DMs while operating.

⚠️ Use at your own risk. Automating friend removals may violate Discord’s Terms of Service and can trigger rate limits. The script only simulates UI clicks, but it still calls Discord’s official endpoints through the site. Test on a few entries first.


Features

  • Floating panel UI with header button opener.
  • Scan All: autoscrolls the virtualized list to discover every friend (by data-list-item-id).
  • Searchable list in-panel: select inside the panel, no checkboxes injected into Discord rows.
  • Select All (filtered) / None with search filter respected.
  • Bulk remove: opens row menu → clicks Remove Friend → confirms; handles builds that remove without a modal.
  • Safe click synthesis with proper view: window to avoid Discord’s internal getSelection errors.
  • Cancelable: Stop button or Esc.
  • Status log + counters for selected · seen.

How it works (high level)

  1. Harvest visible rows (ID + username) while you browse or when you press Refresh/Scan All.
  2. Store into an in‑memory index → render to the panel list.
  3. On Delete Selected, the script scroll‑locates each friend by ID, opens the context menu, clicks Remove Friend, and confirms if a modal appears.
  4. Delays are added between removals to respect rate limits.

Usage

  1. Install the userscript (Tampermonkey/Violentmonkey).
  2. Open Friends on Discord (web).
  3. Click the small menu icon in the Friends header to toggle the panel.
  4. Hit Scan All once to discover everyone.
  5. Use the Search box and checkboxes inside the panel to choose targets.
  6. Press Delete Selected. You can Stop anytime or press Esc.

Buttons

  • Scan All – two‑pass autoscroll to discover all rows.
  • Refresh – harvest currently visible rows (faster; use after manual scrolling).
  • Select All (filtered) – selects only the rows currently matching your search.
  • None – clears selection.
  • Delete Selected – runs the removal loop with cooldown between actions.
  • Stop – requests cancellation before the next step.

Options & Tunables (top of script)

  • DELETE_DELAY_MS – wait between deletions (default 1750 ms).
  • MENU_APPEAR_TIMEOUT / MODAL_APPEAR_TIMEOUT – UI timeouts.
  • SCAN_SCROLL_STEP, SCAN_SCROLL_PAUSE, SCAN_STALL_TICKS – scanning behavior.
  • LOCATE_MAX_TICKS – max scroll attempts when locating a row by ID.

Compatibility

  • Discord web (latest). English UI recommended. The script falls back to text matching for Remove Friend, but non‑English UIs may differ.
  • Tested with Tampermonkey and Violentmonkey.

Privacy

  • Runs entirely client‑side. No network calls beyond Discord’s own actions triggered by your clicks.
  • No analytics, no external requests, no storage; state resets on reload.

Troubleshooting

  • Panel doesn’t open: make sure you’re on the Friends page; try navigating between tabs (All / Online) once.
  • Scan finds too few: run Scan All from the top; keep the Friends list focused; don’t switch views during the scan.
  • Deletion stalls: rate limits or UI changes; increase DELETE_DELAY_MS.
  • Console shows getSelection errors: update to v1.4.1+ (safe events with view: window).
  • Non‑English UI: the confirm button label may differ; switch Discord to English or adjust the text in confirmRemoveButtonText.

Known limitations

  • Discord’s UI changes can break selectors; the script includes fallbacks but may need updates.
  • Rate limits vary; aggressive settings can trigger slowdowns or temp blocks.
  • Usernames may be missing briefly while rows mount; scanning twice usually fills gaps.

Changelog (highlights)

  • v1.4.1 – Fixed synthetic event view to avoid content.js getSelection errors; tolerate no‑modal deletions.
  • v1.4.0Panel selection: moved selection entirely into the GUI; added search + Select All (filtered).
  • v1.3.1 – Selector fix; defensive qsAllSafe to prevent query crashes.
  • v1.3.0 – Virtualization‑safe selection model; header opener; initial bulk tools panel.

Disclaimer

This tool is provided “as is”, without warranty of any kind. Use it responsibly and in accordance with Discord’s terms. You are solely responsible for your account.


License

MIT (feel free to adapt for personal use).