--- sidebar_position: 3 --- # Lets Create a simple bot in Node.js - **Step 1**: Create a typescript project with index.ts as main file. - **Step 2**: Installing packages. Install following packages. ```bash npm i @thereallonewolf/amethystframework ``` - **Step 3**: Create a index.ts file. - **Step 4**: Add following code in index.ts file, replacing TOKEN with your bot token. ```ts import { createBot, GatewayIntents, startBot } from "discordeno"; import { enableCachePlugin, enableCacheSweepers } from "discordeno/cache-plugin"; import { AmethystBot, Category, Command, Context, enableAmethystPlugin, Event, } from "@thereallonewolf/amethystframework"; let baseClient = createBot({ token: "TOKEN", intents: GatewayIntents.Guilds | GatewayIntents.GuildMessages | GatewayIntents.MessageContent, }); //@ts-ignore let client = enableAmethystPlugin(enableCachePlugin(baseClient), { botMentionAsPrefix: true, prefix: "!", //Can be a function or a string. ignoreBots: false, }); enableCacheSweepers(client); startBot(client); @Category({ name: "general", description: "My general commands", uniqueCommands: true, default: "", //As all the commands are unique so no need to set the default command. }) export class General { @Command({ name: "ping", description: "Pong!", commandType: ["application", "message"], category: "general", args: [], }) async ping(bot: AmethystBot, ctx: Context) { ctx.reply({ content: "Pong!" }); } @Event("ready") async ready() { console.log("I am ready!"); client.amethystUtils.updateSlashCommands(); } } ``` - **Step 5**: Invite your bot and compile index.ts and run it. Then you can use `/general ping` or `!ping` - **Step 6**: Useful links: 1. Command Options can be found [here](https://github.com/AmethystFramework/framework/blob/master/src/types/commandOptions.ts). 2. Category Options [here](https://github.com/AmethystFramework/framework/blob/master/src/types/categoryOptions.ts) 3. Full [Documentation](https://deno.land/x/amethyst)