Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: bun related docs (@stonega) #1129

Open
wants to merge 12 commits into
base: main
Choose a base branch
from
110 changes: 110 additions & 0 deletions site/docs/guide/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,116 @@ 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
```

Next step you should initialise your project.
MasedMSD marked this conversation as resolved.
Show resolved Hide resolved

```sh
# Run bun init to scaffold a new project.
MasedMSD marked this conversation as resolved.
Show resolved Hide resolved
bun init
```

After running the command, the script will prompt you to select project name and entry point.
MasedMSD marked this conversation as resolved.
Show resolved Hide resolved

```ansi{3-4,12}
bun init helps you get started with a minimal project and tries to guess sensible defaults. Press ^C anytime to quit

package name (my-bot): my-bot // [!code focus]
entry point (index.ts): bot.ts // [!code focus]

Done! A package.json file was saved in the current directory.
+ bot.ts
+ .gitignore
+ tsconfig.json (for editor auto-complete)
+ README.md

To get started, run: // [!code focus]
bun run bot.ts // [!code focus]
```

And finally you can add `grammy` package.
MasedMSD marked this conversation as resolved.
Show resolved Hide resolved

```sh
# Install grammY.
bun add grammy
```

Your folder structure should looks like this:
MasedMSD marked this conversation as resolved.
Show resolved Hide resolved

```asciiart:no-line-numbers
.
├── bot.ts
├── .gitignore
├── node_modules/
├── package.json
├── bun.lockb
├── README.md
└── tsconfig.json
```
MasedMSD marked this conversation as resolved.
Show resolved Hide resolved

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 `bot.ts` file.
MasedMSD marked this conversation as resolved.
Show resolved Hide resolved
You can copy the following example bot into that file, and pass your token to the `Bot` constructor:
MasedMSD marked this conversation as resolved.
Show resolved Hide resolved

```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
KnorpelSenf marked this conversation as resolved.
Show resolved Hide resolved
```

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 bot.ts`.
This makes it easier to debug your bot.
MasedMSD marked this conversation as resolved.
Show resolved Hide resolved
:::

## Getting Started on Deno

> This guide assumes that you have [Deno](https://deno.com) installed.
Expand Down
43 changes: 42 additions & 1 deletion site/docs/guide/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
MasedMSD marked this conversation as resolved.
Show resolved Hide resolved

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.

Expand Down Expand Up @@ -173,6 +173,47 @@ 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.
MasedMSD marked this conversation as resolved.
Show resolved Hide resolved
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` in your terminal to initialize the project and fill it out as written below.

```ansi{3-4,12}
bun init helps you get started with a minimal project and tries to guess sensible defaults. Press ^C anytime to quit

package name (my-bot): my-bot // [!code focus]
entry point (index.ts): bot.ts // [!code focus]

Done! A package.json file was saved in the current directory.
+ bot.ts
+ .gitignore
+ tsconfig.json (for editor auto-complete)
+ README.md
```

2. 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.
Expand Down
2 changes: 1 addition & 1 deletion site/docs/hosting/firebase.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
MasedMSD marked this conversation as resolved.
Show resolved Hide resolved
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.
Expand Down
4 changes: 4 additions & 0 deletions site/docs/hosting/vps.md
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,10 @@ yarn global add pm2
pnpm add -g pm2
```

```sh [bun]
bun add -g pm2
```

:::

#### Creating an Application
Expand Down
Loading