Introduction: Why PHP is a Great Choice for a Chatbot?
\nHave you ever wondered how those smart assistants that answer questions in Telegram, VK, or on a website work? Many people think that to create a chatbot you need to know Python or Node.js. But the truth is that a chatbot in PHP is not only possible, but also very convenient. PHP is a mature language with a huge community, and it is great for rapid prototyping and launching bots.
\nIn this guide, we will go from complete scratch to a working Telegram bot in PHP. We will cover two approaches: a simple echo bot on Localhost and a bot with a database connection. Spoiler: there will be a lot of code that you can copy and run right now.
\n\nWhat is a Chatbot and How Does It Work?
\nBefore writing code, let's understand the architecture. A chatbot is a program that receives a message from a user, processes it, and sends a response. In the context of Telegram (the most popular platform for bots), the scheme looks like this:
\n- \n
- The user writes to the bot in Telegram. \n
- Telegram sends a POST request to your server (Webhook) or you constantly poll the server yourself (Long Polling). \n
- Your PHP script processes the request and sends a response via the Telegram API. \n
We will use Webhook — this is a modern and fast method. Imagine Telegram knocking on your server's door every time a new message arrives. Convenient, right?
\n\nPreparation: What Do You Need to Start?
\nTo create a simple chatbot in PHP, you will need:
\n- \n
- Hosting or a local server (OpenServer, XAMPP, MAMP) with PHP 7.4+. \n
- Internet access (to register the bot in Telegram). \n
- Basic knowledge of PHP (variables, functions, working with JSON). \n
If you don't have hosting, don't worry — during the testing phase you can use Localhost with the ngrok utility, which creates a temporary public URL. But more on that later.
Step 1. Registering a Bot in Telegram
\nGo to Telegram, find BotFather (the official bot for creating bots) and type the command /newbot. Answer the questions: give a name (e.g., MyTestBot) and a username (must end with bot, e.g., my_test_pythonlib_bot).
After successful registration, BotFather will give you a token — this is the API access key. It looks like this: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. Save it in a safe place (preferably in a .env file, but for simplicity we will hardcode it for now).
Important: Do not show your token to anyone! This is the password for your bot.
\n\nStep 2. The Simplest Echo Bot in PHP (Webhook)
\nCreate a file bot.php in the root of your website. This script will receive requests from Telegram and respond with the same text (echo).
<?php\n// Get data from Telegram\n$content = file_get_contents("php://input");\n$update = json_decode($content, true);\n\n// Check if there is a message\nif (!$update) {\n exit;\n}\n\n// Extract chat ID and message text\n$chat_id = $update['message']['chat']['id'];\n$text = $update['message']['text'];\n\n// Your bot token\n$token = "YOUR_TOKEN_HERE";\n\n// Send response (echo)\n$url = "https://api.telegram.org/bot{$token}/sendMessage";\n$data = [\n 'chat_id' => $chat_id,\n 'text' => "You wrote: " . $text\n];\n\n// Use cURL to send the request\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_POST, 1);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $data);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result = curl_exec($ch);\ncurl_close($ch);\n?>\n\nHow does it work?
\n- \n
- Telegram sends a POST request to your file
bot.php. \n - We read the in