← back to browse
goat command

tag

No description

0
views
0
likes
0
installs
raw source
module.exports = {
  config: {
    name: "tag",
    alises: ["mention"],
    category: 'box chat',
    role: 0,
    author: '乛 Xꫀᥒos ゎ',
    countDown: 2,
    description: { en: 'Advanced tagging with a premium UI interface.' },
    guide: {
      en: `{pn} [name] | [reply] + [text]`
    },
  },

  onStart: async ({ api, event, usersData, threadsData, args }) => {
    const { threadID, messageID, messageReply, senderID } = event;

    try {
      let tags = [];
      let msg = args.join(' ');
      let targetID = messageID;

      
      if (messageReply) {
        targetID = messageReply.messageID;
        const name = await usersData.getName(messageReply.senderID);
        tags.push({ name, id: messageReply.senderID });
      } else if (args.length > 0) {
        const thread = await threadsData.get(threadID);
        const query = args[0].toLowerCase();
        msg = args.slice(1).join(' ');

        tags = thread.members
          .filter(m => m.name.toLowerCase().includes(query))
          .map(m => ({ name: m.name, id: m.userID }));
      }

      if (tags.length === 0) {
        return api.sendMessage("╭═━━━┈┈┈┈┈┈━━━═╮\n       🍓 𝗡𝗼𝘁𝗶𝗳𝗶𝗰𝗮𝘁𝗶𝗼𝗻\n   ━━━━━━━━━━━━━\n   𝖭𝗈 𝗎𝗌𝖾𝗋 𝖿𝗈𝗎𝗇𝖽 𝗍𝗈 𝗍𝖺𝗀\n   𝖯𝗅𝖾𝖺𝗌𝖾 𝗋𝖾𝗉𝗅𝗒 𝗈𝗋 𝗍𝗒𝗉𝖾\n         𝖺 𝗏𝖺𝗅𝗂𝖽 𝗇𝖺𝗆𝖾.\n╰═━━━┈┈┈┈┈┈━━━═╯", threadID, messageID);
      }

      
      const mentions = tags.map(t => ({ tag: t.name, id: t.id }));
      const tagLabel = tags.map(t => `    ${t.name}`).join(', ');

      let uiMessage = `╭═━━━┈┈┈┈┈┈━━━═╮\n`;
      uiMessage += `     ${tagLabel}\n\n`;
      
      if (msg) {
        uiMessage += `💬 𝗠𝘀𝗴: ${msg}\n`;
      }
      
      uiMessage += `  ═━━━┈┈┈┈┈┈━━━═\n`;
      uiMessage += `              𝖠𝖼𝗍𝗂𝗈𝗇 𝖻𝗒:\n            ${await usersData.getName(senderID)}\n╰═━━━┈┈┈┈┈┈━━━═╯`;

      return api.sendMessage({
        body: uiMessage,
        mentions
      }, threadID, targetID);

    } catch (err) {
      return api.sendMessage(`❗ 𝗘𝗿𝗿𝗼𝗿: ${err.message}`, threadID, messageID);
    }
  }
};

View raw file