Create Telegram Bot - NextJS and Hosting on Vercel - Free
Tags: webdev, javascript, beginners, programming
Published: 2024-02-20 09:57:55

Title: Building a Telegram Bot with Next.js, GitHub, and Vercel

Creating a Telegram bot with Next.js and deploying it on Vercel is a great way to build interactive bots quickly. In this tutorial, we'll take it a step further by organizing our project structure and enabling deployment through GitHub and Vercel's user-friendly UI.

### Prerequisites:
- Basic knowledge of JavaScript and Node.js
- Understanding of REST APIs and webhook concepts
- Telegram account
- GitHub account
- Vercel account

### Step 1: Set up Telegram Bot
1. Create a new bot on Telegram using BotFather and obtain the bot token.

### Step 2: Initialize a Next.js Project
1. Install Node.js if you haven't already.
2. Initialize a new Next.js project:
   ```bash
   npx create-next-app my-telegram-bot
   ```
3. Navigate to your project directory:
   ```bash
   cd my-telegram-bot
   ```

### Step 3: Organize Project Structure
1. Create a folder named `src` in your project directory.
2. Inside the `src` folder, create a folder named `api`.
3. Inside the `api` folder, create a file named `telegram.js`.

### Step 4: Write Telegram Bot Code
1. Open `src/api/telegram.js` and add the following code:
   ```javascript
   import { Telegraf } from 'telegraf';

   const bot = new Telegraf(process.env.TELEGRAM_BOT_TOKEN);

   bot.on('text', (ctx) => {
     ctx.reply('Hello! You said: ' + ctx.message.text);
   });

   bot.telegram.setWebhook(`https://${process.env.VERCEL_URL}/api/telegram`);

   export default async (req, res) => {
     await bot.handleUpdate(req.body, res);
   };
   ```

### Step 5: Deploy to GitHub
1. Initialize a git repository in your project directory:
   ```bash
   git init
   ```
2. Add your files to the repository and commit:
   ```bash
   git add .
   git commit -m "Initial commit"
   ```
3. Create a new repository on GitHub.
4. Link your local repository to the remote GitHub repository:
   ```bash
   git remote add origin <GitHub repository URL>
   ```
5. Push your code to GitHub:
   ```bash
   git push -u origin main
   ```

### Step 6: Deploy to Vercel
1. Sign in to your Vercel account.
2. Import your project from GitHub.
3. Follow the prompts to deploy your project.
4. Set the environment variable `TELEGRAM_BOT_TOKEN` to your bot token in the Vercel dashboard.

### Step 7: Set Webhook URL
1. Use curl or any other method to set the webhook URL to your current page `api/telegram.js`:
   ```bash
   curl -F "url=https://your-vercel-url.vercel.app/api/telegram" https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook
   ```
   Replace `your-vercel-url` with your Vercel project URL and `<YOUR_BOT_TOKEN>` with your actual bot token.

### Step 8: Test Your Telegram Bot
1. Start a conversation with your bot on Telegram.
2. Send a message, and you should receive a response from your bot echoing your message.

Congratulations! You've successfully created a Telegram bot using Next.js, organized your project structure, deployed it on GitHub and Vercel, and set up the webhook for message handling. You can now further customize your bot's functionality and interaction based on your requirements.