← back to browse
goat command

autoreact

Auto react (emoji + text)

0
views
0
likes
0
installs
raw source
module.exports = {
  config: {
    name: "autoreact",
    version: "4.4.0",
    author: "MOHAMMAD AKASH",
    role: 0,
    category: "system",
    shortDescription: "Auto react (emoji + text)",
    longDescription: "Stable auto reaction without silent API fail"
  },

  onStart: async function () {},

  onChat: async function ({ api, event }) {
    try {
      const { messageID, body, senderID, threadID } = event;
      if (!messageID || !body) return;

      // ❌ নিজের / বটের মেসেজে রিয়েক্ট না
      if (senderID === api.getCurrentUserID()) return;

      // ❌ হালকা cooldown (2.5s)
      global.__autoReactCooldown ??= {};
      if (
        global.__autoReactCooldown[threadID] &&
        Date.now() - global.__autoReactCooldown[threadID] < 2500
      ) return;

      global.__autoReactCooldown[threadID] = Date.now();

      const text = body.toLowerCase();
      let react = null;

      // ==========================
      // Emoji Categories
      // ==========================
      const categories = [
        { e: ["😂","🤣","😆","😄","😁"], r: "😆" },
        { e: ["😭","😢","🥺","💔"], r: "😢" },
        { e: ["❤️","💖","💘","🥰","😍"], r: "❤️" },
        { e: ["😡","🤬"], r: "😡" },
        { e: ["😮","😱","😲"], r: "😮" },
        { e: ["😎","🔥","💯"], r: "😎" },
        { e: ["👍","👌","🙏"], r: "👍" },
        { e: ["🎉","🥳"], r: "🎉" }
      ];

      // ==========================
      // Text Triggers
      // ==========================
      const texts = [
        { k: ["haha","lol","moja","xd"], r: "😆" },
        { k: ["sad","kharap","mon kharap","cry"], r: "😢" },
        { k: ["love","valobasi","miss"], r: "❤️" },
        { k: ["rag","angry","rage"], r: "😡" },
        { k: ["wow","omg"], r: "😮" },
        { k: ["ok","yes","okay","hmm"], r: "👍" }
      ];

      // ==========================
      // Emoji check first
      // ==========================
      for (const c of categories) {
        if (c.e.some(x => text.includes(x))) {
          react = c.r;
          break;
        }
      }

      // ==========================
      // Text check
      // ==========================
      if (!react) {
        for (const t of texts) {
          if (t.k.some(x => text.includes(x))) {
            react = t.r;
            break;
          }
        }
      }

      // ❌ কিছু না মিললে রিয়েক্ট না
      if (!react) return;

      // ⏱ Human-like delay
      await new Promise(r => setTimeout(r, 800));

      // ✅ FINAL FIX — NO callback, NO true
      api.setMessageReaction(react, messageID);

    } catch (e) {}
  }
};

View raw file