DashXx / plugins /hammer.js
HerzaJ's picture
Update plugins/hammer.js
03fd71a verified
// SCRAPE BY NEKOLABS https://whatsapp.com/channel/0029VbANq6v0VycMue9vPs3u
const axios = require("axios");
const sessions = new Map();
const SESSION_TIMEOUT = 2 * 60 * 1000;
const models = {
sleepy: "312b3ce9-62dc-4e94-9a40-fb8f60c93ea1",
sarah: "4f2edc8d-2992-427f-93c2-849fc2d956de",
myra: "deb86452-e27f-47d0-959d-98bdf53fac16",
aiko: "c8bfad14-8529-4bf2-a359-b5dd067f2b3b"
};
async function hammerAI(userId, message, model) {
const url = "https://www.hammerai.com/api/cloud/chat";
const modelId = models[model.toLowerCase()] || model;
if (!sessions.has(userId)) {
sessions.set(userId, {
messages: [
{
role: "system",
content: "You are an AI chat assistant. Respond politely and helpfully to the user.",
},
],
timeout: null,
});
}
const session = sessions.get(userId);
session.messages.push({ role: "user", content: message });
if (session.timeout) clearTimeout(session.timeout);
session.timeout = setTimeout(() => {
sessions.delete(userId);
}, SESSION_TIMEOUT);
const payload = {
authorId: "b081fd42-5c88-460a-8ccd-d801e882faf7",
userId: "",
licenseKey: "",
generateChat: {
quantizationKey: "vllm-mistralai/Mistral-Nemo-Instruct-2407",
messages: session.messages,
temperature: 0.8,
topP: 0.9,
topK: 30,
nPredict: 256,
repetitionPenalty: 1.1,
contextSize: 4096,
mlock: true,
characterId: modelId,
},
};
try {
const { data } = await axios.post(url, payload, {
headers: {
"Content-Type": "text/plain;charset=UTF-8",
"User-Agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36",
Origin: "https://www.hammerai.com",
Referer: `https://www.hammerai.com/chat/${modelId}`,
},
});
session.messages.push({ role: "assistant", content: data });
return data;
} catch (err) {
return `Error: ${err.response?.status || err.message}`;
}
}
const handler = async (req, res) => {
try {
const { chat, model, key } = req.query;
if (!chat) {
return res.status(400).json({
success: false,
error: 'Missing required parameter: chat'
});
}
if (!model) {
return res.status(400).json({
success: false,
error: 'Missing required parameter: model',
availableModels: Object.keys(models)
});
}
if (!models[model.toLowerCase()]) {
return res.status(400).json({
success: false,
error: 'Invalid model',
availableModels: Object.keys(models)
});
}
if (!key) {
return res.status(400).json({
success: false,
error: 'Missing required parameter: key'
});
}
const userId = key;
const result = await hammerAI(userId, chat, model);
res.json({
author: "Herza",
success: true,
model: model,
response: result
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
};
module.exports = {
name: 'HammerAI Chat',
description: 'Generate responses using HammerAI with different character models',
type: 'GET',
routes: ['api/AI/hammerAI'],
tags: ['ai', 'hammerai', 'chat'],
main: ['AI'],
parameters: ['chat', 'model', 'key'],
enabled: true,
handler
};