--- 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)