DEV Community

Apollo
Apollo

Posted on

The fastest way to build a Telegram Bot natively

The Fastest Way to Build a Telegram Bot Natively

Building a Telegram bot doesn't have to involve complex frameworks or third-party libraries. By leveraging Telegram's Bot API directly, you can create a lightweight, native bot quickly. In this tutorial, we'll use Python and the httpx library to interact with Telegram's API natively. Let’s dive in!


Prerequisites

Before we begin, ensure you have the following:

  1. Python 3.8+: Install it from python.org.
  2. Telegram Bot Token: Create a bot using BotFather and save the token.
  3. httpx: Install it via pip install httpx.

Step 1: Understanding the Telegram Bot API

Telegram's Bot API is HTTP-based, supporting GET and POST requests. Key endpoints include:

  • getUpdates: Fetch new messages.
  • sendMessage: Send messages to users.
  • setWebhook: Configure a webhook for real-time updates (optional for this tutorial).

All interactions require your bot token in the URL:

https://api.telegram.org/bot<TOKEN>/<METHOD>
Enter fullscreen mode Exit fullscreen mode

Step 2: Setting Up the Bot

First, create a project directory and initialize a Python file:

mkdir telegram-bot
cd telegram-bot
touch bot.py
Enter fullscreen mode Exit fullscreen mode

Open bot.py and import the required libraries:

import httpx
import asyncio
import json
Enter fullscreen mode Exit fullscreen mode

Step 3: Fetching Updates

To fetch messages, use the getUpdates endpoint. Here's an asynchronous function to do this:

async def get_updates(token, offset=None):
    url = f"https://api.telegram.org/bot{token}/getUpdates"
    params = {"timeout": 60, "offset": offset} if offset else {"timeout": 60}
    async with httpx.AsyncClient() as client:
        response = await client.get(url, params=params)
        return response.json()["result"]
Enter fullscreen mode Exit fullscreen mode

This function sends a GET request to Telegram's API and returns the latest updates. The offset parameter ensures you don't process the same message twice.


Step 4: Sending Messages

To send a message, use the sendMessage endpoint:

async def send_message(token, chat_id, text):
    url = f"https://api.telegram.org/bot{token}/sendMessage"
    payload = {"chat_id": chat_id, "text": text}
    async with httpx.AsyncClient() as client:
        await client.post(url, json=payload)
Enter fullscreen mode Exit fullscreen mode

This function sends a POST request to Telegram's API with the chat ID and message text.


Step 5: Building the Bot Logic

Now, let’s combine these functions into a bot that echoes messages back to the user:

async def echo_bot(token):
    offset = None
    while True:
        updates = await get_updates(token, offset)
        for update in updates:
            offset = update["update_id"] + 1
            chat_id = update["message"]["chat"]["id"]
            text = update["message"]["text"]
            await send_message(token, chat_id, f"You said: {text}")
        await asyncio.sleep(1)
Enter fullscreen mode Exit fullscreen mode

This loop continuously checks for new messages, processes them, and sends a response.


Step 6: Running the Bot

Finally, add a main function to start the bot:

async def main():
    token = "YOUR_BOT_TOKEN"  # Replace with your bot token
    await echo_bot(token)

if __name__ == "__main__":
    asyncio.run(main())
Enter fullscreen mode Exit fullscreen mode

Run your bot:

python bot.py
Enter fullscreen mode Exit fullscreen mode

Your bot is now live! Send it a message on Telegram, and it will respond with "You said: ."


Step 7: Enhancing the Bot

To make your bot more powerful, you can:

  1. Add Commands: Parse messages for specific commands like /start or /help.
  2. Use Webhooks: Swap getUpdates for webhooks to handle real-time updates efficiently.
  3. Deploy to a Server: Use a platform like Heroku or AWS to keep your bot running 24/7.

Conclusion

By leveraging Telegram's Bot API directly, you can build a lightweight, native bot in minutes. This approach avoids unnecessary dependencies and gives you full control over bot behavior. Extend this foundation to create bots tailored to your needs, and explore Telegram's extensive API documentation for additional features.


Code Repository

Find the complete code for this tutorial on GitHub.


Happy coding, and may your bots thrive! πŸš€


πŸš€ Stop Writing Boilerplate Prompts

If you want to skip the setup and code 10x faster with complete AI architecture patterns, grab my Senior React Developer AI Cookbook ($19). It includes Server Action prompt libraries, UI component generation loops, and hydration debugging strategies.

Browse all 10+ developer products at the Apollo AI Store | Or snipe Solana tokens free via @ApolloSniper_Bot.

Top comments (0)