Natico

Natico is designed to be a low level and extendable framework for Discordeno

Discord lines lines

Simple setup

Normal natico Using the natico plugin
import { 
         NaticoClient, 
         NaticoClientOptions, 
         NaticoCommandHandler 
} from "https://deno.land/x/natico/mod.ts";
class BotClient extends NaticoClient {
  constructor(public options: NaticoClientOptions) {
    super(options);
  }
  commandHandler: NaticoCommandHandler = new NaticoCommandHandler(this, {
    directory: "./commands",
    prefix: "!",
  });
  async start() {
    await this.commandHandler.loadALL();
    return this.login();
  }
}
const botClient = new BotClient({
  intents: ["Guilds", "GuildMessages", "GuildVoiceStates"],
  token: "your token",
});
botClient.start();

you will have to apply the plugins manually using the naticoclient.plugn() function

import { enableNaticoPlugin, NaticoBot, NaticoPluginOptions, withPlugins } from "../src/plugins/NaticoPlugin.ts";
import { enableCachePlugin, enableCacheSweepers } from "https://deno.land/x/discordeno_cache_plugin@0.0.9/mod.ts";

const pluginOps: NaticoPluginOptions = {
  commandHandler: {
    directory: "examples/template/commands",
    prefix: "!",
  },
};

const bot = withPlugins<NaticoBot<any>>(
  //@ts-ignore -
  {
    token: Deno.env.get("DISCORD_TOKEN")!,
    intents: ["Guilds", "GuildMessages"],
    botId: BigInt(Deno.env.get("BOT_ID")!),
    cache: {
      isAsync: false,
    },
  },
  [enableNaticoPlugin, pluginOps],
  enableCachePlugin,
  enableCacheSweepers
);
async function startUp() {
  await bot.commandHandler.loadALL();
  return await bot.login();
}
startUp();

Features

  • flexible
    • Natico is built using classes allowing you to extend everything and add features to your liking
  • Command handling
    • Natico is a slashcommand only framework
  • Listeners
    • Natico comes included with a listener(events) handler which makes it very easy to use events
  • Inhibitors
    • Natico has easy to use inhibitors
  • Interaction handling
    • Theres built in button and interaction support
  • And much more

This project is inspired by discord-akairo

For more information/docs visit the examples page