Auto Confirm New Chat for Gemini

Google Geminiで「新しいチャットを作成」ダイアログを自動で確認し、通知を表示します。

目前为 2024-08-14 提交的版本。查看 最新版本

// ==UserScript==
// @name         Auto Confirm New Chat for Gemini
// @name:en      Auto Confirm New Chat for Gemini
// @namespace    https://qestir.hatenablog.com/
// @version      0.11
// @description  Google Geminiで「新しいチャットを作成」ダイアログを自動で確認し、通知を表示します。
// @description:en Automatically confirms the "Create New Chat" dialog in Gemini and shows notifications.
// @author       Qestir
// @match        https://gemini.google.com/*
// @grant        none
// @license GPL-3.0-or-later
// ==/UserScript==

(function() {
    'use strict';

    // 通知を表示する関数
    function showNotification(message, success = true) {
        const notification = document.createElement('div');
        notification.style.position = 'fixed';
        notification.style.bottom = '20px';
        notification.style.right = '20px';
        notification.style.padding = '10px 20px';
        notification.style.backgroundColor = success ? 'green' : 'red';
        notification.style.color = 'white';
        notification.style.fontSize = '14px';
        notification.style.borderRadius = '5px';
        notification.style.zIndex = '1000';
        notification.textContent = message;
        document.body.appendChild(notification);
        setTimeout(() => {
            notification.remove();
        }, 5000); // 5秒後に自動で消える
    }

    // MutationObserverのコールバック関数
    function handleMutations(mutations) {
        for (const mutation of mutations) {
            try {
                // ポップアップ内の「チャットを新規作成」ボタンを探す
                const confirmButton = document.querySelector('button[data-test-id="confirm-button"]');
                if (confirmButton) {
                    confirmButton.click(); // ボタンが見つかったら自動的にクリック
                    showNotification('自動クリックに成功しました');
                    observer.disconnect(); // 一度クリックしたら監視を停止
                    break;
                }
            } catch (error) {
                console.error('エラーが発生しました:', error);
                showNotification('自動クリックに失敗しました。詳細はコンソールを確認してください。', false);
                observer.disconnect(); // エラーが発生した場合も監視を停止
                break;
            }
        }
    }

    // MutationObserverを設定
    const observer = new MutationObserver(handleMutations);

    // DOM全体を監視
    observer.observe(document.body, { childList: true, subtree: true });
})();