goat
command
baby
Baby AI auto reply
0
views
0
likes
0
installs
Aliases: bby, xan, bbz, jan, বেবি
raw source
const axios = require("axios");
/* =========================================================
BABY AI - GOATBOT
API: https://noobs-api.top/dipto/baby2
========================================================= */
module.exports.config = {
name: "baby",
version: "3.1.0",
role: 0,
author: "SUJON - BOSS",
countDown: 0,
category: "AI",
shortDescription: "Baby AI auto reply",
longDescription: "Baby AI using Dipto API",
guide: {
en: "{pn} [text]"
},
aliases: [
"bby",
"xan",
"bbz",
"jan",
"বেবি"
]
};
/* =========================================================
API
========================================================= */
const BASE_URL = "https://noobs-api.top";
/* =========================================================
DUPLICATE LOCK
========================================================= */
const processedMessages = new Set();
function isAlreadyProcessed(event) {
const id = event?.messageID;
if (!id) return false;
if (processedMessages.has(id)) {
return true;
}
processedMessages.add(id);
setTimeout(() => {
processedMessages.delete(id);
}, 30000);
return false;
}
/* =========================================================
TYPING
========================================================= */
async function typing(api, threadID, status) {
try {
if (typeof api.sendTypingIndicator === "function") {
await api.sendTypingIndicator(threadID, status);
}
} catch (e) {
console.log("⚠️ Typing error:", e.message);
}
}
/* =========================================================
API REQUEST
========================================================= */
async function getReply(text, senderID) {
try {
const res = await axios.get(
`${BASE_URL}/dipto/baby2`,
{
params: {
text: text,
senderID: senderID
},
timeout: 15000
}
);
console.log("🤖 BABY API:", res.data);
return {
reply:
res.data?.reply ||
"😶 আমি কিছু বলতে পারছি না…",
react:
res.data?.react ||
""
};
} catch (e) {
console.log(
"❌ BABY API ERROR:",
e.response?.data || e.message
);
return {
reply: "❌ এখন কথা বলতে পারছি না…",
react: ""
};
}
}
/* =========================================================
SAVE REPLY
========================================================= */
function saveReply(info, event) {
try {
if (
global.GoatBot &&
global.GoatBot.onReply &&
info?.messageID
) {
global.GoatBot.onReply.set(
info.messageID,
{
commandName: module.exports.config.name,
messageID: info.messageID,
author: event.senderID,
type: "baby"
}
);
console.log(
"✅ Baby reply handler saved:",
info.messageID
);
}
} catch (e) {
console.log(
"⚠️ Save reply error:",
e.message
);
}
}
/* =========================================================
SEND BABY REPLY
========================================================= */
async function sendBabyReply(api, event, result) {
return new Promise((resolve, reject) => {
api.sendMessage(
result.reply,
event.threadID,
async (err, info) => {
if (err) {
console.log(
"❌ Send error:",
err
);
return reject(err);
}
/* ================= REACTION ================= */
if (
result.react &&
event.messageID &&
typeof api.setMessageReaction === "function"
) {
try {
await api.setMessageReaction(
result.react,
event.messageID,
() => {},
true
);
} catch (e) {
console.log(
"⚠️ Reaction error:",
e.message
);
}
}
/* ================= SAVE REPLY ================= */
saveReply(info, event);
resolve(info);
},
event.messageID
);
});
}
/* =========================================================
GREETING
========================================================= */
const greetingReplies = [
"হ্যা জান বলো 🤌💋",
"কী চাই তোমার 😒",
"তুমি কি আমাকে মিস করো 🥺",
"এই যে আমি আছি 💖",
"বারবার ডাকছো কেন 😏"
];
/* =========================================================
SEND GREETING
========================================================= */
async function sendGreeting(api, event) {
const reply =
greetingReplies[
Math.floor(
Math.random() * greetingReplies.length
)
];
await typing(
api,
event.threadID,
true
);
await new Promise(
resolve =>
setTimeout(resolve, 3000)
);
await typing(
api,
event.threadID,
false
);
return new Promise((resolve, reject) => {
api.sendMessage(
reply,
event.threadID,
(err, info) => {
if (err) {
console.log(
"❌ Greeting error:",
err
);
return reject(err);
}
saveReply(info, event);
resolve(info);
}
);
});
}
/* =========================================================
TRIGGERS
========================================================= */
const triggers = [
"baby",
"bby",
"xan",
"bbz",
"jan",
"বেবি"
];
const triggerRegex =
/^(baby|bby|xan|bbz|jan|বেবি)(?:\s+|$)/i;
/* =========================================================
COMMAND
========================================================= */
module.exports.onStart = async function ({
api,
event,
args
}) {
/*
* যদি একই message অন্য handler ইতিমধ্যে process করে,
* তাহলে আবার reply করবে না।
*/
if (isAlreadyProcessed(event)) {
return;
}
const q =
args
.join(" ")
.trim();
if (!q) {
return api.sendMessage(
"💖 আমাকে কিছু বলো জান…",
event.threadID,
event.messageID
);
}
await typing(
api,
event.threadID,
true
);
await new Promise(
resolve =>
setTimeout(resolve, 2000)
);
await typing(
api,
event.threadID,
false
);
const result =
await getReply(
q,
event.senderID
);
return sendBabyReply(
api,
event,
result
);
};
/* =========================================================
REPLY HANDLER
========================================================= */
module.exports.onReply = async function ({
api,
event,
Reply
}) {
if (!event.body) return;
const text =
event.body.trim();
if (!text) return;
/*
* IMPORTANT:
* এখানে duplicate lock ব্যবহার করা হয়নি।
* কারণ onChat যেন reply event আটকাতে না পারে।
*/
console.log(
"💬 Baby reply received:",
text
);
await typing(
api,
event.threadID,
true
);
await new Promise(
resolve =>
setTimeout(resolve, 2000)
);
await typing(
api,
event.threadID,
false
);
const result =
await getReply(
text,
event.senderID
);
return sendBabyReply(
api,
event,
result
);
};
/* =========================================================
AUTO CHAT
========================================================= */
module.exports.onChat = async function ({
api,
event
}) {
if (!event.body) return;
const text =
event.body.trim();
if (!text) return;
const lowerText =
text.toLowerCase();
/* =======================================================
ONLY BABY / BBY / XAN
======================================================= */
if (
triggers.includes(lowerText)
) {
/*
* শুধু trigger message-এই duplicate lock।
* অন্য সাধারণ message-এ lock করা যাবে না।
*/
if (isAlreadyProcessed(event)) {
return;
}
return sendGreeting(
api,
event
);
}
/* =======================================================
BABY + TEXT
======================================================= */
if (!triggerRegex.test(text)) {
return;
}
/*
* এই message duplicate কিনা check
*/
if (isAlreadyProcessed(event)) {
return;
}
const q =
text
.replace(triggerRegex, "")
.trim();
if (!q) {
return sendGreeting(
api,
event
);
}
await typing(
api,
event.threadID,
true
);
await new Promise(
resolve =>
setTimeout(resolve, 3000)
);
await typing(
api,
event.threadID,
false
);
const result =
await getReply(
q,
event.senderID
);
return sendBabyReply(
api,
event,
result
);
};