We are messing about with some ChatGPT API chatbots as part of the AI Detox this year. I modified a little API-based chatbot to make it goofier. Turns out the download content option worked fine in Chrome but downloaded as a .dms file in FireFox.
This works in both browsers and gets the file as the intended .txt file.
function saveTheChat(){
const chats = document.querySelectorAll('.speech');//get all the instances of the class speech
let chatHistory = '';
chats.forEach((chat) => {
let content = chat.innerHTML;//get the inner content
if(chat.classList.contains("speech-ai")){
chatHistory = `\n${chatHistory} \n AI: ${content}\n\n`;//add the AI: to stuff written by the machine and end with two line breaks
} else {
chatHistory = `\n${chatHistory} \n Human: ${content}\n\n`;//add Human: to stuff written by the human and end with two line breaks
}
})
const a = document.createElement('a'); // Create "a" element
const blob = new Blob([chatHistory], {type: 'text/plain'}); // Create a blob (file-like object) the second part sets the mime type
const url = URL.createObjectURL(blob); // Create an object URL from blob
a.setAttribute('href', url); // Set "a" element link
a.setAttribute('download', 'chat-history.txt'); // Set download filename, make it .txt as FireFox wants extra guidance.
a.click() // Start downloading
}