Test

🧩 Syntax:
const fs = require('fs');
const path = require('path');

module.exports = {
  config: {
    name: "rules",
    aliases: ["-a", "-r", "-res"],
    version: "1.0",
    author: "JMLABACO",
    countDown: 5,
    role: 0,
    shortDescription: "Manage rules for the chat.",
    longDescription: "Add, remove, reset, or display rules for the chat.",
    category: "chat",
    guide: "Use '/rules -add <rule1> | <rule2> | <rule3>' to add rules. Use '/rules -remove <rule number>' to remove a rule. Use '/rules -reset' to clear all rules. Use '/rules' to display all rules."
  },
  onStart: async function ({ api, event, args }) {
    if (!event || !event.threadID) {
      console.error("Event or ThreadID is undefined.");
      return;
    }

    const threadID = event.threadID;
    const cacheFolderPath = path.join(__dirname, "cache");
    const filePath = path.join(cacheFolderPath, "rules.json");

    if (!fs.existsSync(cacheFolderPath)) {
      fs.mkdirSync(cacheFolderPath);
    }

    if (args[0] === '-add' || args[0] === '-a') {
      const rulesToAdd = args.slice(1).join(' ');
      const rules = fs.existsSync(filePath) ? JSON.parse(fs.readFileSync(filePath)) : {};
      rules[threadID] = rules[threadID] || [];
      rules[threadID].push(rulesToAdd);
      fs.writeFileSync(filePath, JSON.stringify(rules));
      api.sendMessage(`Rules added: ${rulesToAdd}`, threadID);
    } else if (args[0] === '-remove' || args[0] === '-r') {
      const ruleNumberToRemove = parseInt(args[1], 10);
      let rules = fs.existsSync(filePath) ? JSON.parse(fs.readFileSync(filePath)) : {};
      if (rules[threadID] && ruleNumberToRemove > 0 && ruleNumberToRemove <= rules[threadID].length) {
        const removedRule = rules[threadID].splice(ruleNumberToRemove - 1, 1);
        fs.writeFileSync(filePath, JSON.stringify(rules));
        api.sendMessage(`Rule removed: ${removedRule}`, threadID);
      } else {
        api.sendMessage("Invalid rule number to remove.", threadID);
      }
    } else if (args[0] === '-reset' || args[0] === '-res') {
      let rules = fs.existsSync(filePath) ? JSON.parse(fs.readFileSync(filePath)) : {};
      if (rules[threadID]) {
        delete rules[threadID];
        fs.writeFileSync(filePath, JSON.stringify(rules));
        api.sendMessage("Rules reset successfully.", threadID);
      } else {
        api.sendMessage("No rules to reset for this chat.", threadID);
      }
    } else {
      let rules = fs.existsSync(filePath) ? JSON.parse(fs.readFileSync(filePath)) : {};
      if (rules[threadID] && rules[threadID].length > 0) {
        const formattedRules = rules[threadID].map((rule, index) => `• ${rule}`).join('\n');
        api.sendMessage(`[]===RULES===[]\n${formattedRules}`, threadID);
      } else {
        api.sendMessage("No rules set for this chat.", threadID);
      }
    }
  }
};