Unlock the Power of GitHub and Telegram with Python
As a developer, you’re likely familiar with GitHub, a platform where you can host source code, contribute to projects, and develop open-source software. But did you know you can take your GitHub experience to the next level by integrating it with Telegram, a fast and extensible messaging platform? With Telegram’s chatbots, you can easily programmable and manage interactions.
Creating a Telegram Bot with Python and GitHub Webhooks
In this article, we’ll explore how to create a Telegram bot that receives updates from a GitHub repository using Python and GitHub webhooks. We’ll use FastAPI for the server-side and Telegram’s HTTP API for sending messages.
Requirements
- Python installed on your machine
- A Telegram account
- A Telegram bot (we’ll discuss how to set this up later)
Setting Up the Python Development Environment
Before we begin, let’s create a Python Virtual Environment for a clean setup. We’ll need the following packages:
- FastAPI as the backend framework
- HTTPX for asynchronous HTTP requests for communicating with Telegram API
- Uvicorn for the server
- Pyngrok for tunneling our local server
Acquiring Bot Credentials from Telegram
To send and receive messages, we need a programmable Telegram bot. We’ll create a bot using BotFather, a bot that helps you create and manage bots. To get started, enter the /newbot
command to BotFather, and follow the prompts to create a new bot.
Getting the CHAT_ID
To get the CHATID, open a chat conversation with Json Dump Bot in Telegram. The /start
command will give you a JSON object in text, which contains the CHATID.
Creating the Server with FastAPI
Let’s create a simple “Hello World” endpoint with FastAPI. We’ll use Uvicorn to run the server and Pyngrok to tunnel our local server.
Receiving Webhooks from GitHub
Webhooks are payloads sent by a server to another app when an action occurs. We’ll write our server to receive these webhooks and process them. For simplicity, we’ll only handle the star and pull_request GitHub events.
Sending Messages to Telegram
We’ll use the Telegram Bot API to send messages asynchronously via the bot we created earlier. We’ll use Markdown formatting options to customize our messages.
Running and Testing the Server
Let’s run our server and test it out. We’ll use ngrok to expose our local server to the internet and connect it to GitHub.
Connecting to GitHub
To connect our server to GitHub, we need to set up webhooks in our repository. We’ll add the URL we received from ngrok as the webhook endpoint and select the events we want to receive.
Next Steps
Congratulations! Our server is working and sending messages to Telegram. You can extend this project further to get info regarding issues, new pushes, and pull request reviews, and any other GitHub webhook events.