Introduction to Komada
Komada is a modular bot framework built for Discord.js directly inspired by Klasa and geared towards enhancing the performance and scalability of bots. With Komada, you can rapidly build bots using powerful, well-documented API functions. This article will introduce you to some of the most useful APIs in Komada, with plenty of examples to get you started.
Getting Started with Komada
First, let’s set up a basic project structure for a Komada bot:
mkdir bot-project cd bot-project npm init npm install komada
Create an entry file, index.js
, that will initialize your Komada bot:
const { Client } = require("komada"); const client = new Client({ fetchAllMembers: true, commandEditing: true, typing: true }); client .login("YOUR_BOT_TOKEN") .catch(console.error);
Example APIs
Commands API
Komada makes it easy to create and manage commands. Here’s a simple ping command:
const { Command } = require("komada"); module.exports = class extends Command { constructor(client) { super(client, { name: "ping", enabled: true, runIn: ["text"], description: "Ping/Pong command. Responds with Pong and latency.", }); } async run(message) { const msg = await message.send("Pinging..."); msg.edit(`Pong! Latency is \`${msg.createdTimestamp - message.createdTimestamp}ms\`.`); } };
Inhibitors API
Inhibitors are used to prevent commands from executing based on specific conditions. Here’s an example inhibitor that only allows command execution by specific roles:
const { Inhibitor } = require("komada"); module.exports = class extends Inhibitor { constructor(client) { super(client, { name: "roleBased", enabled: true }); } async run(message, command) { const allowedRoles = ["Admin", "Moderator"]; if (message.member.roles.some((role) => allowedRoles.includes(role.name))) { return false; } return true; } };
Final Example Application
Combining the above elements, here’s a full example of a Komada bot with the ping command and role-based inhibitor:
const { Client } = require("komada"); const client = new Client({ fetchAllMembers: true, commandEditing: true, typing: true }); client .login("YOUR_BOT_TOKEN") .catch(console.error); // Inhibitors client.inhibitors.set("roleBased", require("./inhibitors/roleBased")); // Commands client.commands.set("ping", require("./commands/ping"));
With these foundational structures, you’re well on your way to developing a robust and modular bot using Komada. Continue exploring the documentation and enhance your bot’s functionality with more commands and inhibitors!
Hash: 01189eb6f4359bdff29440212e63aa8e602f9707adff5d41c857887ad3c6b544