DashX / plugins /gpt-4.js
HerzaJ's picture
Update plugins/gpt-4.js
4c63adf verified
const axios = require('axios');
const TEMP_MAIL_API = 'https://api.internal.temp-mail.io/api/v3';
const CHATAI_API = 'https://chataibot.pro/api';
const headers = {
'Content-Type': 'application/json',
'Accept-Language': 'en'
};
const tempMailHeaders = {
...headers,
'Application-Name': 'web',
'Application-Version': '4.0.0',
'X-CORS-Header': 'iaWg3pchvFx48fY'
};
const handler = async (req, res) => {
try {
const { text } = req.query;
if (!text) {
return res.status(400).json({
success: false,
error: 'Missing required parameter: text'
});
}
const result = await gpt4(text, chatId = null);
res.json({
author: "Herza",
success: true,
data: {
msg: result.response,
chatID: result.chatId
}
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
};
module.exports = {
name: 'ChatGPT V4',
description: 'Generate responses using GPT4 OpenAI Model v4',
type: 'GET',
routes: ['api/AI/gpt4'],
tags: ['ai', 'OpenAI', 'GPT4'],
main: ['AI'],
parameters: ['text', 'chatId', 'key'],
enabled: true,
limit: 8,
handler
};
async function createTempEmail() {
const { data } = await axios.post(`${TEMP_MAIL_API}/email/new`, {
min_name_length: 10,
max_name_length: 10
}, { headers: tempMailHeaders });
return data;
}
async function registerAccount(email) {
const { data } = await axios.post(`${CHATAI_API}/register`, {
email,
password: 'Mxlineeecero5632@_++((+))9098+-+-!;::::#$',
isAdvertisingAccepted: false,
mainSiteUrl: 'https://chataibot.pro/api',
utmSource: '',
utmCampaign: '',
connectBusiness: ''
}, { headers });
return data;
}
async function getMessages(email) {
const { data } = await axios.get(`${TEMP_MAIL_API}/email/${email}/messages`, {
headers: tempMailHeaders
});
return data;
}
async function waitForVerificationCode(email, maxAttempts = 10) {
for (let i = 0; i < maxAttempts; i++) {
await new Promise(r => setTimeout(r, 3000));
const msgs = await getMessages(email);
const chatAiMsg = msgs.find(m => m.from.includes('chataibot.pro'));
if (chatAiMsg) {
const match = chatAiMsg.body_text.match(/Your code: (\d+)/);
if (match) return match[1];
}
}
throw new Error('Verification code not received');
}
async function verifyAccount(email, token) {
const { data, headers: responseHeaders } = await axios.post(`${CHATAI_API}/register/verify`, {
email,
token,
connectBusiness: ''
}, { headers });
const cookies = responseHeaders['set-cookie'] || [];
return { jwtToken: data.jwtToken, cookies };
}
async function createChat(jwtToken, cookies, title = 'New Chat') {
const cookieString = cookies.map(c => c.split(';')[0]).join('; ');
await axios.post(`${CHATAI_API}/message/change-context-model`, {
chatId: 0,
title,
isInternational: true
}, {
headers: {
...headers,
'Authorization': `Bearer ${jwtToken}`,
'Cookie': cookieString
}
});
const { data } = await axios.post(`${CHATAI_API}/message/context`, {
title,
chatModel: 'gpt-4.1-nano'
}, {
headers: {
...headers,
'Authorization': `Bearer ${jwtToken}`,
'Cookie': cookieString
}
});
return data.id;
}
async function sendMessage(jwtToken, cookies, text, chatId) {
const cookieString = cookies.map(c => c.split(';')[0]).join('; ');
const { data } = await axios.post(`${CHATAI_API}/message/streaming`, {
text,
chatId,
withPotentialQuestions: true,
linksToParse: []
}, {
headers: {
...headers,
'Authorization': `Bearer ${jwtToken}`,
'Cookie': cookieString
},
responseType: 'text'
});
const lines = data.split('}{').map((line, i, arr) => {
if (i === 0) return line + '}';
if (i === arr.length - 1) return '{' + line;
return '{' + line + '}';
});
let result = '';
for (const line of lines) {
try {
const json = JSON.parse(line);
if (json.type === 'chunk') {
result += json.data;
} else if (json.type === 'finalResult') {
return json.data.mainText;
}
} catch (e) {}
}
return result;
}
let cachedToken = null;
let cachedCookies = null;
let cachedChatId = null;
async function gpt4(query, chatId = null) {
try {
if (!cachedToken) {
const { email } = await createTempEmail();
await registerAccount(email);
const code = await waitForVerificationCode(email);
const verifyResult = await verifyAccount(email, code);
cachedToken = verifyResult.jwtToken;
cachedCookies = verifyResult.cookies;
}
if (!chatId && !cachedChatId) {
cachedChatId = await createChat(cachedToken, cachedCookies, query);
}
const targetChatId = chatId || cachedChatId;
const response = await sendMessage(cachedToken, cachedCookies, query, targetChatId);
return { response, chatId: targetChatId };
} catch (err) {
cachedToken = null;
cachedCookies = null;
cachedChatId = null;
throw err;
}
}