blackcat.js-discord - v1.0.17
    Preparing search index...

    Class CommandManager

    Quản lý hệ thống prefix command cho Discord bot.

    Class này chịu trách nhiệm:

    • Load command từ thư mục.
    • Đăng ký command, alias và category vào client.
    • Resolve command theo tên hoặc alias.
    • Tự động xử lý event messageCreate.
    • Kiểm tra cooldown và permission trước khi chạy command.
    const manager = new CommandManager({
    directory: "./commands",
    prefix: "!",
    });

    await manager.loadAll(client);
    Index

    Constructors

    Properties

    client: Client

    Methods

    • Lấy toàn bộ command đã load.

      Returns CommandBuilder<boolean>[]

      Mảng các command builder.

      for (const command of manager.getAllCommands()) {
      console.log(command.commandName);
      }
    • Lấy toàn bộ category và command bên trong từng category.

      Returns Collection<string, Collection<string, CommandBuilder<boolean>>>

      Collection có key là tên category và value là collection command.

      for (const [category, commands] of manager.getCategories()) {
      console.log(category, commands.size);
      }
    • Lấy collection command theo category.

      Category được suy ra từ thư mục cấp đầu tiên bên trong directory.

      Parameters

      • category: string

        Tên category cần lấy.

      Returns Collection<string, CommandBuilder<boolean>> | undefined

      Collection command thuộc category, hoặc undefined nếu không tồn tại.

      const adminCommands = manager.getCategory("admin");

      if (adminCommands) {
      console.log([...adminCommands.keys()]);
      }
    • Lấy danh sách tên category hiện có.

      Returns string[]

      Mảng tên category.

      const categories = manager.getCategoryNames();
      console.log(categories);
    • Lấy command theo tên chính xác sau khi normalize.

      Hàm này chỉ tìm trong client.commands, không resolve alias. Nếu bạn muốn tìm cả alias, hãy dùng CommandManager.resolve.

      Parameters

      • commandName: string

        Tên command cần tìm.

      Returns CommandBuilder<boolean> | undefined

      Command nếu tồn tại, ngược lại trả về undefined.

      const help = manager.getCommand("help");

      if (help) {
      console.log(help.commandName);
      }
    • Lấy tổng số command hiện đang được quản lý.

      Returns number

      Số lượng command đã load.

      console.log(`Bot hiện có ${manager.getCommandCount()} command`);
      
    • Lấy danh sách tên command đã load.

      Returns string[]

      Mảng tên command đã normalize.

      const names = manager.getCommandNames();
      console.log(names.join(", "));
    • Lấy danh sách prefix hiện tại.

      Nếu prefix là function, hàm sẽ gọi function đó với guildID. Nếu prefix trả về string đơn, hàm sẽ bọc thành mảng một phần tử.

      Parameters

      • guildID: string = ""

        ID của guild cần lấy prefix. Mặc định là chuỗi rỗng.

      Returns Promise<string[]>

      Mảng prefix có thể dùng trong guild đó.

      const prefixes = await manager.getPrefixes(message.guildId ?? "");
      console.log(prefixes);
    • Kiểm tra command hoặc alias có tồn tại hay không.

      Hàm này dùng CommandManager.resolve, nên có thể kiểm tra cả tên command lẫn alias của command.

      Parameters

      • commandName: string

        Tên command hoặc alias cần kiểm tra.

      Returns boolean

      true nếu tìm thấy command, ngược lại là false.

      if (manager.hasCommand("h")) {
      console.log("Alias hoặc command này tồn tại");
      }
    • Load toàn bộ command từ thư mục đã cấu hình.

      Nếu registerMessageCreateEventtrue, hàm này cũng tự động gắn listener cho event messageCreate để bot có thể xử lý prefix command.

      Returns Promise<void>

      Promise hoàn tất sau khi toàn bộ command hợp lệ được load.

      const manager = new CommandManager({
      directory: "./commands",
      prefix: "!",
      });

      await manager.loadAll();
      console.log(`Đã load ${manager.getCommandCount()} command`);
    • Đăng ký một hoặc nhiều command vào command manager.

      Nếu command hoặc alias đã tồn tại, hàm sẽ ném ra lỗi.

      Parameters

      Returns void

      Ném ra lỗi nếu:

      • Tên command bị trùng lặp.
      • Alias bị trùng lặp.
      • Command không hợp lệ.
      manager.registerCommand(pingCommand);
      
      manager.registerCommand([
      pingCommand,
      helpCommand,
      avatarCommand,
      ]);
    • Xóa toàn bộ command hiện tại và load lại từ thư mục.

      Hàm này clear commands, aliasescategories trước khi gọi lại CommandManager.loadAll.

      Returns Promise<void>

      Promise hoàn tất sau khi reload xong.

      await manager.reloadAll();
      console.log("Đã reload toàn bộ command");
    • Reload một command cụ thể.

      Hàm này tìm command theo tên hoặc alias, unload command đó, sau đó quét lại thư mục command để load phiên bản mới.

      Parameters

      • commandName: string

        Tên command hoặc alias cần reload.

      Returns Promise<boolean>

      true nếu command được reload thành công, ngược lại là false.

      const ok = await manager.reloadCommand("help");

      if (ok) {
      console.log("Đã reload command help");
      }
    • Resolve command từ tên command hoặc alias.

      Tên truyền vào sẽ được trim và chuyển về chữ thường trước khi tìm kiếm.

      Parameters

      • commandName: string

      Returns CommandBuilder<boolean> | null

      Command tìm được, hoặc null nếu không tồn tại.

      const command = manager.resolve("help");
      const commandFromAlias = manager.resolve("h");

      if (commandFromAlias) {
      await commandFromAlias.execute(client, message, []);
      }
    • Gán instance client cho manager.

      Method này được gọi bởi Client trong quá trình khởi tạo để inject client vào manager sau khi client đã được tạo.

      Parameters

      • client: Client

        Instance Discord client.

      Returns this

      Chính instance hiện tại để hỗ trợ chaining.

      commandManager.setClient(client);
      
    • Gỡ một command khỏi client.

      Hàm này cũng xóa các alias trỏ tới command và xóa command khỏi category. Nếu category rỗng sau khi xóa, category đó cũng bị xóa khỏi client.

      Parameters

      • commandName: string

        Tên command hoặc alias cần gỡ.

      Returns boolean

      true nếu gỡ thành công, false nếu không tìm thấy command.

      const removed = manager.unloadCommand("help");

      if (removed) {
      console.log("Đã gỡ command help");
      }