cirnofw
v1.1.1
Published
Simple discord bot framework.
Downloads
3
Readme
Cirno bot framework
This is still in development so things ~~are subject to~~ will change.
TypeScript Examples
Example of setting up a basic client in TypeScript (both are almost identical)
// Import the needed Classes from the framework
import { Client, LogLevel, CirnoOptions } from 'cirnofw';
import * as path from 'path';
const options: CirnoOptions = {
name: 'meme bot', // Bot username
token: 'valid-token', // Bot token
owners: ['152093238449274880'], // Bot owners
commandPrefix: '!', // Command prefix
commandDirectory: path.join(__dirname, 'commands'), // Command directory
statusMessage: 'Use !help for command info.', // Playing message
logLevel: LogLevel.Debug, // Terminal Log Level
logCommandUsage: true, // Log command usage in terminal
disableDefaultCommands: false, // Disable build-in commands like "help"
replyOnCommandCooldown: false, // Send message if user is on cooldown
unknownCommandError: true // Send error on unknown command usage
};
// Define and apply options to client
const client = new Client(options);
// Set command groups for CommandRegistry
client.setCommandGroups([
['util', 'Utility Commands']
]);
client.runAll(); // Run all event listeners and loaders
client.start(); // Login
Example command
Put this in a file in your commands
folder.
Tips is to have sub-folders inside your commands folder to organize commands by categories and such.
import { Message, RichEmbed } from 'discord.js';
import { Command, Client } from 'cirnofw';
export default class extends Command {
public constructor() {
super({
name: 'ping',
aliases: ['latency'],
group: 'util',
description: 'Shows the bots ping to the DiscordAPI.',
cooldown: 2000
});
}
public async execute(client: Client, message: Message, args: any[]): Promise<void> {
message.channel.send('Pinging...')
.then((sentMsg: Message) => {
sentMsg.edit(`:ping_pong: Pong! Took \`${sentMsg.createdTimestamp - message.createdTimestamp}ms\``);
});
}
}
Javascript Examples
Setting up the client
// Import the needed Classes from the framework
const { Client, LogLevel } = require('cirnofw');
const path = require('path');
const options = {
name: 'meme bot', // Bot username
token: 'valid-token', // Bot token
owners: ['152093238449274880'], // Bot owners
commandPrefix: '!', // Command prefix
commandDirectory: path.join(__dirname, 'commands'), // Command directory
statusMessage: 'Use !help for command info.', // Playing message
logLevel: LogLevel.Debug, // Terminal Log Level
logCommandUsage: true, // Log command usage in terminal
disableDefaultCommands: false, // Disable build-in commands like "help"
replyOnCommandCooldown: false, // Send message if user is on cooldown
unknownCommandError: true // Send error on unknown command usage
};
// Define and apply options to client
const client = new Client(options);
// Set command groups for CommandRegistry
client.setCommandGroups([
['util', 'Utility Commands']
]);
client.runAll(); // Run all event listeners and loaders
client.start(); // Login
Example command
const { Command } = require('cirnofw');
class PingCommand extends Command {
constructor() {
super({
name: 'ping',
group: 'util',
description: 'Shows the bots ping to the DiscordAPI',
cooldown: 2000
});
}
async execute(client, message, args) {
message.channel.send('Pinging...')
.then(sentMsg => {
sentMsg.edit(`:ping_pong: Pong! Took \`${sentMsg.createdTimestamp - message.createdTimestamp}ms\``);
});
}
}
exports.default = PingCommand; // Always make sure to export the command class.