File size: 3,904 Bytes
2821330
 
 
7c4f99b
2821330
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7c4f99b
 
 
 
2821330
 
 
 
 
 
7c4f99b
2821330
7c4f99b
 
2821330
 
7c4f99b
 
 
 
 
 
 
 
 
 
 
2821330
 
 
 
 
 
 
 
 
7c4f99b
 
 
 
 
2821330
 
 
 
 
7c4f99b
2821330
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7c4f99b
2821330
7c4f99b
2821330
 
 
7c4f99b
2821330
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
module.exports.config = {
  name: "help",
  version: "1.0.0",
  hasPermission: 0, // Fixed typo
  credits: "august",
  description: "Guide for new users",
  commandCategory: "system",
  usages: "/help",
  hide: true,
  usePrefix: true,
  cooldowns: 5,
  envConfig: {
    autoUnsend: true,
    delayUnsend: 60
  }
};

const mathSansBold = {
  A: "๐– ", B: "๐–ก", C: "๐–ข", D: "๐–ฃ", E: "๐–ค", F: "๐–ฅ", G: "๐–ฆ", H: "๐–ง", I: "๐–จ",
  J: "๐–ฉ", K: "๐–ช", L: "๐–ซ", M: "๐–ฌ", N: "๐–ญ", O: "๐–ฎ", P: "๐–ฏ", Q: "๐–ฐ", R: "๐–ฑ",
  S: "๐–ฒ", T: "๐–ณ", U: "๐–ด", V: "๐–ต", W: "๐–ถ", X: "๐–ท", Y: "๐–ธ", Z: "๐–น",
  a: "๐–บ", b: "๐–ป", c: "๐–ผ", d: "๐–ฝ", e: "๐–พ", f: "๐–ฟ", g: "๐—€", h: "๐—", i: "๐—‚",
  j: "๐—ƒ", k: "๐—„", l: "๐—…", m: "๐—†", n: "๐—‡", o: "๐—ˆ", p: "๐—‰", q: "๐—Š", r: "๐—‹",
  s: "๐—Œ", t: "๐—", u: "๐—Ž", v: "๐—", w: "๐—", x: "๐—‘", y: "๐—’", z: "๐—“"
};

module.exports.handleEvent = function ({ api, event, getText }) {
  const { commands } = global.client;
  const { threadID, messageID, body } = event;

  if (!body || typeof body == "undefined" || body.indexOf("commands") !== 0) return;
  const splitBody = body.slice(body.indexOf("commands")).trim().split(/\s+/);
  if (splitBody.length === 1 || !commands.get(splitBody[1].toLowerCase())) return;

  const threadSetting = global.data.threadData.get(parseInt(threadID)) || {};
  const command = commands.get(splitBody[1].toLowerCase());
  const prefix = threadSetting.PREFIX || global.config.PREFIX;

  return api.sendMessage(
    getText("moduleInfo", command.config.name, command.config.description, 
      `${prefix}${command.config.name} ${(command.config.usages) ? command.config.usages : ""}`, 
      command.config.commandCategory, command.config.cooldowns, 
      command.config.hasPermission === 0 ? getText("user") : 
      command.config.hasPermission === 1 ? getText("adminGroup") : getText("adminBot"), 
      command.config.credits),
    threadID, messageID
  );
};

module.exports.run = async function ({ api, event, args }) {
  const uid = event.senderID;
  const userName = (await api.getUserInfo(uid))[uid].name;

  const { commands } = global.client;
  const { threadID, messageID } = event;
  const threadSetting = global.data.threadData.get(parseInt(threadID)) || {};
  
  const moduleConfig = global.configModule?.[this.config.name] || {}; // Fix for undefined configModule
  const autoUnsend = moduleConfig.autoUnsend ?? false;
  const delayUnsend = moduleConfig.delayUnsend ?? 60;
  const prefix = threadSetting.PREFIX || global.config.PREFIX;

  const categories = new Set();
  const categorizedCommands = new Map();

  for (const [name, value] of commands) {
    if (value.config.hide) continue;
    const categoryName = value.config.commandCategory;
    if (!categories.has(categoryName)) {
      categories.add(categoryName);
      categorizedCommands.set(categoryName, []);
    }
    categorizedCommands.get(categoryName).push(`โ”‚ โœง ${value.config.name}`);
  }

  let msg = `๐–ง๐–พ๐—’ ${userName}, ๐—๐—๐–พ๐—Œ๐–พ ๐–บ๐—‹๐–พ ๐–ผ๐—ˆ๐—†๐—†๐–บ๐—‡๐–ฝ๐—Œ ๐—๐—๐–บ๐— ๐—†๐–บ๐—’ ๐—๐–พ๐—…๐—‰ ๐—’๐—ˆ๐—Ž:\n\n`;

  for (const categoryName of categories) {
    const categoryNameSansBold = categoryName.split("").map(c => mathSansBold[c] || c).join("");
    msg += `โ•ญโ”€โใ€Œ ${categoryNameSansBold} ใ€\n`;
    msg += categorizedCommands.get(categoryName).join("\n");
    msg += "\nโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โŸก\n";
  }

  msg += `โ”œโ”€โ”€โ”€โ”€โ”€โ˜พโ‹†\nโ”‚ ยป Total commands: [ ${commands.size} ]\nโ”‚ใ€Œ โ˜พโ‹† PREFIX: ${prefix} ใ€\nโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โŸก`;

  return api.sendMessage(msg, threadID, async (error, info) => {
    if (autoUnsend) {
      await new Promise(resolve => setTimeout(resolve, delayUnsend * 60000));
      return api.unsendMessage(info.messageID);
    }
  });
};