DEV Community

Apollo
Apollo

Posted on

The fastest way to build a Telegram Bot natively

The Fastest Way to Build a Telegram Bot Natively Using Python and the python-telegram-bot Library

Telegram bots are powerful tools for automating tasks, interacting with users, and integrating services. In this tutorial, we’ll explore the fastest way to build a Telegram bot natively using Python and the python-telegram-bot library. This library provides a clean and efficient interface for interacting with the Telegram Bot API.


Prerequisites

Before we start, ensure you have the following installed:

  1. Python 3.8 or higher
  2. pip (Python package manager)
  3. A Telegram account (to create and test the bot)

Install the python-telegram-bot library:

pip install python-telegram-bot
Enter fullscreen mode Exit fullscreen mode

Step 1: Create a Telegram Bot

  1. Open Telegram and search for the BotFather.
  2. Start a chat with BotFather and use the /newbot command.
  3. Follow the instructions to name your bot and get your API token. Store this token securely—it’s your bot’s key to the Telegram API.

Step 2: Set Up the Bot Framework

Create a Python file (e.g., telegram_bot.py) and import the necessary modules:

from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters
Enter fullscreen mode Exit fullscreen mode

Initialize the bot with your API token:

BOT_TOKEN = "YOUR_API_TOKEN_HERE"
application = Application.builder().token(BOT_TOKEN).build()
Enter fullscreen mode Exit fullscreen mode

Step 3: Handle Commands

Telegram bots respond to commands prefixed with /. Let’s create a simple /start command handler.

async def start(update: Update, context):
    await update.message.reply_text("Hello! I'm your new Telegram bot.")

start_handler = CommandHandler("start", start)
application.add_handler(start_handler)
Enter fullscreen mode Exit fullscreen mode

Step 4: Handle Messages

To handle regular messages, use the MessageHandler class. Here’s an example of echoing user messages back:

async def echo(update: Update, context):
    message_text = update.message.text
    await update.message.reply_text(f"You said: {message_text}")

echo_handler = MessageHandler(filters.TEXT & ~filters.COMMAND, echo)
application.add_handler(echo_handler)
Enter fullscreen mode Exit fullscreen mode

Step 5: Handle Inline Queries

Inline queries allow users to interact with your bot directly from any chat. Here’s how to handle them:

from telegram import InlineQueryResultArticle, InputTextMessageContent

async def inline_query(update: Update, context):
    query = update.inline_query.query
    results = [
        InlineQueryResultArticle(
            id="1",
            title="Echo",
            input_message_content=InputTextMessageContent(f"You said: {query}"),
        )
    ]
    await update.inline_query.answer(results)

inline_query_handler = MessageHandler(filters.TEXT, inline_query)
application.add_handler(inline_query_handler)
Enter fullscreen mode Exit fullscreen mode

Step 6: Handle Callback Queries

Callback queries are triggered when users interact with inline buttons. Here’s an example:

from telegram import InlineKeyboardButton, InlineKeyboardMarkup

async def button(update: Update, context):
    query = update.callback_query
    await query.answer()
    await query.edit_message_text(text="You clicked the button!")

async def show_button(update: Update, context):
    keyboard = [[InlineKeyboardButton("Click me!", callback_data="button_click")]]
    reply_markup = InlineKeyboardMarkup(keyboard)
    await update.message.reply_text("Here's a button:", reply_markup=reply_markup)

button_handler = MessageHandler(filters.TEXT, show_button)
callback_handler = CommandHandler("button", button)
application.add_handler(button_handler)
application.add_handler(callback_handler)
Enter fullscreen mode Exit fullscreen mode

Step 7: Run the Bot

Finally, start the bot using the Application.run_polling() method:

if __name__ == "__main__":
    print("Bot is running...")
    application.run_polling()
Enter fullscreen mode Exit fullscreen mode

Step 8: Deploy the Bot

To make your bot accessible 24/7, deploy it to a cloud platform like Heroku, AWS, or Google Cloud. Here’s a basic example using Heroku:

  1. Create a requirements.txt file:
   python-telegram-bot==21.0.0
Enter fullscreen mode Exit fullscreen mode
  1. Create a Procfile:
   web: python telegram_bot.py
Enter fullscreen mode Exit fullscreen mode
  1. Push your code to Heroku:
   git init
   heroku create
   git add .
   git commit -m "Deploy Telegram bot"
   git push heroku master
Enter fullscreen mode Exit fullscreen mode

Advanced Features

1. Database Integration

Store user data using a database like SQLite, PostgreSQL, or MongoDB. Example with SQLite:

import sqlite3

conn = sqlite3.connect("bot.db")
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, username TEXT)")
conn.commit()
Enter fullscreen mode Exit fullscreen mode

2. Scheduled Tasks

Use the JobQueue to schedule tasks:

async def timed_message(context):
    await context.bot.send_message(chat_id="USER_CHAT_ID", text="This is a scheduled message.")

application.job_queue.run_repeating(timed_message, interval=3600, first=0)
Enter fullscreen mode Exit fullscreen mode

3. Error Handling

Add an error handler to catch exceptions:

async def error_handler(update: Update, context):
    print(f"An error occurred: {context.error}")

application.add_error_handler(error_handler)
Enter fullscreen mode Exit fullscreen mode

Conclusion

With the python-telegram-bot library, building a Telegram bot natively is straightforward and efficient. You can extend this foundation with advanced features like database integration, scheduled tasks, and error handling. Deploy your bot to the cloud and watch it come to life!

Happy coding! 🚀


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