You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.2 KiB

function formatResponse(text) {
return text
// Escape HTML entities first
.replace(/&/g, "&")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
// Bold: **text**
.replace(/\*\*(.+?)\*\*/g, "<strong>$1</strong>")
// Italic: *text*
.replace(/\*(.+?)\*/g, "<em>$1</em>")
// Dice notation: 🎲 lines get highlighted
.replace(/^(🎲.*)$/gm, '<span style="color: #c9a33e; font-weight: bold;">$1</span>')
// Line breaks
.replace(/\n\n/g, "</p><p>")
.replace(/\n/g, "<br>")
// Wrap in paragraph
.replace(/^(.*)$/, "<p>$1</p>");
}
Hooks.on("chatMessage", async (chatLog, message, chatData) => {
console.log(chatData);
console.log(message);
const response = await fetch('http://192.168.1.183:3000/prompt', {
//const response = await fetch('http://debianmacbookair:3000/prompt', {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ message })
});
const data = await response.json();
console.log(data);
await ChatMessage.create({
content: formatResponse(data.result),
speaker: { alias: 'AI DM'},
style: CONST.CHAT_MESSAGE_STYLES.IC
});
})
Hooks.once("ready", () => {
console.log('Claude listening...');
});