ChatGPT Easy Delete Chat

Delete ChatGPT chat with only Cmd/Ctrl+Shift+Delete, auto-confirms popup.

当前为 2025-06-07 提交的版本,查看 最新版本

// ==UserScript==
// @name         ChatGPT Easy Delete Chat
// @homepageURL  https://raw.githubusercontent.com/nisc/chatgpt-userscripts/
// @namespace    nisc
// @version      1.2
// @description  Delete ChatGPT chat with only Cmd/Ctrl+Shift+Delete, auto-confirms popup.
// @author       nisc
// @match        https://chatgpt.com/*
// @icon         https://chatgpt.com/favicon.ico
// @grant        none
// ==/UserScript==

(function() {
  'use strict';

  const IS_MAC = navigator.platform.includes('Mac');
  const META = IS_MAC ? 'metaKey' : 'ctrlKey';

  const findButtonByText = (regex) => Array.from(document.querySelectorAll('button')).find(b => regex.test(b.textContent || ''));

  const isChatPage = () => window.location.pathname.startsWith('/c/') && !window.location.hash.startsWith('#settings');

  document.addEventListener('keydown', e => {
    if (!isChatPage()) return;
    const tgt = document.activeElement;
    if (['INPUT', 'TEXTAREA'].includes(tgt.tagName) || tgt.isContentEditable) return;

    if (
      e.key === 'Delete' &&
      e[META] &&
      e.shiftKey &&
      !e.altKey
    ) {
      e.preventDefault();
      const btn = findButtonByText(/delete chat/i);
      if (btn) btn.click();
      else console.warn('[ChatGPT Delete] button not found');
    }
  });

  new MutationObserver(() => {
    if (!isChatPage()) return;
    const confirmBtn = findButtonByText(/^delete$/i);
    if (confirmBtn) confirmBtn.click();
  }).observe(document.body, { childList: true, subtree: true });
})();