diff --git a/demos/demo-conversation-browser.ts b/demos/demo-conversation-browser.ts deleted file mode 100644 index fd4c59db9..000000000 --- a/demos/demo-conversation-browser.ts +++ /dev/null @@ -1,81 +0,0 @@ -import dotenv from 'dotenv-safe' -import { oraPromise } from 'ora' - -import { ChatGPTAPIBrowser } from '../src' - -dotenv.config() - -/** - * Demo CLI for testing conversation support. - * - * ``` - * npx tsx demos/demo-conversation-browser.ts - * ``` - */ -async function main() { - const email = process.env.OPENAI_EMAIL - const password = process.env.OPENAI_PASSWORD - - const api = new ChatGPTAPIBrowser({ - email, - password, - debug: false, - minimize: true - }) - await api.initSession() - - const prompt = 'Write a poem about cats.' - - let res = await oraPromise(api.sendMessage(prompt), { - text: prompt - }) - - console.log('\n' + res.response + '\n') - - const prompt2 = 'Can you make it cuter and shorter?' - - res = await oraPromise( - api.sendMessage(prompt2, { - conversationId: res.conversationId, - parentMessageId: res.messageId - }), - { - text: prompt2 - } - ) - console.log('\n' + res.response + '\n') - - const prompt3 = 'Now write it in French.' - - res = await oraPromise( - api.sendMessage(prompt3, { - conversationId: res.conversationId, - parentMessageId: res.messageId - }), - { - text: prompt3 - } - ) - console.log('\n' + res.response + '\n') - - const prompt4 = 'What were we talking about again?' - - res = await oraPromise( - api.sendMessage(prompt4, { - conversationId: res.conversationId, - parentMessageId: res.messageId - }), - { - text: prompt4 - } - ) - console.log('\n' + res.response + '\n') - - // close the browser at the end - await api.closeSession() -} - -main().catch((err) => { - console.error(err) - process.exit(1) -}) diff --git a/demos/demo-conversation.ts b/demos/demo-conversation.ts index a50c6c1e9..1c4d69499 100644 --- a/demos/demo-conversation.ts +++ b/demos/demo-conversation.ts @@ -1,7 +1,7 @@ import dotenv from 'dotenv-safe' import { oraPromise } from 'ora' -import { ChatGPTAPI, getOpenAIAuth } from '../src' +import { ChatGPTAPIBrowser } from '../src' dotenv.config() @@ -16,12 +16,12 @@ async function main() { const email = process.env.OPENAI_EMAIL const password = process.env.OPENAI_PASSWORD - const authInfo = await getOpenAIAuth({ + const api = new ChatGPTAPIBrowser({ email, - password + password, + debug: false, + minimize: true }) - - const api = new ChatGPTAPI({ ...authInfo }) await api.initSession() const prompt = 'Write a poem about cats.' @@ -71,6 +71,7 @@ async function main() { ) console.log('\n' + res.response + '\n') + // close the browser at the end await api.closeSession() } diff --git a/docs/classes/AChatGPTAPI.md b/docs/classes/AChatGPTAPI.md index 51fb7135d..41ce86f0f 100644 --- a/docs/classes/AChatGPTAPI.md +++ b/docs/classes/AChatGPTAPI.md @@ -49,7 +49,7 @@ An error if it fails. #### Defined in -[src/abstract-chatgpt-api.ts:69](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/abstract-chatgpt-api.ts#L69) +[src/abstract-chatgpt-api.ts:69](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/abstract-chatgpt-api.ts#L69) ___ @@ -66,7 +66,7 @@ otherwise. #### Defined in -[src/abstract-chatgpt-api.ts:39](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/abstract-chatgpt-api.ts#L39) +[src/abstract-chatgpt-api.ts:39](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/abstract-chatgpt-api.ts#L39) ___ @@ -87,7 +87,7 @@ An error if the session failed to initialize properly. #### Defined in -[src/abstract-chatgpt-api.ts:10](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/abstract-chatgpt-api.ts#L10) +[src/abstract-chatgpt-api.ts:10](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/abstract-chatgpt-api.ts#L10) ___ @@ -111,7 +111,7 @@ Access credentials for the new session. #### Defined in -[src/abstract-chatgpt-api.ts:49](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/abstract-chatgpt-api.ts#L49) +[src/abstract-chatgpt-api.ts:49](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/abstract-chatgpt-api.ts#L49) ___ @@ -135,7 +135,7 @@ Access credentials for the new session. #### Defined in -[src/abstract-chatgpt-api.ts:59](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/abstract-chatgpt-api.ts#L59) +[src/abstract-chatgpt-api.ts:59](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/abstract-chatgpt-api.ts#L59) ___ @@ -164,4 +164,4 @@ the `response` text. #### Defined in -[src/abstract-chatgpt-api.ts:30](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/abstract-chatgpt-api.ts#L30) +[src/abstract-chatgpt-api.ts:30](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/abstract-chatgpt-api.ts#L30) diff --git a/docs/classes/ChatGPTAPI.md b/docs/classes/ChatGPTAPI.md index bd2cd072b..c8af40b96 100644 --- a/docs/classes/ChatGPTAPI.md +++ b/docs/classes/ChatGPTAPI.md @@ -64,7 +64,7 @@ to obtain your `clearanceToken`. #### Defined in -[src/chatgpt-api.ts:45](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api.ts#L45) +[src/chatgpt-api.ts:45](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api.ts#L45) ## Accessors @@ -80,7 +80,7 @@ Gets the current Cloudflare clearance token (`cf_clearance` cookie value). #### Defined in -[src/chatgpt-api.ts:143](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api.ts#L143) +[src/chatgpt-api.ts:143](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api.ts#L143) ___ @@ -96,7 +96,7 @@ Gets the current session token. #### Defined in -[src/chatgpt-api.ts:138](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api.ts#L138) +[src/chatgpt-api.ts:138](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api.ts#L138) ___ @@ -112,7 +112,7 @@ Gets the currently signed-in user, if authenticated, `null` otherwise. #### Defined in -[src/chatgpt-api.ts:133](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api.ts#L133) +[src/chatgpt-api.ts:133](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api.ts#L133) ___ @@ -128,7 +128,7 @@ Gets the current user agent. #### Defined in -[src/chatgpt-api.ts:148](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api.ts#L148) +[src/chatgpt-api.ts:148](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api.ts#L148) ## Methods @@ -152,7 +152,7 @@ An error if it fails. #### Defined in -[src/chatgpt-api.ts:470](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api.ts#L470) +[src/chatgpt-api.ts:470](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api.ts#L470) ___ @@ -173,7 +173,7 @@ the token fails. #### Defined in -[src/chatgpt-api.ts:367](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api.ts#L367) +[src/chatgpt-api.ts:367](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api.ts#L367) ___ @@ -194,7 +194,7 @@ is valid. #### Defined in -[src/chatgpt-api.ts:156](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api.ts#L156) +[src/chatgpt-api.ts:156](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api.ts#L156) ___ @@ -224,7 +224,7 @@ A valid access token #### Defined in -[src/chatgpt-api.ts:386](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api.ts#L386) +[src/chatgpt-api.ts:386](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api.ts#L386) ___ @@ -252,7 +252,7 @@ Access credentials for the new session. #### Defined in -[src/abstract-chatgpt-api.ts:59](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/abstract-chatgpt-api.ts#L59) +[src/abstract-chatgpt-api.ts:59](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/abstract-chatgpt-api.ts#L59) ___ @@ -287,7 +287,7 @@ The response from ChatGPT #### Defined in -[src/chatgpt-api.ts:180](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api.ts#L180) +[src/chatgpt-api.ts:180](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api.ts#L180) ___ @@ -307,4 +307,4 @@ ___ #### Defined in -[src/chatgpt-api.ts:324](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api.ts#L324) +[src/chatgpt-api.ts:324](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api.ts#L324) diff --git a/docs/classes/ChatGPTAPIBrowser.md b/docs/classes/ChatGPTAPIBrowser.md index e863d43d7..343ce4a3f 100644 --- a/docs/classes/ChatGPTAPIBrowser.md +++ b/docs/classes/ChatGPTAPIBrowser.md @@ -51,6 +51,7 @@ Creates a new client for automating the ChatGPT webapp. | `opts.isMicrosoftLogin?` | `boolean` | **`Default Value`** `false` * | | `opts.markdown?` | `boolean` | **`Default Value`** `true` * | | `opts.minimize?` | `boolean` | **`Default Value`** `true` * | +| `opts.nopechaKey?` | `string` | **`Default Value`** `undefined` * | | `opts.password` | `string` | - | | `opts.proxyServer?` | `string` | **`Default Value`** `undefined` * | @@ -60,7 +61,7 @@ Creates a new client for automating the ChatGPT webapp. #### Defined in -[src/chatgpt-api-browser.ts:38](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api-browser.ts#L38) +[src/chatgpt-api-browser.ts:40](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api-browser.ts#L40) ## Accessors @@ -74,7 +75,7 @@ Creates a new client for automating the ChatGPT webapp. #### Defined in -[src/chatgpt-api-browser.ts:599](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api-browser.ts#L599) +[src/chatgpt-api-browser.ts:696](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api-browser.ts#L696) ## Methods @@ -94,7 +95,7 @@ Creates a new client for automating the ChatGPT webapp. #### Defined in -[src/chatgpt-api-browser.ts:204](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api-browser.ts#L204) +[src/chatgpt-api-browser.ts:218](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api-browser.ts#L218) ___ @@ -114,7 +115,7 @@ ___ #### Defined in -[src/chatgpt-api-browser.ts:241](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api-browser.ts#L241) +[src/chatgpt-api-browser.ts:255](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api-browser.ts#L255) ___ @@ -138,7 +139,7 @@ An error if it fails. #### Defined in -[src/chatgpt-api-browser.ts:574](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api-browser.ts#L574) +[src/chatgpt-api-browser.ts:642](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api-browser.ts#L642) ___ @@ -159,7 +160,7 @@ otherwise. #### Defined in -[src/chatgpt-api-browser.ts:335](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api-browser.ts#L335) +[src/chatgpt-api-browser.ts:391](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api-browser.ts#L391) ___ @@ -184,7 +185,7 @@ An error if the session failed to initialize properly. #### Defined in -[src/chatgpt-api-browser.ts:106](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api-browser.ts#L106) +[src/chatgpt-api-browser.ts:114](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api-browser.ts#L114) ___ @@ -204,7 +205,7 @@ Attempts to handle 403 errors by refreshing the page. #### Defined in -[src/chatgpt-api-browser.ts:313](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api-browser.ts#L313) +[src/chatgpt-api-browser.ts:333](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api-browser.ts#L333) ___ @@ -224,7 +225,7 @@ Attempts to handle 401 errors by re-authenticating. #### Defined in -[src/chatgpt-api-browser.ts:294](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api-browser.ts#L294) +[src/chatgpt-api-browser.ts:314](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api-browser.ts#L314) ___ @@ -238,7 +239,7 @@ ___ #### Defined in -[src/chatgpt-api-browser.ts:566](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api-browser.ts#L566) +[src/chatgpt-api-browser.ts:634](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api-browser.ts#L634) ___ @@ -271,4 +272,4 @@ the `response` text. #### Defined in -[src/chatgpt-api-browser.ts:412](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/chatgpt-api-browser.ts#L412) +[src/chatgpt-api-browser.ts:468](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/chatgpt-api-browser.ts#L468) diff --git a/docs/classes/ChatGPTError.md b/docs/classes/ChatGPTError.md index 12ea03462..208864c7d 100644 --- a/docs/classes/ChatGPTError.md +++ b/docs/classes/ChatGPTError.md @@ -66,7 +66,7 @@ node_modules/.pnpm/typescript@4.9.3/node_modules/typescript/lib/lib.es2022.error #### Defined in -[src/types.ts:297](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L297) +[src/types.ts:297](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L297) ___ @@ -76,7 +76,7 @@ ___ #### Defined in -[src/types.ts:296](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L296) +[src/types.ts:296](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L296) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[src/types.ts:294](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L294) +[src/types.ts:294](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L294) ___ @@ -96,4 +96,4 @@ ___ #### Defined in -[src/types.ts:295](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L295) +[src/types.ts:295](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L295) diff --git a/docs/modules.md b/docs/modules.md index e9a32c443..a069d1f55 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -60,7 +60,7 @@ #### Defined in -[src/types.ts:109](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L109) +[src/types.ts:109](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L109) ___ @@ -81,7 +81,7 @@ ___ #### Defined in -[src/types.ts:300](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L300) +[src/types.ts:300](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L300) ___ @@ -99,7 +99,7 @@ ___ #### Defined in -[src/types.ts:306](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L306) +[src/types.ts:306](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L306) ___ @@ -109,7 +109,7 @@ ___ #### Defined in -[src/types.ts:1](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L1) +[src/types.ts:1](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L1) ___ @@ -131,7 +131,7 @@ https://chat.openapi.com/backend-api/conversation #### Defined in -[src/types.ts:134](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L134) +[src/types.ts:134](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L134) ___ @@ -149,7 +149,7 @@ ___ #### Defined in -[src/types.ts:251](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L251) +[src/types.ts:251](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L251) ___ @@ -174,7 +174,7 @@ ___ #### Defined in -[src/types.ts:257](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L257) +[src/types.ts:257](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L257) ___ @@ -184,7 +184,7 @@ ___ #### Defined in -[src/types.ts:276](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L276) +[src/types.ts:276](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L276) ___ @@ -201,7 +201,7 @@ ___ #### Defined in -[src/types.ts:270](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L270) +[src/types.ts:270](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L270) ___ @@ -223,7 +223,7 @@ https://chat.openapi.com/backend-api/conversation/message_feedback #### Defined in -[src/types.ts:193](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L193) +[src/types.ts:193](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L193) ___ @@ -233,7 +233,7 @@ ___ #### Defined in -[src/types.ts:249](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L249) +[src/types.ts:249](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L249) ___ @@ -253,7 +253,7 @@ ___ #### Defined in -[src/types.ts:222](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L222) +[src/types.ts:222](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L222) ___ @@ -263,7 +263,7 @@ ___ #### Defined in -[src/types.ts:220](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L220) +[src/types.ts:220](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L220) ___ @@ -273,7 +273,7 @@ ___ #### Defined in -[src/types.ts:275](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L275) +[src/types.ts:275](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L275) ___ @@ -291,7 +291,7 @@ ___ #### Defined in -[src/types.ts:77](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L77) +[src/types.ts:77](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L77) ___ @@ -309,7 +309,7 @@ https://chat.openapi.com/backend-api/models #### Defined in -[src/types.ts:70](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L70) +[src/types.ts:70](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L70) ___ @@ -328,7 +328,7 @@ https://chat.openapi.com/backend-api/moderations #### Defined in -[src/types.ts:97](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L97) +[src/types.ts:97](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L97) ___ @@ -348,7 +348,7 @@ https://chat.openapi.com/backend-api/moderations #### Defined in -[src/types.ts:114](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L114) +[src/types.ts:114](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L114) ___ @@ -370,7 +370,7 @@ to authenticate with the unofficial ChatGPT API. #### Defined in -[src/openai-auth.ts:28](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/openai-auth.ts#L28) +[src/openai-auth.ts:29](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/openai-auth.ts#L29) ___ @@ -388,7 +388,7 @@ ___ #### Defined in -[src/types.ts:161](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L161) +[src/types.ts:161](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L161) ___ @@ -405,7 +405,7 @@ ___ #### Defined in -[src/types.ts:178](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L178) +[src/types.ts:178](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L178) ___ @@ -415,7 +415,7 @@ ___ #### Defined in -[src/types.ts:3](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L3) +[src/types.ts:3](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L3) ___ @@ -425,7 +425,7 @@ ___ #### Defined in -[src/types.ts:288](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L288) +[src/types.ts:288](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L288) ___ @@ -447,7 +447,7 @@ ___ #### Defined in -[src/types.ts:278](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L278) +[src/types.ts:278](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L278) ___ @@ -468,7 +468,7 @@ https://chat.openapi.com/api/auth/session #### Defined in -[src/types.ts:8](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L8) +[src/types.ts:8](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L8) ___ @@ -490,7 +490,7 @@ ___ #### Defined in -[src/types.ts:30](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/types.ts#L30) +[src/types.ts:30](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/types.ts#L30) ## Functions @@ -517,7 +517,7 @@ included them in here. #### Defined in -[src/utils.ts:73](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/utils.ts#L73) +[src/utils.ts:73](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/utils.ts#L73) ___ @@ -533,7 +533,7 @@ Gets the default path to chrome's executable for the current platform. #### Defined in -[src/openai-auth.ts:463](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/openai-auth.ts#L463) +[src/openai-auth.ts:426](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/openai-auth.ts#L426) ___ @@ -549,7 +549,7 @@ recognizes it and blocks access. | Name | Type | | :------ | :------ | -| `opts` | `PuppeteerLaunchOptions` & { `captchaToken?`: `string` ; `minimize?`: `boolean` ; `nopechaKey?`: `string` ; `proxyServer?`: `string` } | +| `opts` | `PuppeteerLaunchOptions` & { `captchaToken?`: `string` ; `minimize?`: `boolean` ; `nopechaKey?`: `string` ; `proxyServer?`: `string` ; `timeoutMs?`: `number` } | #### Returns @@ -557,7 +557,7 @@ recognizes it and blocks access. #### Defined in -[src/openai-auth.ts:248](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/openai-auth.ts#L248) +[src/openai-auth.ts:266](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/openai-auth.ts#L266) ___ @@ -603,7 +603,7 @@ with your updated credentials. #### Defined in -[src/openai-auth.ts:50](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/openai-auth.ts#L50) +[src/openai-auth.ts:51](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/openai-auth.ts#L51) ___ @@ -619,6 +619,7 @@ ___ | `opts` | `Object` | | `opts.minimize?` | `boolean` | | `opts.nopechaKey?` | `string` | +| `opts.timeoutMs?` | `number` | #### Returns @@ -626,7 +627,7 @@ ___ #### Defined in -[src/openai-auth.ts:373](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/openai-auth.ts#L373) +[src/openai-auth.ts:395](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/openai-auth.ts#L395) ___ @@ -646,7 +647,7 @@ ___ #### Defined in -[src/utils.ts:39](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/utils.ts#L39) +[src/utils.ts:39](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/utils.ts#L39) ___ @@ -666,7 +667,7 @@ ___ #### Defined in -[src/utils.ts:12](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/utils.ts#L12) +[src/utils.ts:12](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/utils.ts#L12) ___ @@ -686,7 +687,7 @@ ___ #### Defined in -[src/utils.ts:29](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/utils.ts#L29) +[src/utils.ts:29](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/utils.ts#L29) ___ @@ -706,4 +707,4 @@ ___ #### Defined in -[src/utils.ts:19](https://github.com/transitive-bullshit/chatgpt-api/blob/d1b74a8/src/utils.ts#L19) +[src/utils.ts:19](https://github.com/transitive-bullshit/chatgpt-api/blob/025e7e3/src/utils.ts#L19) diff --git a/docs/readme.md b/docs/readme.md index 5c40bf120..977a847d8 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -205,12 +205,6 @@ A [conversation demo](./demos/demo-conversation.ts) is also included: npx tsx demos/demo-conversation.ts ``` -A [browser-based conversation demo](./demos/demo-conversation-browser.ts) is also included: - -```bash -npx tsx demos/demo-conversation-browser.ts -``` - ### Authentication The authentication section relates to the REST-based version (using `getOpenAIAuth` + `ChatGPTAPI`). The browser-based solution, `ChatGPTAPIBrowser`, takes care of all the authentication for you. @@ -234,7 +228,7 @@ To get session token manually: ![ChatGPT cookies](./media/session-token.png) 4. Copy the value for `__Secure-next-auth.session-token` and save it to your environment. This will be your `sessionToken`. 5. Copy the value for `cf_clearance` and save it to your environment. This will be your `clearanceToken`. -6. Copy the value of the `user-agent` header from any request in your `Network` tab. This will be your `userAgent`. +6. Copy the value of the `user-agent` header from any request in your `Network` tab, or copy the result of `navigator.userAgent` command on `Console` tab. This will be your `userAgent`. Pass `sessionToken`, `clearanceToken`, and `userAgent` to the `ChatGPTAPI` constructor. @@ -315,8 +309,11 @@ All of these awesome projects are built using the `chatgpt` package. 🤯 - [Raycast Extension #2](https://github.com/domnantas/raycast-chatgpt) - [Telegram Bot #1](https://github.com/realies/chatgpt-telegram-bot) - [Telegram Bot #2](https://github.com/dawangraoming/chatgpt-telegram-bot) +- [Telegram Bot #3](https://github.com/RainEggplant/chatgpt-telegram-bot) (group privacy mode, ID-based auth) +- [Telegram Bot #4](https://github.com/ArdaGnsrn/chatgpt-telegram) (queue system, ID-based chat thread) - [Deno Telegram Bot](https://github.com/Ciyou/chatbot-telegram) - [Go Telegram Bot](https://github.com/m1guelpf/chatgpt-telegram) +- [Telegram Bot for YouTube Summaries](https://github.com/codextde/youtube-summary) - [GitHub ProBot](https://github.com/oceanlvr/ChatGPTBot) - [Discord Bot #1](https://github.com/onury5506/Discord-ChatGPT-Bot) - [Discord Bot #2](https://github.com/Nageld/ChatGPT-Bot) @@ -346,12 +343,14 @@ All of these awesome projects are built using the `chatgpt` package. 🤯 - [Askai](https://github.com/yudax42/askai) - [TalkGPT](https://github.com/ShadovvBeast/TalkGPT) - [iOS Shortcut](https://github.com/leecobaby/shortcuts/blob/master/other/ChatGPT_EN.md) -- [Slack Bot](https://github.com/trietphm/chatgpt-slackbot/) +- [Slack Bot #1](https://github.com/trietphm/chatgpt-slackbot/) +- [Slack Bot #2](https://github.com/lokwkin/chatgpt-slackbot-node/) (with queueing mechanism) - [Electron Bot](https://github.com/ShiranAbir/chaty) - [Kodyfire CLI](https://github.com/nooqta/chatgpt-kodyfire) - [Twitch Bot](https://github.com/BennyDeeDev/chatgpt-twitch-bot) - [Continuous Conversation](https://github.com/DanielTerletzkiy/chat-gtp-assistant) - [Figma plugin](https://github.com/frederickk/chatgpt-figma-plugin) +- [NestJS server](https://github.com/RusDyn/chatgpt_nestjs_server) If you create a cool integration, feel free to open a PR and add it to the list. diff --git a/license b/license index ec843662f..3a2c00b2e 100644 --- a/license +++ b/license @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 Travis Fischer +Copyright (c) 2023 Travis Fischer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/package.json b/package.json index 1012e8993..7246162bb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "chatgpt", - "version": "3.3.8", + "version": "3.3.10", "description": "Node.js client for the unofficial ChatGPT API.", "author": "Travis Fischer ", "repository": "transitive-bullshit/chatgpt-api", diff --git a/readme.md b/readme.md index 98c786529..639b7ed70 100644 --- a/readme.md +++ b/readme.md @@ -203,12 +203,6 @@ A [conversation demo](./demos/demo-conversation.ts) is also included: npx tsx demos/demo-conversation.ts ``` -A [browser-based conversation demo](./demos/demo-conversation-browser.ts) is also included: - -```bash -npx tsx demos/demo-conversation-browser.ts -``` - ### Authentication The authentication section relates to the REST-based version (using `getOpenAIAuth` + `ChatGPTAPI`). The browser-based solution, `ChatGPTAPIBrowser`, takes care of all the authentication for you. @@ -232,7 +226,7 @@ To get session token manually: ![ChatGPT cookies](./media/session-token.png) 4. Copy the value for `__Secure-next-auth.session-token` and save it to your environment. This will be your `sessionToken`. 5. Copy the value for `cf_clearance` and save it to your environment. This will be your `clearanceToken`. -6. Copy the value of the `user-agent` header from any request in your `Network` tab. This will be your `userAgent`. +6. Copy the value of the `user-agent` header from any request in your `Network` tab, or copy the result of `navigator.userAgent` command on `Console` tab. This will be your `userAgent`. Pass `sessionToken`, `clearanceToken`, and `userAgent` to the `ChatGPTAPI` constructor. @@ -314,6 +308,7 @@ All of these awesome projects are built using the `chatgpt` package. 🤯 - [Telegram Bot #1](https://github.com/realies/chatgpt-telegram-bot) - [Telegram Bot #2](https://github.com/dawangraoming/chatgpt-telegram-bot) - [Telegram Bot #3](https://github.com/RainEggplant/chatgpt-telegram-bot) (group privacy mode, ID-based auth) +- [Telegram Bot #4](https://github.com/ArdaGnsrn/chatgpt-telegram) (queue system, ID-based chat thread) - [Deno Telegram Bot](https://github.com/Ciyou/chatbot-telegram) - [Go Telegram Bot](https://github.com/m1guelpf/chatgpt-telegram) - [Telegram Bot for YouTube Summaries](https://github.com/codextde/youtube-summary) @@ -339,7 +334,7 @@ All of these awesome projects are built using the `chatgpt` package. 🤯 - [WhatsApp Bot #1](https://github.com/pascalroget/whatsgpt) (multi-user support) - [WhatsApp Bot #2](https://github.com/amosayomide05/chatgpt-whatsapp-bot) - [WhatsApp Bot #3](https://github.com/navopw/whatsapp-chatgpt) -- [Matrix Bot](https://github.com/jakecoppinger/matrix-chatgpt-bot) +- [Matrix Bot](https://github.com/matrixgpt/matrix-chatgpt-bot) - [Rental Cover Letter Generator](https://sharehouse.app/ai) - [Assistant CLI](https://github.com/diciaup/assistant-cli) - [Teams Bot](https://github.com/formulahendry/chatgpt-teams-bot) @@ -353,6 +348,7 @@ All of these awesome projects are built using the `chatgpt` package. 🤯 - [Twitch Bot](https://github.com/BennyDeeDev/chatgpt-twitch-bot) - [Continuous Conversation](https://github.com/DanielTerletzkiy/chat-gtp-assistant) - [Figma plugin](https://github.com/frederickk/chatgpt-figma-plugin) +- [NestJS server](https://github.com/RusDyn/chatgpt_nestjs_server) - [Wordsmith: Add-in for Microsoft Word](https://github.com/xtremehpx/Wordsmith) diff --git a/src/openai-auth.ts b/src/openai-auth.ts index 4c3f1ddc3..61e027a60 100644 --- a/src/openai-auth.ts +++ b/src/openai-auth.ts @@ -126,14 +126,16 @@ export async function getOpenAIAuth({ await delay(500) // click login button and wait for navigation to finish - await Promise.all([ - page.waitForNavigation({ - waitUntil: 'networkidle2', - timeout: timeoutMs - }), - - page.click('#__next .btn-primary') - ]) + do { + await Promise.all([ + page.waitForNavigation({ + waitUntil: 'networkidle2', + timeout: timeoutMs + }), + page.click('#__next .btn-primary') + ]) + await delay(500) + } while (page.url().endsWith('/auth/login')) await checkForChatGPTAtCapacity(page, { timeoutMs }) @@ -180,11 +182,22 @@ export async function getOpenAIAuth({ await waitForRecaptcha(page, { timeoutMs }) } else if (hasRecaptchaPlugin) { console.log('solving captchas using 2captcha...') - const res = await page.solveRecaptchas() - if (res.captchas?.length) { - console.log('captchas result', res) - } else { - console.log('no captchas found') + + // Add retries in case network is unstable + const retries = 3 + for (let i = 0; i < retries; i++) { + try { + const res = await page.solveRecaptchas() + if (res.captchas?.length) { + console.log('captchas result', res) + break + } else { + console.log('no captchas found') + await delay(500) + } + } catch (e) { + console.log('captcha error', e) + } } }