const { getStreamsFromAttachment, log } = global.utils; const mediaTypes = ["photo", "png", "animated_image", "video", "audio"]; module.exports = { config: { name: "callad", aliases: ["call", "called"], version: "2.0", author: "NTKhang | Edited by Akash", countDown: 5, role: 0, category: "contacts admin", description: { en: "Send message or report directly to bot admin" }, guide: { en: "{pn} " } }, langs: { en: { missingMessage: "โ— Please write a message to send", noAdmin: "โš ๏ธ No admin found", sentFromGroup: "\n๐Ÿ‘ฅ Group: %1\n๐Ÿงต Thread ID: %2", sentFromUser: "\n๐Ÿ‘ค Sent from private chat", userContent: "\n\n๐Ÿ“ฉ Message:\n%1\n\nโ†ฉ๏ธ Reply to respond", success: "โœ… Message Sent\n\n๐Ÿ“จ Sent to %1 admin(s)", failed: "โŒ Failed to send message to %1 admin(s)", adminReply: "๐Ÿ“ Admin Reply\n\n๐Ÿ‘ค %1:\n%2\n\nโ†ฉ๏ธ Reply to continue", userFeedback: "๐Ÿ“ User Feedback\n\n๐Ÿ‘ค %1\n๐Ÿ†” %2%3\n\n๐Ÿ“ฉ Message:\n%4", replySuccess: "โœ… Reply sent successfully" } }, onStart: async function ({ args, message, event, usersData, threadsData, api, commandName, getLang }) { if (!args[0]) return message.reply(getLang("missingMessage")); const { senderID, threadID, isGroup } = event; const adminBot = global.GoatBot.config.adminBot; if (!adminBot.length) return message.reply(getLang("noAdmin")); const senderName = await usersData.getName(senderID); let body = "๐Ÿ“ž CALL ADMIN\n\n" + `๐Ÿ‘ค User: ${senderName}\n` + `๐Ÿ†” ID: ${senderID}`; body += isGroup ? getLang("sentFromGroup", (await threadsData.get(threadID)).threadName, threadID) : getLang("sentFromUser"); body += getLang("userContent", args.join(" ")); const formMessage = { body, mentions: [{ id: senderID, tag: senderName }], attachment: await getStreamsFromAttachment( [...event.attachments, ...(event.messageReply?.attachments || [])] .filter(item => mediaTypes.includes(item.type)) ) }; let success = 0; for (const uid of adminBot) { try { const info = await api.sendMessage(formMessage, uid); success++; global.GoatBot.onReply.set(info.messageID, { commandName, type: "userCallAdmin", threadID, messageIDSender: event.messageID }); } catch (e) { log.err("CALL ADMIN", e); } } return message.reply(getLang("success", success)); }, onReply: async function ({ args, event, api, message, Reply, usersData, commandName, getLang }) { const senderName = await usersData.getName(event.senderID); if (Reply.type === "userCallAdmin") { const body = getLang("adminReply", senderName, args.join(" ")); api.sendMessage( { body }, Reply.threadID, () => message.reply(getLang("replySuccess")), Reply.messageIDSender ); } } };