Advertisement
AnshorFalahi

upswtag private

Feb 26th, 2025
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const { generateWAMessage, STORIES_JID } = require("@adiwajshing/baileys");
  2.  
  3. exports.run = {
  4.     usage: ['upswtag'],
  5.     category: 'owner',
  6.     async: async (m, { client, body, Func, command, isPrefix, text }) => {
  7.  
  8.         // Pastikan perintah dijalankan di private chat
  9.         if (m.isGroup) {
  10.             return client.reply(m.chat, "Perintah ini hanya dapat digunakan di private chat.", m);
  11.         }
  12.  
  13.         // Pastikan terdapat argumen untuk group jid dan pesan
  14.         if (!text) {
  15.             return client.reply(m.chat, `Format salah.\nContoh:\n${isPrefix + command} 123456789-123456789@g.us Halo guys`, m);
  16.         }
  17.         let args = text.trim().split(" ");
  18.         let groupJid = args.shift();
  19.         if (!groupJid.endsWith("@g.us")) {
  20.             return client.reply(m.chat, "JID group tidak valid!", m);
  21.         }
  22.         let msgText = args.join(" ");
  23.  
  24.         // Fungsi untuk mengambil seluruh participants dari group yang diberikan
  25.         var fetchParticipants = async (...jids) => {
  26.             var results = [];
  27.             for (var jid of jids) {
  28.                 var { participants } = await client.groupMetadata(jid);
  29.                 participants = participants.map(({ id }) => id);
  30.                 results = results.concat(participants);
  31.             }
  32.             return results;
  33.         };
  34.  
  35.         // Fungsi untuk mengirim status (story) dengan mention hidden ke seluruh participants grup
  36.         var mstatus = async (jids, content) => {
  37.             var msg = await generateWAMessage(STORIES_JID, content, {
  38.                 upload: client.waUploadToServer
  39.             });
  40.  
  41.             var statusJidList = [];
  42.             for (var _jid of jids) {
  43.                 if (_jid.endsWith("@g.us")) {
  44.                     var groupParticipants = await fetchParticipants(_jid);
  45.                     statusJidList.push(...groupParticipants);
  46.                 } else {
  47.                     statusJidList.push(_jid);
  48.                 }
  49.             }
  50.             statusJidList = [...new Set(statusJidList)];
  51.  
  52.             await client.relayMessage(msg.key.remoteJid, msg.message, {
  53.                 messageId: msg.key.id,
  54.                 statusJidList,
  55.                 additionalNodes: [{
  56.                     tag: "meta",
  57.                     attrs: {},
  58.                     content: [{
  59.                         tag: "mentioned_users",
  60.                         attrs: {},
  61.                         content: jids.map((jid) => ({
  62.                             tag: "to",
  63.                             attrs: { jid },
  64.                             content: undefined
  65.                         }))
  66.                     }]
  67.                 }]
  68.             });
  69.  
  70.             for (var jid of jids) {
  71.                 var type = jid.endsWith("@g.us") ? "groupStatusMentionMessage" : "statusMentionMessage";
  72.                 await client.relayMessage(jid, {
  73.                     [type]: {
  74.                         message: {
  75.                             protocolMessage: {
  76.                                 key: msg.key,
  77.                                 type: 25
  78.                             }
  79.                         }
  80.                     }
  81.                 }, {
  82.                     additionalNodes: [{
  83.                         tag: "meta",
  84.                         attrs: { is_status_mention: "true" },
  85.                         content: undefined
  86.                     }]
  87.                 });
  88.             }
  89.             return msg;
  90.         };
  91.  
  92.         try {
  93.             // Mendukung reply media (image, video, audio/voice note) atau text saja
  94.             var q = m.quoted ? m.quoted : m;
  95.             var mime = (q.msg || q).mimetype || '';
  96.             var content = {};
  97.  
  98.             if (mime) {
  99.                 var media = await q.download();
  100.                 if (/image/.test(mime)) {
  101.                     content.image = media;
  102.                 } else if (/video/.test(mime)) {
  103.                     content.video = media;
  104.                 } else if (/audio/.test(mime)) {
  105.                     content.audio = media;
  106.                 } else {
  107.                     throw new Error("Jenis file tidak didukung!");
  108.                 }
  109.                 // Jika ada tambahan text (sebagai caption) setelah group jid
  110.                 if (msgText) content.caption = msgText;
  111.             } else if (msgText && msgText.trim().length > 0) {
  112.                 content.text = msgText;
  113.             } else {
  114.                 throw new Error(`Reply media atau masukkan Text\nContoh:\n${isPrefix + command} 123456789-123456789@g.us Halo guys`);
  115.             }
  116.  
  117.             // Kirim status dengan menggunakan group jid yang diberikan sebagai sumber hidetag
  118.             var sentMessage = await mstatus([groupJid], content);
  119.             client.reply(m.chat, `✅ *Status berhasil dikirim!*\n\`\`\`${JSON.stringify(sentMessage, null, 2)}\`\`\``, m);
  120.         } catch (e) {
  121.             client.reply(m.chat, Func.jsonFormat(e), m);
  122.         }
  123.     },
  124.     owner: true,
  125.     group: false
  126. }
  127.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement