Auto Refresh ChatGPT session

Auto refresh chatGPT session

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

You will need to install an extension such as Tampermonkey to install this script.

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name         Auto Refresh ChatGPT session
// @namespace    http://github.com/zhaohongxuan
// @version      0.5
// @description  Auto refresh chatGPT session
// @author       hank zhao
// @match        https://chat.openai.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=openai.com
// @grant        GM_notification
// @license      AGPL-3.0-or-later
// ==/UserScript==

(function() {
    'use strict';
    function showNotification() {
      const notification = new Notification("chatGPT session auto refresh Failed",{
          "body":"Click to reload manully",
          "icon":"https://www.google.com/s2/favicons?sz=64&domain=openai.com"
      })

      notification.onclick = (event) => {
          event.preventDefault(); // prevent the browser from focusing the Notification's tab
          location.reload()
      };
   }

    function checkPermissionAndNotify() {
        if (!("Notification" in window)) {
            alert("chatGPT session auto refresh Failed");
        } else if (Notification.permission === "granted") {
            showNotification()
        } else if (Notification.permission !== "denied") {
            Notification.requestPermission().then((permission) => {
                if (permission === "granted") {
                     showNotification()
                }
            });
        }
    }

    const intervalId = setInterval(function() {
          var xhr = new XMLHttpRequest()
          xhr.open('GET', "https://chat.openai.com/api/auth/session")
          xhr.onload = function() {
              if (xhr.status === 200) {
                console.debug('refresh chatGPT session Success')
              } else {
                console.warn('refresh chatGPT session Failed: ', xhr.status)
                clearInterval(intervalId)
                checkPermissionAndNotify()
              }
          }
          xhr.onerror = function() {
             console.warn('refresh chatGPT session Error: ', xhr.status)
             clearInterval(intervalId)
             checkPermissionAndNotify()
          }
          xhr.send()
    }, 10000);
})();