{"id":48945361,"url":"https://github.com/fatton139/nikku","last_synced_at":"2026-04-19T14:01:16.057Z","repository":{"id":41803136,"uuid":"130476252","full_name":"fatton139/Nikku","owner":"fatton139","description":"Discord bot framework written in TypeScript (Release \"soon\")","archived":false,"fork":false,"pushed_at":"2023-01-07T03:04:09.000Z","size":877,"stargazers_count":3,"open_issues_count":10,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-17T16:42:33.632Z","etag":null,"topics":["bot","discord-api","discord-bot","discordjs","framework","fun","library","nikku","tslint","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fatton139.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-21T13:28:33.000Z","updated_at":"2020-08-18T04:05:26.000Z","dependencies_parsed_at":"2023-02-06T11:01:13.354Z","dependency_job_id":null,"html_url":"https://github.com/fatton139/Nikku","commit_stats":null,"previous_names":["axises/nikku"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/fatton139/Nikku","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatton139%2FNikku","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatton139%2FNikku/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatton139%2FNikku/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatton139%2FNikku/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fatton139","download_url":"https://codeload.github.com/fatton139/Nikku/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatton139%2FNikku/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32009239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","discord-api","discord-bot","discordjs","framework","fun","library","nikku","tslint","typescript"],"created_at":"2026-04-17T16:01:12.934Z","updated_at":"2026-04-19T14:01:16.050Z","avatar_url":"https://github.com/fatton139.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nikku 3\n\n[![Build status](https://ci.appveyor.com/api/projects/status/q77lx59u0k6sf34q?svg=true)](https://ci.appveyor.com/project/aXises/nikkubot)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/e12d96ca6dfd4a80a4063eb97cd24837)](https://app.codacy.com/app/aXises/fortniteBot?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=aXises/fortniteBot\u0026utm_campaign=badger)\n[![Maintainability](https://api.codeclimate.com/v1/badges/51cbd263ff1f0afff332/maintainability)](https://codeclimate.com/github/aXises/fortniteBot/maintainability)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nNikku is a customizable bot framework allowing anyone to create a Discord bot within minutes with a simple and modular command creation system. Written in TypeScript, Nikku provides the tools and helpers necessary for anyone to create both simple and advanced bots.\n\nNikku is built upon a piece of code developed in DECO2800-2018, relying primarily on a software design pattern known as the [**Strategy Pattern**](https://en.wikipedia.org/wiki/Strategy_pattern). Users are provided with sets of controlled data used in the development of their bots allowing controlled algorithms (commands) to be written that complies with [Discord.js](https://github.com/discordjs/discord.js/).\n\n## Features\n- Start a Discord bot in less than 20 lines.\n- Simple command creation and registration system.\n- Built-in logging and event handling.\n- Helpers for basic and advanced command designs.\n- Configurable runtime settings (More being added).\n\n## Notable Upcoming Features\n- Worker threads and sharding.\n- Command builders and generators.\n- Command event handler/dispatchers.\n- Built-in database systems and models.\n- Admin management controls.\n- Integrated user systems.\n- Component/packages module system.\n- Server API.\n- Integrated Dashboard.\n\n## Contributing\nAll contributions are welcome. Adhering to *tslint* is recommended.\n\n## Examples\n\n**[Mr Fortnite](https://github.com/aXises/MrFortnite)** is powered by Nikku and can be invited from **[here](https://discordapp.com/api/oauth2/authorize?client_id=455679698610159616\u0026permissions=0\u0026scope=bot)**. Mr Fortnite runs on Nikku developmental branches so things may fail. Feel free to submit an issue regarding the break.\n\n\n## Getting Started\n\nThe following sections will provide a general overview for setting up and adding basic commands to your bot.\n\n### Getting the package\n`npm install nikku` or `yarn add nikku`\n\nAdd typings if using TypeScript\n\n`npm install @types/nikku` or `yarn add @types/nikku`\n\n### Starting the bot\nAll bots are initialized through `NikkuCore`.\n\n```\nimport * as Nikku from \"nikku\";\n\nconst initializer = {\n    configurationPath: \"config.json\",\n};\n\nconst core = new Nikku.NikkuCore(initializer);\n\ncore.start();\n```\n### Initializer\nThe initializer determines locations of the config files Nikku should read from and the following values can be configured.\n\nAvailable options:\n- **initializeImmediately**: Optional boolean. Defaults to `false`. Whether to start the bot as soon as the core has been instantiated.\n\n- **configurationPath**: Optional string. Defaults to `botconfig.json`. Specifies where Nikku should find the configurations for the bot.\n\n- **dotenvPath**: Optional string. Defaults to `.env`. Specifies where Nikku should find its environment configurations from.\n\n### Example configs and .env files.\nconfig.json.\n```\n{\n    BOT_RESPONSE_TRIGGER: \"bot_name\",\n    MODULE_PATHS: [\"/dev\", \"/commands\"],\n    COMMAND_PREFIXES: [\"!\", \"!f\"],\n    REQUIRE_SPACE_AFTER_PREFIX: false\n}\n```\nAvailable options:\n- **BOT_RESPONSE_TRIGGER**: Optional string. The string which will be used to trigger chat bot services.\n\n- **MODULE_PATHS**: Optional string array. Specifies initial paths to search for commands.\n\n- **COMMAND_PREFIXES**: Optional string array. The prefixes required to trigger bot commands.\n\n- **REQUIRE_SPACE_AFTER_PREFIX**: Optional boolean. Determines whether if a space is required after a prefix to trigger a command. e.g `! help` vs `!help`\n\n.env file.\n```\nDISCORD_TOKEN=x\nDEBUG_OUTPUT_CHANNELS=1234567890,0000000000\nDEV_IDS=x,y,z\nDATABASE_URI=x\nCHATBOT_USER_ID=a\nCHATBOT_API_KEY=b\nCHATBOT_SESSION=c\n```\nAvailable options:\n- **DISCORD_TOKEN**: Discord Token for the bot application.\n\n- **DEBUG_OUTPUT_CHANNELS**: Comma separated Discord channel ID's to specify bot outputs logging.\n\n- **DEV_IDS**: Comma separated discord user ID's who will be granted higher privileges. Used for bot development. \n\n- **DATABASE_URI**: URI for a database connection. Nikku will start in no database mode if the connection fails.\n\n- **CHATBOT_USER_ID**: User ID for chatbot services.\n\n- **CHATBOT_API_KEY**: API Key for chatbot services.\n\n- **CHATBOT_SESSION**: Session ID for chatbot services.\n\n### Creating your first command.\nThere are multiple ways to create a bot command. The most common way is to simply extend our command classes. Nikku provides classes such as `ExecutableCommand` to easily setup commands.\n\nSimple example: `commands/Ping.js` responds with pong.\n```\nimport { ExecutableCommand } from \"nikku\";\n\nexport class Ping extends ExecutableCommand {\n    public constructor() {\n        super({\n            commandString: \"ping\",\n            accessLevel: AccessLevel.UNREGISTERED,\n            argLength: 0,\n            description: \"Responds with pong.\",\n        });\n    }\n\n    public setCustomAction() {\n        return async (state) =\u003e {\n            state.getHandle().channel.send(\"pong\");\n        };\n    }\n}\n```\nNow we will register this command using the `CommandImporter`. Using our example from before we will register the `/commands` folder as a command module. Nikku will search and automatically import all valid commands from a command module before loading the command for use.\n```\nimport * as Nikku from \"nikku\";\n\nconst initializer = {\n    configurationPath: \"config.json\",\n};\n\nconst core = new Nikku.NikkuCore(initializer);\n\nconst importer = new Nikku.CommandImporter();\n// Register the commands folder as a command module.\nimporter.registerPath(\"commands\");\n\ncore.start();\n```\nNow invoke the command from Discord (e.g `!ping`) and your bot should respond with `pong`.\n\n### Advanced commands\n\nCOMING SOON............\n\n## Development\n\n### Requirements\n- Node 10 or higher.\n- TypeScript 2.9.\n- tslint is recommended for style consistency.\n\n### Build\n1. Clone or Fork the repository.\n2. Install dependencies and packages.\n3. Compile TypeScript.\n4. Use built-in example (soon) or `npm link` to develop and test.\n\n## Licence\n\nThis project is licensed under the MIT License. See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffatton139%2Fnikku","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffatton139%2Fnikku","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffatton139%2Fnikku/lists"}