Nondigestible Purple Mayonnaise

    TypeScript icon, indicating that this package has built-in type declarations

    0.3.3 • Public • Published

    FishyBot Framework

    A framework for creating complex discord bots easily.

    How to use:

    1. install the package with npm install fishy-bot-framework -s
    2. import the package with either import * as FBF from "fishy-bot-framework" or const FBF = require("fishy-bot-framework")
    3. Start a new client:
    import * as FBF from "fishy-bot-framework"
    const client = new FBF.FishyClient({
      token:"discord bot token",
      author:"Your name",
      db_uri: "mongodb://",
      guild_model: GuildModel,
      cmd_dir: "dist/commands",


    A basic command should look something like this

    // The code that gets run when the command gets called;
    // It takes the arguments `FishyClient` and `Interaction`
    export const run: FishyCommandCode = async (client, interaction) => {
      interaction.send(`Current websocket ping: \`${}ms\``);
    // The configuration of the commands, it needs this to run
    export const config: FishyCommandConfig = {
      name: "ping",               // Name of the command
      bot_needed: false,          // If the bot user is required to be in the guild
                                  // Needed for `` for example
      user_perms: [],             // An array of permissions the user needs to run the command
      interaction_options: {      // Discord interaction options
        name: "ping",
        description: "Ping the bot"

    Use these steps to create a new category

    create - /commands/"category"/
    create - /commands/"category"/index.ts
    export - "name" & "description" from /commands/"category"/index.ts
    create - /commands/"category"/command.ts




    To create a button you can run:

    interaction.send("Message", {
      components: [
          type: ComponentType.ActionRow,
          components: [
              type: ComponentType.Button,
              style: ComponentStyle.Success,
              label: "HEY",
              custom_id: "send_ping",

    To run code when this button is pressed, you can create a new file just like a normal command. You can put this file anywhere you can place a normal command.

    Put this code in the new file:

    export const run: FishyComponentCommandCode = async (client, interaction) => {
      if (interaction instanceof ButtonInteraction) {
        const memberID =;
        const member = await interaction.guild?.members.fetch(memberID);
        await member?.kick();
        interaction.send("Kicked the member!");
    export const config: FishyComponentCommandConfig = {
      custom_id: "kick_",
      atStart: true,
      bot_needed: true,
      user_perms: ["KICK_MEMBERS"],

    Select menus

    To send a select menu, just like a button, you need to send message components

    interaction.send("oi", {
      components: [
          type: ComponentType.ActionRow,
          components: [
              type: ComponentType.Select,
              custom_id: "selectOption",
              options: [
                  label:"Option 1", value:"1",
                  label:"Option 2", value:"2",
                  label:"Option 3", value:"3",
                  label:"Option 4", value:"4",
                  label:"Option 5", value:"5",
              max_values: 3,
              min_values: 1,

    Then to do something with them

    export const run: FishyComponentCommandCode = async (client, interaction) => {
      if (interaction instanceof SelectInteraction) {
        interaction.sendSilent(`You have selected: \`${", ")}\``);
    export const config: FishyComponentCommandConfig = {
      custom_id: "selectOption",


    A basic event file should look something like this:

    export const trigger: WSEventType | string = "INTERACTION_CREATE";
    export async function run(client, data){


    Required Mongoose data fields:

      id: String,     // The guild's id for fetching, index this
      settings: Object   // Used for disabeling commands




    npm i fishy-bot-framework

    DownloadsWeekly Downloads






    Unpacked Size

    110 kB

    Total Files


    Last publish


    • fish_o