From 53c1efe66445e34efb71258d72eb96da5e2a0d3a Mon Sep 17 00:00:00 2001 From: MasedMSD Date: Tue, 1 Oct 2024 18:39:38 +0500 Subject: [PATCH] feat: bun related docs (@stonega) - changed bot.ts to index.ts - mention bun at hosting docs --- site/docs/guide/getting-started.md | 84 ++++++++++++++++++++++++++++++ site/docs/guide/introduction.md | 30 ++++++++++- site/docs/hosting/firebase.md | 2 +- site/docs/hosting/vps.md | 4 ++ 4 files changed, 118 insertions(+), 2 deletions(-) diff --git a/site/docs/guide/getting-started.md b/site/docs/guide/getting-started.md index 39d237d45..28cf344e0 100644 --- a/site/docs/guide/getting-started.md +++ b/site/docs/guide/getting-started.md @@ -150,6 +150,90 @@ in your terminal before you execute `node bot.js`. This makes it easier to debug your bot. ::: +## Getting Started on Bun + +> This guide assumes that you have [Bun](https://bun.sh) installed. +> If you don't know what these things are, check out our [Introduction](./introduction)! + +Create a new project and install the `grammy` package. +Do this by opening a terminal and typing: + +```sh +# Create a new directory and change into it. +mkdir my-bot +cd my-bot + +# Run bun init to scaffold a new project. +bun init --yes + +# Install grammY. +bun add grammy +``` + +Your folder structure should looks like this: + +```asciiart:no-line-numbers +. +├── index.ts +├── .gitignore +├── node_modules/ +├── package.json +├── bun.lockb +├── README.md +└── tsconfig.json +``` + +Now, it's time to open Telegram to create a bot account, and obtain a bot token for it. +Talk to [@BotFather](https://t.me/BotFather) to do this. +The bot token looks like `123456:aBcDeF_gHiJkLmNoP-q`. +It is used to authenticate your bot. + +Got the token? You can now code your bot in the `index.ts` file. +You can copy the following example bot into that file, and pass your token to the `Bot` constructor: + +```ts [TypeScript] +import { Bot } from "grammy"; + +// Create an instance of the `Bot` class and pass your bot token to it. +const bot = new Bot(""); // <-- put your bot token between the "" + +// You can now register listeners on your bot object `bot`. +// grammY will call the listeners when users send messages to your bot. + +// Handle the /start command. +bot.command("start", (ctx) => ctx.reply("Welcome! Up and running.")); +// Handle other messages. +bot.on("message", (ctx) => ctx.reply("Got another message!")); + +// Now that you specified how to handle messages, you can start your bot. +// This will connect to the Telegram servers and wait for messages. + +// Start the bot. +bot.start(); +``` + +You can now run the bot by executing + +```sh +bun run bot.ts +``` + +in your terminal. +Done! :tada: + +Head over to Telegram to watch your bot respond to messages! + +::: tip Enabling Logging +You can enable basic logging by running + +```sh +export DEBUG="grammy*" +``` + +in your terminal before you execute `bun run index.ts`. +This makes it easier to debug your bot. +::: + ## Getting Started on Deno > This guide assumes that you have [Deno](https://deno.com) installed. diff --git a/site/docs/guide/introduction.md b/site/docs/guide/introduction.md index 1a37f1743..07ddcf69f 100644 --- a/site/docs/guide/introduction.md +++ b/site/docs/guide/introduction.md @@ -66,7 +66,7 @@ You will get to know them as you go. ## Prerequisites to Getting Started -> Skip the rest of this page if you already know how to develop a Deno or a Node.js application, and [get started](./getting-started). +> Skip the rest of this page if you already know how to develop Deno, Bun or Node.js application, and [get started](./getting-started). Here are a few interesting things about programming---things that are essential to coding, yet rarely explained because most developers think they are self-evident. @@ -173,6 +173,34 @@ You can stop the bot again with `Ctrl+C`. Ready? [Get started](./getting-started#getting-started-on-deno)! :robot: +### Prerequisites for Bun + +Bun is a new JavaScript runtime, which is another good choice to build bot, like Deno, you are going to write your bot in TypeScript. +The exact commands for all of that will be introduced in the next section when you actually create a bot, but it is important to know that these steps are necessary. + +Firstly, you have to have [Bun](https://bun.sh/) installed. + +In summary, this is what you have to do for Bun: + +Create a new directory somewhere. +It will contain your bot project. +Open this new directory in VS Code. + +```sh +mkdir ./my-bot +cd ./my-bot +code . +``` + +Then: + +1. Run `bun init --yes` in your terminal to initialize the project. +2. Create a source file `bot.ts` with TypeScript code inside the project. +3. Run `bun run bot.ts` from your terminal, or run `bun --watch run bot.ts` if you want to keep updated with file changes. + +Ready? +[Get started](./getting-started#getting-started-on-bun)! :robot: + ### Prerequisites for Node.js You are going to write your bot in TypeScript, but, contrary to Deno, Node.js cannot actually run TypeScript. diff --git a/site/docs/hosting/firebase.md b/site/docs/hosting/firebase.md index 375274a8e..281206546 100644 --- a/site/docs/hosting/firebase.md +++ b/site/docs/hosting/firebase.md @@ -49,7 +49,7 @@ npm install -g firebase-tools - TypeScript 6. Optionally, you can select ESLint. 7. The CLI asks you if you want to install the dependencies with npm. - If you use another package manager like `yarn` or `pnpm` you can decline. + If you use another package manager like `yarn`, `bun` or `pnpm` you can decline. In that case, you have to `cd` into the `functions` directory and install the dependencies manually. 8. Open `./functions/package.json` and look for the key: `"engines": {"node": "16"}`. The `node` version should match your installed version of Node.js. diff --git a/site/docs/hosting/vps.md b/site/docs/hosting/vps.md index 445f77a8b..a5ee805e1 100644 --- a/site/docs/hosting/vps.md +++ b/site/docs/hosting/vps.md @@ -260,6 +260,10 @@ yarn global add pm2 pnpm add -g pm2 ``` +```sh [bun] +bun add -g pm2 +``` + ::: #### Creating an Application