-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
94 lines (87 loc) · 2.88 KB
/
Copy pathscript.js
File metadata and controls
94 lines (87 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
const chatLog = document.getElementById("chat-log");
userInput = document.getElementById("user-input");
sendButton = document.getElementById("send-button");
buttonIcon = document.getElementById("button-icon");
info = document.querySelector(".info");
sendButton.addEventListener("click", sendMessage);
userInput.addEventListener("keydown", (e) => {
if (e.key === "Enter") {
sendMessage();
}
});
function sendMessage() {
const message = userInput.value.trim();
if (message === "") {
return;
} else if (message == "developer") {
userInput.value = "";
appendMessage("user", message);
setTimeout(() => {
appendMessage(
"bot",
"This is Coded By Biruk Kassaye \nGithub : @Biruk42"
);
buttonIcon.classList.add("fa-solid", "fa-paper-plane");
buttonIcon.classList.remove("fas", "fa-spinner", "fa-pulse");
}, 2000);
return;
}
appendMessage("user", message);
userInput.value = "";
const options = {
method: "POST",
headers: {
"content-type": "application/json",
"X-RapidAPI-Key": "a8e238ebb5msh458a0ddbea41779p1c2ce7jsn249f315fe537",
"X-RapidAPI-Host": "open-ai21.p.rapidapi.com",
},
body: JSON.stringify({
messages: [
{
role: "user",
content: `${message}`,
},
],
}),
};
fetch("https://open-ai21.p.rapidapi.com/conversationgpt35", options)
.then((response) => response.json())
.then((response) => {
console.log(response);
appendMessage("bot", response.result);
buttonIcon.classList.add("fa-solid", "fa-paper-plane");
buttonIcon.classList.remove("fas", "fa-spinner", "fa-pulse");
})
.catch((err) => {
if (err.name === "TypeError") {
appendMessage("bot", "Error: Check Your Api Key!");
buttonIcon.classList.add("fa-solid", "fa-paper-plane");
buttonIcon.classList.remove("fas", "fa-spinner", "fa-pulse");
}
});
}
function appendMessage(sender, message) {
info.style.display = "none";
buttonIcon.classList.remove("fa-solid", "fa-paper-plane");
buttonIcon.classList.add("fas", "fa-spinner", "fa-pulse");
const messageElement = document.createElement("div");
const iconElement = document.createElement("div");
const chatElement = document.createElement("div");
const icon = document.createElement("i");
chatElement.classList.add("chat-box");
iconElement.classList.add("icon");
messageElement.classList.add(sender);
messageElement.innerText = message;
if (sender === "user") {
icon.classList.add("fa-regular", "fa-user");
iconElement.setAttribute("id", "user-icon");
} else {
icon.classList.add("fa-solid", "fa-robot");
iconElement.setAttribute("id", "bot-icon");
}
iconElement.appendChild(icon);
chatElement.appendChild(iconElement);
chatElement.appendChild(messageElement);
chatLog.append(chatElement);
chatLog.scrollTo = chatLog.scrollHeight;
}