← back to browse
goat command

tag

No description

0
views
0
likes
0
installs
raw source
module.exports = {
  config: {
    name: "tag",
    category: "box chat",
    role: 0,
    author: "EryXenX",
    countDown: 3,
    description: {
      en: "Tag members by name, reply or everyone"
    },
    guide: {
      en: "{p}tag [name] [msg]\n{p}tag all [msg]\nReply + {p}tag [msg]"
    }
  },

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

    try {
      const threadData = await threadsData.get(threadID);

      const members = threadData.members
        .filter(member => member.inGroup)
        .map(member => ({
          name: member.name,
          id: member.userID
        }));

      let tagUsers = [];
      let text = "";

      if (messageReply) {
        const uid = messageReply.senderID;
        const name = await usersData.getName(uid);

        tagUsers.push({
          name,
          id: uid
        });

        text = args.join(" ");
      }

      else if (
        args[0] &&
        ["all", "everyone", "cdi"].includes(args[0].toLowerCase())
      ) {
        tagUsers = members;
        text = args.slice(1).join(" ");
      }

      else {
        if (!args[0]) {
          return api.sendMessage(
            "⚠️ | Reply, name or all use korun.",
            threadID,
            messageID
          );
        }

        const searchName = args[0].toLowerCase();
        text = args.slice(1).join(" ");

        tagUsers = members.filter(member =>
          member.name.toLowerCase().includes(searchName)
        );

        if (tagUsers.length === 0) {
          return api.sendMessage(
            "❌ | User Not Found.",
            threadID,
            messageID
          );
        }
      }

      const mentions = tagUsers.map(user => ({
        tag: user.name,
        id: user.id
      }));

      const namesText = tagUsers
        .map(user => `• ${user.name}`)
        .join("\n");

      const body = text
        ? `╭─ Tag Notice\n${namesText}\n├──────────\n💬 ${text}\n╰──────────`
        : `╭─ Tag Notice\n${namesText}\n╰──────────`;

      return api.sendMessage(
        {
          body,
          mentions
        },
        threadID,
        messageReply ? messageReply.messageID : messageID
      );
    } catch (error) {
      return api.sendMessage(
        `❌ | Error: ${error.message}`,
        threadID,
        messageID
      );
    }
  }
};

View raw file