Skip to content
This repository was archived by the owner on Feb 18, 2025. It is now read-only.

Commit 3c25e7c

Browse files
attempt to cover api and also make ip work
1 parent d4f4d18 commit 3c25e7c

File tree

2 files changed

+74
-18
lines changed

2 files changed

+74
-18
lines changed

api/SendTelemetry.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// This is a client-side API simulation
2+
(function() {
3+
window.sendTelemetry = async function(data) {
4+
const endpoint = process.env.TELEMETRY_ENDPOINT;
5+
6+
// Basic validation
7+
if (!data || typeof data !== 'object' ||
8+
!data.ip || !data.browser || !data.os || !data.model ||
9+
!data.messageSent || !data.messageReceived || !data.chatHistory) {
10+
console.error('Invalid telemetry data');
11+
return;
12+
}
13+
14+
const telemetryData = {
15+
embeds: [{
16+
title: "Chat Message is sent",
17+
fields: [
18+
{ name: "IP", value: data.ip, inline: true },
19+
{ name: "Browser", value: data.browser, inline: true },
20+
{ name: "OS", value: data.os, inline: true },
21+
{ name: "Model", value: data.model, inline: true },
22+
{ name: "Message sent", value: `User: ${data.messageSent}`, inline: false },
23+
{ name: "Message received", value: data.messageReceived, inline: false },
24+
{ name: "Chat History", value: data.chatHistory, inline: false }
25+
]
26+
}]
27+
};
28+
29+
try {
30+
const response = await fetch(endpoint, {
31+
method: 'POST',
32+
headers: {
33+
'Content-Type': 'application/json',
34+
},
35+
body: JSON.stringify(telemetryData)
36+
});
37+
38+
if (!response.ok) {
39+
throw new Error(`Discord API responded with ${response.status}`);
40+
}
41+
42+
console.log('Telemetry data sent successfully');
43+
} catch (error) {
44+
console.error('Error sending telemetry data:', error);
45+
}
46+
};
47+
})();

js/ai.js

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -106,27 +106,25 @@ document.getElementById('chat-form').addEventListener('submit', async function (
106106
// Send telemetry data if the switch is enabled
107107
if (document.getElementById('telemetrySwitch').checked) {
108108
const chatHistoryString = conversationHistory.map(entry => `${entry.role}: ${entry.content}`).join('\n');
109+
const userIP = await getUserIP();
109110
const telemetryData = {
110-
embeds: [{
111-
title: "Chat Message is sent",
112-
fields: [
113-
{ name: "IP", value: "123.45.678", inline: true },
114-
{ name: "Browser", value: getBrowserName(), inline: true },
115-
{ name: "OS", value: getOSName(), inline: true },
116-
{ name: "Message sent", value: `User: ${userInput}`, inline: false },
117-
{ name: "Message received", value: stripHtmlTags(botResponse), inline: false },
118-
{ name: "Chat History", value: stripHtmlTags(chatHistoryString), inline: false }
119-
]
120-
}]
111+
ip: userIP,
112+
browser: getBrowserName(),
113+
os: getOSName(),
114+
model: selectedModel,
115+
messageSent: userInput,
116+
messageReceived: stripHtmlTags(botResponse),
117+
chatHistory: stripHtmlTags(chatHistoryString)
121118
};
122119

123-
await fetch('https://discord.com/api/webhooks/1306698777469386782/u7aCY1rDHTKrDgGq_Mk_dOoOHpaivk6VYUrByuV3lkugvtJVWyqCg1lLsAGIbaMZHzGO', {
124-
method: 'POST',
125-
headers: {
126-
'Content-Type': 'application/json'
127-
},
128-
body: JSON.stringify(telemetryData)
129-
});
120+
// Load the SendTelemetry.js script dynamically
121+
const script = document.createElement('script');
122+
script.src = '../api/SendTelemetry.jss';
123+
script.onload = function() {
124+
// Call the sendTelemetry function once the script is loaded
125+
window.sendTelemetry(telemetryData);
126+
};
127+
document.body.appendChild(script);
130128
}
131129
} catch (error) {
132130
EditMessage(document.querySelector(".ai-message:last-child"), `<img src='./imgs/cross.png', alt='❌' width='16px'> Oops... We got an error: ${error}`);
@@ -217,4 +215,15 @@ document.getElementById('userInput').addEventListener('keydown', function (event
217215
}
218216
});
219217

218+
async function getUserIP() {
219+
try {
220+
const response = await fetch('https://api.ipify.org?format=json');
221+
const data = await response.json();
222+
return data.ip;
223+
} catch (error) {
224+
console.error('Error fetching IP:', error);
225+
return 'Unknown';
226+
}
227+
}
228+
220229
console.log("OS is:" + getOSName());

0 commit comments

Comments
 (0)